From 9f35ecd029d0645b589998120eae8e4128cdb98a Mon Sep 17 00:00:00 2001 From: lgphone Date: Sat, 4 Jan 2020 10:35:03 +0800 Subject: [PATCH] first commit --- .gitignore | 156 + LICENSE | 674 ++ README.md | 51 + celery_app.py | 73 + docs/pic/admin1.png | Bin 0 -> 60098 bytes docs/pic/admin2.png | Bin 0 -> 63700 bytes docs/pic/admin3.png | Bin 0 -> 35398 bytes docs/pic/admin4.png | Bin 0 -> 45898 bytes docs/pic/admin5.png | Bin 0 -> 63019 bytes docs/pic/admin6.png | Bin 0 -> 39117 bytes docs/pic/bbs1.png | Bin 0 -> 31689 bytes docs/pic/bbs10.png | Bin 0 -> 50473 bytes docs/pic/bbs11.png | Bin 0 -> 37946 bytes docs/pic/bbs12.png | Bin 0 -> 29673 bytes docs/pic/bbs13.png | Bin 0 -> 22940 bytes docs/pic/bbs14.png | Bin 0 -> 20561 bytes docs/pic/bbs2.png | Bin 0 -> 30864 bytes docs/pic/bbs3.png | Bin 0 -> 45853 bytes docs/pic/bbs6.png | Bin 0 -> 43370 bytes docs/pic/bbs7.png | Bin 0 -> 23018 bytes docs/pic/bbs8.png | Bin 0 -> 21986 bytes docs/pic/bbs9.png | Bin 0 -> 49109 bytes manage.py | 86 + prod_run.py | 25 + requirements.txt | 39 + super_bbs/Rocko.ttf | Bin 0 -> 52372 bytes super_bbs/__init__.py | 1 + super_bbs/app.py | 61 + super_bbs/config.py | 73 + super_bbs/constants.py | 27 + super_bbs/controller/admin/account/api.py | 82 + super_bbs/controller/admin/account/wrapper.py | 15 + super_bbs/controller/admin/comments/api.py | 78 + super_bbs/controller/admin/tabs/api.py | 158 + super_bbs/controller/admin/topics/api.py | 149 + super_bbs/controller/admin/users/api.py | 44 + super_bbs/controller/v1/account/api.py | 201 + super_bbs/controller/v1/account/tasks.py | 34 + super_bbs/controller/v1/account/wrapper.py | 13 + super_bbs/controller/v1/index/api.py | 123 + super_bbs/controller/v1/member/api.py | 290 + super_bbs/controller/v1/tabs/api.py | 160 + super_bbs/controller/v1/topic/api.py | 393 + super_bbs/core/basehandler.py | 123 + super_bbs/core/dbwrapper.py | 130 + super_bbs/core/extensions.py | 13 + super_bbs/core/viewhandler.py | 85 + super_bbs/model/comments.py | 34 + super_bbs/model/tabs.py | 50 + super_bbs/model/topics.py | 110 + super_bbs/model/users.py | 95 + super_bbs/router/admin.py | 23 + super_bbs/router/v1.py | 39 + super_bbs/tabs.json | 189 + super_bbs/utils.py | 156 + web/README.md | 29 + web/babel.config.js | 5 + web/package.json | 87 + web/public/favicon.ico | Bin 0 -> 2054 bytes web/public/index.html | 20 + web/src/App.vue | 3 + web/src/api/account.js | 32 + web/src/api/main.js | 9 + web/src/api/member.js | 11 + web/src/api/tab.js | 12 + web/src/api/topic.js | 25 + web/src/api/user.js | 9 + web/src/assets/bg-img.png | Bin 0 -> 21967 bytes web/src/common/api.js | 53 + web/src/common/date.js | 43 + web/src/common/dateFormatter.js | 22 + web/src/common/http.js | 36 + web/src/common/sleep.js | 8 + web/src/components/loading-spin/index.vue | 37 + web/src/components/user-box/index.vue | 65 + web/src/main.js | 45 + web/src/routers/index.js | 186 + web/src/utils/index.js | 83 + web/src/views/Append.vue | 128 + web/src/views/Go.vue | 242 + web/src/views/Index.vue | 253 + web/src/views/Layer.vue | 217 + web/src/views/Login.vue | 132 + web/src/views/Member.vue | 244 + web/src/views/MemberComment.vue | 131 + web/src/views/MemberTopic.vue | 183 + web/src/views/MyFavNode.vue | 69 + web/src/views/MyFavTopic.vue | 184 + web/src/views/MyFavUserTopic.vue | 186 + web/src/views/New.vue | 141 + web/src/views/Register.vue | 155 + web/src/views/Setting.vue | 222 + web/src/views/Topic.vue | 382 + web/vue.config.js | 35 + web/yarn.lock | 9311 +++++++++++++++++ webAdmin/README.md | 29 + webAdmin/babel.config.js | 5 + webAdmin/package.json | 87 + webAdmin/public/favicon.ico | Bin 0 -> 2054 bytes webAdmin/public/index.html | 20 + webAdmin/src/App.vue | 3 + webAdmin/src/api/account.js | 20 + webAdmin/src/api/comment.js | 13 + webAdmin/src/api/sub_tab.js | 13 + webAdmin/src/api/tab.js | 13 + webAdmin/src/api/topic.js | 13 + webAdmin/src/api/user.js | 13 + webAdmin/src/assets/bg-img.png | Bin 0 -> 21967 bytes webAdmin/src/common/api.js | 53 + webAdmin/src/common/date.js | 43 + webAdmin/src/common/dateFormatter.js | 22 + webAdmin/src/common/http.js | 36 + webAdmin/src/common/sleep.js | 8 + .../src/components/comment/detail-modal.vue | 77 + .../src/components/comment/edit-modal.vue | 103 + .../src/components/content-header/index.vue | 61 + webAdmin/src/components/copyright/index.vue | 20 + .../src/components/loading-spin/index.vue | 37 + webAdmin/src/components/sub-tab/add-modal.vue | 112 + .../src/components/sub-tab/detail-modal.vue | 74 + .../src/components/sub-tab/edit-modal.vue | 121 + webAdmin/src/components/tab/add-modal.vue | 98 + webAdmin/src/components/tab/detail-modal.vue | 67 + webAdmin/src/components/tab/edit-modal.vue | 107 + .../src/components/topic/detail-modal.vue | 105 + webAdmin/src/components/topic/edit-modal.vue | 150 + webAdmin/src/components/user/add-modal.vue | 116 + webAdmin/src/components/user/detail-modal.vue | 83 + webAdmin/src/components/user/edit-modal.vue | 118 + webAdmin/src/main.js | 45 + webAdmin/src/routers/index.js | 135 + webAdmin/src/utils/index.js | 80 + webAdmin/src/views/Comment.vue | 219 + webAdmin/src/views/Index.vue | 64 + webAdmin/src/views/Layer.vue | 134 + webAdmin/src/views/Login.vue | 120 + webAdmin/src/views/SubTab.vue | 226 + webAdmin/src/views/Tab.vue | 221 + webAdmin/src/views/Topic.vue | 240 + webAdmin/src/views/User.vue | 201 + webAdmin/vue.config.js | 35 + webAdmin/yarn.lock | 9311 +++++++++++++++++ 142 files changed, 29959 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 celery_app.py create mode 100644 docs/pic/admin1.png create mode 100644 docs/pic/admin2.png create mode 100644 docs/pic/admin3.png create mode 100644 docs/pic/admin4.png create mode 100644 docs/pic/admin5.png create mode 100644 docs/pic/admin6.png create mode 100644 docs/pic/bbs1.png create mode 100644 docs/pic/bbs10.png create mode 100644 docs/pic/bbs11.png create mode 100644 docs/pic/bbs12.png create mode 100644 docs/pic/bbs13.png create mode 100644 docs/pic/bbs14.png create mode 100644 docs/pic/bbs2.png create mode 100644 docs/pic/bbs3.png create mode 100644 docs/pic/bbs6.png create mode 100644 docs/pic/bbs7.png create mode 100644 docs/pic/bbs8.png create mode 100644 docs/pic/bbs9.png create mode 100755 manage.py create mode 100644 prod_run.py create mode 100644 requirements.txt create mode 100644 super_bbs/Rocko.ttf create mode 100644 super_bbs/__init__.py create mode 100644 super_bbs/app.py create mode 100644 super_bbs/config.py create mode 100644 super_bbs/constants.py create mode 100644 super_bbs/controller/admin/account/api.py create mode 100644 super_bbs/controller/admin/account/wrapper.py create mode 100644 super_bbs/controller/admin/comments/api.py create mode 100644 super_bbs/controller/admin/tabs/api.py create mode 100644 super_bbs/controller/admin/topics/api.py create mode 100644 super_bbs/controller/admin/users/api.py create mode 100644 super_bbs/controller/v1/account/api.py create mode 100644 super_bbs/controller/v1/account/tasks.py create mode 100644 super_bbs/controller/v1/account/wrapper.py create mode 100644 super_bbs/controller/v1/index/api.py create mode 100644 super_bbs/controller/v1/member/api.py create mode 100644 super_bbs/controller/v1/tabs/api.py create mode 100644 super_bbs/controller/v1/topic/api.py create mode 100644 super_bbs/core/basehandler.py create mode 100644 super_bbs/core/dbwrapper.py create mode 100644 super_bbs/core/extensions.py create mode 100644 super_bbs/core/viewhandler.py create mode 100644 super_bbs/model/comments.py create mode 100644 super_bbs/model/tabs.py create mode 100644 super_bbs/model/topics.py create mode 100644 super_bbs/model/users.py create mode 100644 super_bbs/router/admin.py create mode 100644 super_bbs/router/v1.py create mode 100644 super_bbs/tabs.json create mode 100644 super_bbs/utils.py create mode 100644 web/README.md create mode 100644 web/babel.config.js create mode 100644 web/package.json create mode 100644 web/public/favicon.ico create mode 100644 web/public/index.html create mode 100644 web/src/App.vue create mode 100644 web/src/api/account.js create mode 100644 web/src/api/main.js create mode 100644 web/src/api/member.js create mode 100644 web/src/api/tab.js create mode 100644 web/src/api/topic.js create mode 100644 web/src/api/user.js create mode 100644 web/src/assets/bg-img.png create mode 100644 web/src/common/api.js create mode 100644 web/src/common/date.js create mode 100644 web/src/common/dateFormatter.js create mode 100644 web/src/common/http.js create mode 100644 web/src/common/sleep.js create mode 100644 web/src/components/loading-spin/index.vue create mode 100644 web/src/components/user-box/index.vue create mode 100644 web/src/main.js create mode 100644 web/src/routers/index.js create mode 100644 web/src/utils/index.js create mode 100644 web/src/views/Append.vue create mode 100644 web/src/views/Go.vue create mode 100644 web/src/views/Index.vue create mode 100644 web/src/views/Layer.vue create mode 100644 web/src/views/Login.vue create mode 100644 web/src/views/Member.vue create mode 100644 web/src/views/MemberComment.vue create mode 100644 web/src/views/MemberTopic.vue create mode 100644 web/src/views/MyFavNode.vue create mode 100644 web/src/views/MyFavTopic.vue create mode 100644 web/src/views/MyFavUserTopic.vue create mode 100644 web/src/views/New.vue create mode 100644 web/src/views/Register.vue create mode 100644 web/src/views/Setting.vue create mode 100644 web/src/views/Topic.vue create mode 100644 web/vue.config.js create mode 100644 web/yarn.lock create mode 100644 webAdmin/README.md create mode 100644 webAdmin/babel.config.js create mode 100644 webAdmin/package.json create mode 100644 webAdmin/public/favicon.ico create mode 100644 webAdmin/public/index.html create mode 100644 webAdmin/src/App.vue create mode 100644 webAdmin/src/api/account.js create mode 100644 webAdmin/src/api/comment.js create mode 100644 webAdmin/src/api/sub_tab.js create mode 100644 webAdmin/src/api/tab.js create mode 100644 webAdmin/src/api/topic.js create mode 100644 webAdmin/src/api/user.js create mode 100644 webAdmin/src/assets/bg-img.png create mode 100644 webAdmin/src/common/api.js create mode 100644 webAdmin/src/common/date.js create mode 100644 webAdmin/src/common/dateFormatter.js create mode 100644 webAdmin/src/common/http.js create mode 100644 webAdmin/src/common/sleep.js create mode 100644 webAdmin/src/components/comment/detail-modal.vue create mode 100644 webAdmin/src/components/comment/edit-modal.vue create mode 100644 webAdmin/src/components/content-header/index.vue create mode 100644 webAdmin/src/components/copyright/index.vue create mode 100644 webAdmin/src/components/loading-spin/index.vue create mode 100644 webAdmin/src/components/sub-tab/add-modal.vue create mode 100644 webAdmin/src/components/sub-tab/detail-modal.vue create mode 100644 webAdmin/src/components/sub-tab/edit-modal.vue create mode 100644 webAdmin/src/components/tab/add-modal.vue create mode 100644 webAdmin/src/components/tab/detail-modal.vue create mode 100644 webAdmin/src/components/tab/edit-modal.vue create mode 100644 webAdmin/src/components/topic/detail-modal.vue create mode 100644 webAdmin/src/components/topic/edit-modal.vue create mode 100644 webAdmin/src/components/user/add-modal.vue create mode 100644 webAdmin/src/components/user/detail-modal.vue create mode 100644 webAdmin/src/components/user/edit-modal.vue create mode 100644 webAdmin/src/main.js create mode 100644 webAdmin/src/routers/index.js create mode 100644 webAdmin/src/utils/index.js create mode 100644 webAdmin/src/views/Comment.vue create mode 100644 webAdmin/src/views/Index.vue create mode 100644 webAdmin/src/views/Layer.vue create mode 100644 webAdmin/src/views/Login.vue create mode 100644 webAdmin/src/views/SubTab.vue create mode 100644 webAdmin/src/views/Tab.vue create mode 100644 webAdmin/src/views/Topic.vue create mode 100644 webAdmin/src/views/User.vue create mode 100644 webAdmin/vue.config.js create mode 100644 webAdmin/yarn.lock diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..18e13bd --- /dev/null +++ b/.gitignore @@ -0,0 +1,156 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ + +# idea +.idea/ +migrations/ + +# node +web/.DS_Store +web/node_modules +web/dist + +# local env files +web/.env.local +web/.env.*.local + +# Log files +web/npm-debug.log* +web/yarn-debug.log* +web/yarn-error.log* + +# Editor directories and files +web/.idea +web/.vscode +web/*.suo +web/*.ntvs* +web/*.njsproj +web/*.sln +web/*.sw? + +webAdmin/.DS_Store +webAdmin/node_modules +webAdmin/dist + +# local env files +webAdmin/.env.local +webAdmin/.env.*.local + +# Log files +webAdmin/npm-debug.log* +webAdmin/yarn-debug.log* +webAdmin/yarn-error.log* + +# Editor directories and files +webAdmin/.idea +webAdmin/.vscode +webAdmin/*.suo +webAdmin/*.ntvs* +webAdmin/*.njsproj +webAdmin/*.sln +webAdmin/*.sw? + + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..36460f8 --- /dev/null +++ b/README.md @@ -0,0 +1,51 @@ +# super-bbs +一个基于Flask的bbs论坛类项目 +前端有用户和管理员两套界面 + +生产环境启动命令: + +`gunicorn -w 8 -k gevent --log-level warning -b 0.0.0.0:8000 prod_run:app` + + +### 声明: 严重高仿(照抄)V2EX +### 开发原因: 前后端分离,替换原来的FakeV2EX项目 +### 用户界面图片展示: + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs1.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs2.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs3.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs6.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs7.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs8.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs9.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs10.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs11.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs12.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs13.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/bbs14.png) + + +## 管理界面图片展示: + +![](https://github.com/lgphone/super-bbs/docs/pic/admin1.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/admin2.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/admin3.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/admin4.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/admin5.png) + +![](https://github.com/lgphone/super-bbs/docs/pic/admin6.png) diff --git a/celery_app.py b/celery_app.py new file mode 100644 index 0000000..cdc8982 --- /dev/null +++ b/celery_app.py @@ -0,0 +1,73 @@ +from datetime import datetime +from celery import Celery, Task +from celery.schedules import crontab +from super_bbs.app import create_app +from super_bbs.model.users import CeleryTaskLogs + +flask_app = create_app() +flask_app.app_context().push() + +schedule_config = { + 'CELERYBEAT_SCHEDULE': { + 'clean_celery_log': { + 'task': 'super_bbs.controller.account.tasks.clean_celery_log', + 'schedule': 10 if flask_app.config['DEBUG'] else crontab(minute=10, hour=3) + } + } +} + + +class BaseTask(Task): + """ + celery 基类, 继承Task + """ + + def __call__(self, *args, **kwargs): + log_obj = CeleryTaskLogs() + log_obj.task_id = self.request.id + log_obj.task_name = self.name + log_obj.save() + return super(BaseTask, self).__call__(*args, **kwargs) + + def on_success(self, retval, task_id, args, kwargs): + log_obj = CeleryTaskLogs.get_by_query(task_id=task_id) + log_obj.done = True + log_obj.time_done = datetime.now() + log_obj.task_status = True + if retval: + log_obj.retval = str(retval) + if args: + log_obj.args = str(args) + if kwargs: + log_obj.kwargs = str(kwargs) + log_obj.save() + + return super(BaseTask, self).on_success(retval, task_id, args, kwargs) + + def on_failure(self, exc, task_id, args, kwargs, einfo): + print('fail task: {0}'.format(task_id)) + log_obj = CeleryTaskLogs.get_by_query(task_id=task_id) + log_obj.done = True + log_obj.time_done = datetime.now() + log_obj.task_status = False + if args: + log_obj.args = str(args) + if kwargs: + log_obj.kwargs = str(kwargs) + if exc: + log_obj.exc = str(exc) + if einfo: + log_obj.einfo = str(einfo) + log_obj.save() + + return super(BaseTask, self).on_failure(exc, task_id, args, kwargs, einfo) + + +celery = Celery(flask_app.import_name, task_cls=BaseTask) +celery.conf.update(flask_app.config) +celery.conf.update(schedule_config) + +# 导入task注册 +celery.autodiscover_tasks([ + 'super_bbs.controller.account.task' +]) diff --git a/docs/pic/admin1.png b/docs/pic/admin1.png new file mode 100644 index 0000000000000000000000000000000000000000..974c88118a5e10c7c61c40da40f3ac4fb095c778 GIT binary patch literal 60098 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 literal 0 HcmV?d00001 diff --git a/docs/pic/admin2.png b/docs/pic/admin2.png new file mode 100644 index 0000000000000000000000000000000000000000..364d93682e45ed50b72d869b52d3ac73d5bfac6e GIT binary patch literal 63700 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]l0p8s}W9Y`7Vc>xT{0qYF7T*y9P5Fg>@~S<;wcGUE

X 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 Ysnu-~N8j048G9dcaQ>oV->I+v4-m!dTL1t6 literal 0 HcmV?d00001 diff --git a/docs/pic/admin3.png b/docs/pic/admin3.png new file mode 100644 index 0000000000000000000000000000000000000000..50e39a109c633777189cd086f623154964d7732e GIT binary patch literal 35398 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 kHNXDrE;ZUrvK+VUk3OdPF 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 literal 0 HcmV?d00001 diff --git a/docs/pic/admin5.png b/docs/pic/admin5.png new file mode 100644 index 0000000000000000000000000000000000000000..e38c1a3847fc2dca236d5316b21d5c9a7e7dca70 GIT binary patch literal 63019 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 literal 0 HcmV?d00001 diff --git a/docs/pic/bbs1.png b/docs/pic/bbs1.png new file mode 100644 index 0000000000000000000000000000000000000000..a6dbbb1028e145debffe1c5a5d65c94c1c9d9ad0 GIT binary patch literal 31689 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


UY>&5^nAP?m{t%PTOM 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 KelF{r5}E)2)^@)D literal 0 HcmV?d00001 diff --git a/docs/pic/bbs11.png b/docs/pic/bbs11.png new file mode 100644 index 0000000000000000000000000000000000000000..262a583c41855db1a576d5e4d5477f5c792b2617 GIT binary patch literal 37946 zcmc$`cUV*D*Dj1xWE9jHMT$~pL`9^jNDak~bfx!bD3M+Qp#`F&h=P(4q!Uo-HHO|o z6pRrAL1_U(ks5)7&_aL^_;yg|=gc|pIp;lpoG;hq6_V`z^mVU$-D_M<9FMijWupPdfCA1y;oUyZ=?p4furasSymNO%EBZ+C6~d- zk-Al4rCAh>AR-tsOFe(->uV|*^aC(zzKWc_9l%?PEMYJ3_R2^Wm^B}tn*sJm;O&%o zj0Es@JJpQN`?l>VgdcdjktYP=eN@iNNjUzBvLPgi9w!3Oh&n3gPbCdBUWZO&EcD5 z)B94M>>%2Rpe~EdzQ0d*HF3TftVYUp;ux%cGOgqk!)Ur(`q-_vxP{#C7L*K$xG@od zQo-=%L$j(*KGS1Jrf zl#%mI^X9=*y@rcw!w2TJ-uel&yqF@-H+7)svgSVxEgX;%L_L=1+tsizgx}qP;DoLA zDtA0I%3N&_M$&pyIm`)F+An;3FH8T_jbR0>wl#!Dy#?tWRJ8_m+~aKd1moBnK4!BM zG4US<#pWXCQ{4!OYLc5bR$J+dse_@xtKAjtF^0bPqBnyuHuXypqt7X6$;rdNptzhY zx?(U96&;Qb)GRd-M>K_uhmV%l_^5QesvKk5ZJ-a!>5!Y56M3+o`1txRe;mOsEi#+( ztv$RJ{7drZ_UR^+!DzVA=dSw}udKeuY=o5K6ar}BEl{wB6>4}DSjv(2@-@f%QFgeM zYaw9Yw;kxM_2*>4=W3gQHotRM@!a>H}aBsM^ec6f@ znw^tJ4iEoE0Z;f2_oLe@7L8WB9b4C95%Z%{xlOZKyMoy|@vH=9q$zvcC3bKPmeoJT zi84vLBU59TN+4JHt< zDDgD*_je+f@?F`^b733fOsxy2%OBfhvZ~Rt;bRNXSoCB73!cO@$DHf053wyC){78l zY^E*BI8hHP!7;v=jY5}LG?mS{j=&z!)d}*&tgfaOw zc-(HfL)>m_=v;@E`o^lYS}cnn{7Oq3*oNc-a`4FIq4~B0sC#-@^^%dxR!f6VatS6I zYnese8oxx3e)5oqucXrkXcQQ72cOaBf(oDBwq|vo!hrn->i7MJAkx-H9t(r|*^r|| zdH7C>-?eqt?n4B!eu%WzvLOy7#~tFdye#i8H4>wYkWHgFSsqRUR>-LjBdrp?GpX~1 z!N*DL#W+*R(r21w8hf;|v_s?(Yo9>v(o=J*1oFO?gsdi^VJ>D)0KfLo^d2c|mEkwK z#l18CT#2DtoEPL*rQkKweT-bxs6lV*Yi*;qUIUoUPIYb?&ps-kWd2JZw6>RK{ujrcuF1XXO(VuqM%vXzFAwfy^4=29Gu~bq+iE zN?H$xsc40<%xV$yEmIF2C*A1X6|fl;#8Dtz#JYp$0etY|PnCP>4@0Aubu=pzrp67? z{Lqp~A)un^`>sy@ri4TKrtGUCqf0 zS9Zs_!Hp6_B&WwE$}Kgz&847?I@sIOzDvV?zAUF@QrgeJR;&S7G=Os617$Tbm+oTD z4u78P7@=~O#&r9+i<6I?oWzNy$7hum4-7Ha#Ml>B+d7WTs?@PjY018Ky?16RMJ#nR zCvQz)k0XVfGB@2<=dDL)QI!~l#dkFqXp_E3XIYzOD8@oS}irJ;<0nps-$ z4>A=9M>@i}4pF~%304B3J=SZEz%Pf7hRtPL>xR@umWI}*M`E4d?&Ui-9cNCS==Fxe zOT=+~(@*6S^ZagQ&59iL-qk4!k0-Wc-?%0byX3ocB!xlK>+Kq}_m3aPnftlA#3p1H zlR+9Cr~4=2C$oe=o-Dj>zH&nDmbO;#@L|aTEG2Ym-!N4!XihL#x0d9P3T=jNg<`tv zmgY+Fhh-x516RV~)r$8`hTqKr}?)0bn>7Kl>ai}@#g*DJ!T zI>++CW0i!CKKTq2cOl$z>3ok0=Y<#XB;1D{Er4I}TfM&Ya<+ed8W~y%fv#zTQacMk z&QK6QU2acLzE6FQ&``Fb2PTs+4YB77uQMv_-&JZ7jPveIH#+rO(3fK#9FT>-coHwo z#^yzZ3?9~XI!GC+>(lpg(A{!^m)XkM)4NGNTBu!Z`F&!DLVu2bNpcHx%YA(V#hhO# zRBNUvvA2%&phxFO;E|^8P{!=&X4Y&(-4Z%DnuEtOgol3tuhroCuikZOGXE^(B^d(O z^+-%oWIaml@ho0`pHy^P-$_ait}3JwgRYpgA(+%kMs6j~34q%oT6@j+-3PCh>RmC& z^2c`9A^t+VIhmw)*H*LG%Y5+!V5xa(CyaZK+P?_gxm;I1_L*Q}DQdxSI`~uZ{+n|I zlPQ~Cukcy6J~lxm8zLjPDHzHEMz4E#n2Id3jl`)5Q#q+Vg)o|FRJbm_#aa=+VzWBG zRct>qxK_j5vyXA@c;mu6f4I~Rd#~}V;lp#>hjXw6!wl2#VY1?n9qZZGP6wr)$?)$= z5Yj|5JFe4T`ZYqJqkg&$t0H)brjR}>b=}=cx~%ZgG2MC@ht)u)VPZ}1)?CKws#)Lc z2J#+uep*}Y0>Cv-;cjXqBuIT=Q;bQ`J)gJ*1e3Db!Wv6v#bzCNzs0eOqXd&dJtz{( z=dQC;1&$u`&wBp|J;k+8-aHNLks%f)n2K_an71BI&>CJ;x;E)Hv+cLHFh?QJ|A-KLKxGaAQ+7T=ja(tw?V$Ru4z|ucK__Tm$ ztb`On(>l(Peo0MoSJwJGUSMmU#@rRm&1Of(N^NEP%}<)%1KVgxZV*aJCz^ybbVQ&_ z-BQGQPm-Aok1!iC)d?m=ia`U-*@}jcU4F~w5xB>J-1?vN4ek{^xN4A8opPeQ&(<+v zPOsFe!?&r4vF;g=0muOkzz}FT^VmK#yn?KdLg!9har5N;Y7%B0p!PbMI1yTwXb;BDxb7|Xvyd6d58DE<=Z z#l$$+PS_a)js6o#fw-kgH)grfy^6tY@-S#E8>QN#sdUd2r(834f8)J%8cU=Md9qQu zrtLn!&fK`~l}9)6RPdBU|DV&7x*^PY5<0meEYI~*E8|QM);zR$jjierkQhFhn~?;Q zY9ZSR-w1WD4Qbk4=I8!1`q-sDjPJUD)mjdLtek})eqt@?x^DvB@Ds+TXQV}0g~yl7 zW#K-`Y!N;_zx{4D^n3HocUvG6L}Y|>sq#j#9o5a2F1R(ZUTrH3>Tq-0*m!f_Y-SzW zJj6x0aJxF@Hqbf^XXYp1*Ll&N7c_}Lo*%!adteS(6zbjmo9_LCUBV!}4N)s2N4ksK z$lyZ4=v`#}Li!y5p%6s$XhhaXe{SgGo-5$OL-@ESyH*{3W1EgW`DTeQR3zF+}g{EDLfb~Z-h+jLT|eAjq}9Tvs~jqHk6Y7*M(i?H6l zH-|3&R?%ND;V?Dh(j(L*vcJhHUMb&zPJCluhUENr|X?G_+4SdEDu zkNd}Oc06U`l$!ZL5FbyRxcyKTe!Fn{z#Y%)+mXj(G<+#35dM@Ho>*}M5+iZr(|K58Kk1-g6KH*t@F-abDk*}(cvN>?C+@;pLdyRxlQgZ z$?ucxe%%8gh&4t9^}=&>aVVA+R`(Lw*C;7*9~ax=dZnvh2N-1{)sg!agY4)Pq5x1=D7Vyada#h-*xi1%6g z$X`s;DNjz4yI!${nu``mhsM3IpL+wL8K~cqyu842z{2VrKYudt~(Ug3WB+luGS z+N71C2%l27&o|bB-xw5AfD0FO=7KxBi;m>WI(BAdi?DT)w8{+8mj31V70VUDRztxXMBh}CnfJ>+9Nx&EOPu1E?hkf9zclNwvVCY zSGCHHbV0+kHod~IqJA~!k@f`iXjj4R?4a4>JSvD|lEnJlQWa8pC!{7BLJQgP7R`V_ zpPP4kr9AFhyV`TkapuuMHCFv>FSDqrv6hY2kZ{K)klVyuSW)k)HozT+T!xx<@ZCO; z+o$1l+aKE0r>`4k8S%)&`!uZ549dc39^O1;4atW<|6p5}EK)yjvWiP;y?J6m1`t#( z{O}0GA(#}9lK3ShIHEoGb&Z|c7j2goN;hZIlTh&W6TMY_btiAuk5ri_YW91l@CKUu zWooc%^s~xAV~^5}Le1N|#pHt0QZ>hq8AskX!Qrteg!lU5#1%_=_c5dOpNS-;tC9+C zZNN#t-FX5YCvs!3?gadbK$;uem^-9C^d?oCbm7)tt4~Vvx?3X=o;~yq8GVl-NH#;s*>AYbWKBWU&J!dly1G0)1!SHjPCl4{1SJ8j1`va^R6U~ zp7r7v1z>v4F*DrU-O+{hKa8&YJ&*u#%h#Pkpy`g%$_%l_VYz^T7X=EDI|(NCe3$PA z-8}T4u7(_E5l4#@JaLD8M^y)nX*xXaBug{li5c*4_=@WEt7@o`9>zx>?gF zGDWr#S5^Zs6Iag#5Udm8_6N`gq5Xp0yA$w~?0x{~`1oMizzSDeMTiBMy{QDpHOhO= zh-rJDPT(%O5cVp6*TrSamuIDjMFwd_jrzNjiu`PGo7c>E4N3D(>8m$FAfmvj|19$l zkG>$B5f;|SH@>aw9x&(G8jlVA|9$zjloqbxXjubum&nS#bm$>|>mnMnKCCo!?5Cl= zeIjGkYEu9XTD5wh7Up>Px8y+9XYAvE+VfOVY&+|PI{DI zHZ-%42m5B)&jnYO+=|Uw4Kw$$n0;%Ok0!trY~66nt9eRrt6cJosEC+cFtGHmG++&} zXegdDWJ?}+NEAm&0G2koVH+t}V1KCc@>P%=lwgZ)%mi1z1NaOk@fx{hPvnEC4i?_XJRX+4`q~;#uS#K zB>0{ozIc3cDZKYxRI&BU8CL+kpPE6dP?oA~1FcWR>cl|y)OzuLIH2=qyHlY-d!h*@ z4FE3&Sj27ROV}TcE@NBPdXml<-~YLJ!2sQ}GRsOn){(~S@2`^=qXy6Byng~e{_)*r z5)s|lfVS!vg+Q+?fTQb4Nw6_`6N0fhR>&bZnrcgb;x(S97&JE&jtzC#*JO<%U9;0) zSS5BrnpLQ8#moAyfAckB3s81+aMRM}hg8sSSsb-2dqEuOx`qB1VSf0qPH=Xpc%9p9 z`$U>V;y1s=z|{t0;vr}Uu_QS~A7u)C`5S5Mx8i;*;cS(J+B_IDh&jJ-5R(ppb{l=y zVgHq-WAB@O3DG8y=Y&A^m$#>N0b8M8muoWNe7OPEZi4#Ok4n)Fct7%aK|%Zx>#Hu% zoI$7W7bY*W(0n}$tyq*}GfyK2(>l<;aocy^gUDdk1#A|iZSF4XsKU|{t;{M3Zx+MW zoL(qAMYhLnC*)26p0P2}+U#kE3P}5#y}|g28`QQ(o~3PlE@8>U_r})Km9`-2|bee3F;v0}9dH8z#`GDCsP$0U$bmkq#;0c`%`NXK}NmfMp zs+x~4(K*g!%K36@o$DkiDI{#|LP>-Y`ISnsLGs*bc%-Rjl;zAS02Pk|kv%N3L$;ND z=j2GTPp{Y1n=fYxt{Q`OB%BY5d`azidF_F2_1(2F5PC-d@-Im#;?HM(etior>MvE3 zW0O_=Y&uz}m{|Pc#X+#WHN9;%O~Ei1`vdeMHUZSTer-JHod}5f^bF}NXD$gG!DTbQ zo>tWnNWS7P<#&h954?DuC|E>!@FP8lKsImZYgB#~cXv7PSyqxzw)8Bax?=K`o6KqF z{Ip3dd}}TKNG2K3nuNt?W6`0G6%!6gG?5PX5Cu(Jr|6rhKG@u>8$)!Zo)6)`%25jFE7$|E34>J+XWxja_pH6~ zG~>Q3>r17n6qlI>k+~z;m+*ZLQ5;IKal~sY%I~r+R-6Hyx)IJ}s_jx_*3mBqj;x2R zpuW;o@{!R!Rkrh^|4W^e)7O)QNkM7xkhNL^@j=Qlf_XOWln*5yQkm15>tn9DPN~aO z=*j>T^$iULcs!$hKFyLMCrK->ot6MAy1Vc1zyuGo7N%m+jZ>O=)ON8UlZdv|8d$&= z3q_M4GGbmz0{07)XOAeHNShSCJL~arll}<)3HNSZR2V~W9oI>ZKO%7hycLE+6`d=n z?w22FY-%kdn3x3l9A4>{goaBLS;%w>N%(U;lHQBq-0qG%cDjB>9d8%3C;sR0(@ZBIJvWPb}-YBoe@rXslxVDRo`^7jbGCyImVKiPI8i4 zX{oBy%ulP~Rb`FW>0Sp3WCpAjDLWX%*0$%-vEIX)g5e?}B!@vji+k)j8c;Dr8bACq z-|ZJ@0wh1J^@-39^bW?2U(rH8EnJ6wlHh+cYZy}p345@n{J0Qe$rOxmyf+C0IS&&L7NW z->ejmxv~4e z0i3cjeY`{fpfG;IvFM<&+jY9Hj7b?qfmcOr1Yht|OLs1?z*lGX4%!>rVnsjeT1I#k zC>%{=SYN&p?{=8s*&z5TSXOpDiehCeZbVB{$!&hSYzoPvcok}H-oz$2buF`V!kRP+ z$U$JAY=z3S<)oo0L=wdn>&Jpsn5~3O#%p9HTo2J5vEwxqEAf z{wyIoV+Y?Sb+Q2#<|I*=qfXm~ci`g96IS*gN)#@qp`a?WEW@10LNgJASTC-B*&~;! zYv{^ncApy~k2#pcJ=bg^bdbhvj!Jsc4zW-*q2kD4gsN6l_+oJZFBx{ zpEtI`@eF}%HGL37Eo-PgYnRWSY%{i1J^>akS_0eCbBJX?VD-!pU?ktjMvK(|gjS#o z??na{ft>S)=T2tN`luW}0k!;GNi`uI;vs;H@fUt)b^n;jTph4Aa`&ox%EHG8CJssp zZo-}AZr29obD|yrPWiUu7ip>Qg4=O&^Asc>bO36d0Oa>hS5a+~R9K<%q=Ml{o~6+N z@602OZg_$>q@lR z-r_Uax-dYV6+e3H-4QgiRAbBwU7!FrK>*1|zKk>fJ66W)ohOT({-0f#UewpBt#pJY z_XUrPE$MvUsLy{}FZ;K!hK9|2n$ZSgG|aubQ~rUqNcRN?L}a1>Cz??V1YC$Yv%ZFp zT9)ovco_#1wccAb8i-OyOt_$-+Dc1Qh#;V!nI7%M0X0@Xe_{F==Hmnt$H8t4W_PN? zw0SAg@7U5t(XTVYARua6T_vW+dfI~W65Q#X zA7)z2{*~{x_m|Bh7qWmlq6I|K<@G58W#!V>wy^iB8Bic ztM~E}Jj!$ibo>kwB(h8e7i2dH~sEc;= z%E>qD-L58fXM1$>rzN`dg+L6|&WN02dNdYcO$HdGQ*2h(_@keVXov)7L&N8*OHo`d z*(f72)Z81|@+f6Ftmpn^TfB=Qirw5J7rSIQ(lBv|XuxTqD@ z`r6>5bk*V=p`dG0Sy*$W2F=VX_(pxHeFmw6ZAmI=EbG~`#761;rc{%LranR~Q$j79?S+6NTN|7iu`*f*LC5zUyeG6K93B9HB3X%D7m? z7_PEofV9h=lk0Ir)@e2}*a~pRWsw>5;(Dvrsvr4IymJ6b#qf-~0alp= zf%@X@T>{@nsamreT(9QZ_gZvV0P^5pmFLv&K%lnA#Ydjq_?%%4L$q)1#8?w6PKpoA zeh}83uAlBm9Ip4L4!wB6v1?3X%-;3R)ufhUIOPQ~s*O5*aIK_4mRJU-e*C>S(QK}2 zT{A9|`Rv_8>Ssv-zH_ouHuT2T&)K7`N)cxe6R%}}8nccalh^4PGIf9EwL@Mxi14#s z)gHQ}lnLHbIeUis`qR6Vgmy4I$*dO=7E7p3`z6ih>@AIq?O*{++*+j!2Te#t(werx(h1%^rBsu_+7?vqJ?3{ zF1}~-xk8{3kH*zC)B9Tt0q`%#ResYl*&sj|-j>94Q`bf!KQ3`b zrSTg#LK;JDVrLQZTFZ!~`H%cW3bTOC0+g|qjM~yF(i`t(R6g^R*78S!24Try@s*QS z^5~LfwPs{W9E7Ij9)niDjS;wQbLH&hTVT@3r`mx@-@@$dWO@3dQ)-RO+X8p?4wdJH z<=Of+_Sxo|A6;G<2^~awL)-n2a*RkZ4yUibxF$*MzUQopS4;Up=bKkP8|sY;7{wY|4)s88&llLQ>f+olX@)Z+Yz z*07Q?`cxK9PRJGp^@K4*CKR1eQa$ye_-h(I(#bcm2P!r?KY5(ek-wwa$z@Bi!PK5- zzut;dwstt%X?AlyEJ$lQG~*n$%VBAGz=GpVVU#4xp52KFj!iel5XZF^ATq(?hIN#g z*#ZD0$bUj&(70-g)?(;PcP@F!SJiZHi2>TmGR5K;c^x8?bcDpZVwis1ct^LASrYXf z`IiBgt`hY6;5u-3?ls!T9aELobzfzGWrL z)LecN6S$=6MXI-en0+Gq8Kh?!1xebe zko@|+jM?ea@|lJx4TYO0(QH*840toJV{I|Aeq>iHdZxD1vr9W}lWETd^)@BhD&gR* zr+a`icdpJr30|LTf|#-kIg$FLtLXh>(<$gcx3d3RpzP^qefwvDyVE{G@*QQeJ~DB( z=KC!;`ot)*@FFvV?Y^&NmNwfnx-G*JI5Qqc(qc>k!yi}um&S83&~@#G z0yXZpPQ#Xq2RVImn+KteYdf6|4I=`8S zw~Rbx_&|IXO0oEKuqe2J;0)96hiU`=7_>n z1L&Uf{XCT6J0O?ax3+1Hx{rwnYS0ShK6Wc@S|7hoLdjMY>Xdbdmo5#d=*hvYq#oLp zHn_vDAtFKrsc!xyXvW*|_X-qKn)vAQ7p=((Aa)slD=q)6JfnKD&oDx{(Qnl(WW9fO z)V@PYCcx(a^G=A;oA4j_0PN*uD5GIAdvA>2SV^=73)J}FhO`7|=8gPgxL=vOCin6g z0s0w_R@NPW%DlNF|8hU`VTdn)qCg2DPZXVdle)`o=A3n-%oq-+eZ2VXV!ZWFq5-~q zuL8g7hoGI9zi7iiG1M2DpdKvf^hXD9M_1~9h#^_xuJt<@@20$ya6UkE{4Z|;G(Mp7 zj9?yt1C;sTp$J*}(5+1Bdmy!C#{>evOfeguaB3iG^wZ3I-TT*xVQa;dG#R+_{O-`X zJ>Moya{vKRVgh7xY;!Etn{kaExI2XqmU_X>W=vc$v*D?386bxlPCk}L-sTX&ju`SIG$X0hB`)ZgQ#8SozcmOGrxw8s zn_YR|Qablg`5a)JU0?U)V$U%NX8f^xI`xBx(^y{rWa)yZ*WbG&H*b<>h# zD`{?Dbd>4dXtKca*ea$`$7dy5##r9To|08XlbsiC73$QiXbM(a<50!0!+>z4Xy0!` z&tXEBLcGFzn&Oun8W!I*&+)qEwYADpvFoa-FI}S-3*yWUy^@`DJWZ+2K9CD4G=m6TZi; zXTgQcEdkc=o3+rcs-#Ff-OYLyd@3C39okva6=`u?xd4+xFj1b5lOhzwKAVf2b@t?+ za!>7=^TeW7Qg(_R{y;+;V7nT8rq_Eq7+Bwv0_&~@H2?CEskK^056cmkzpxGri>U|G zTBxc#)$dkk!5-+IfzdZj_9Vx0KF>91*ElAXia+n07K&e3x8xKjGd3et^x45z037=J zBw{4q!TCpLE$+?`G<(j~$=V0}xM_*4ST{j?yc!nzHP{hn#sKMneJiZv-Z17U)PkL( z?M*glU8~ac#mg88(OiDd~<`d#D2MOyShnF z|AuK!C$jNZjJ{sa&f*9kbf`QzUe%Jo@4-bM^ zOxWCN$B#ff{}m!(b3J#5OJmU0-P6gxlFIXH9#{6+?rj#~G=#X@?zi}H)ose8>{;Q? zd4?xP`6RrP1T*=Yn(}(p_Imq+=dQEu z=w|e8Vx=aLh3DsbIw@r-!PBxpRJ$cf^l9D_kV|6G-*VM@D{-6nXvwV!!0}6ZOS(7; z>_Y_VHuh=F*fp+@qy+Y9k7&_jiOD6Lv0-8}M}(Me7%sRFvWOu@OghrDtiwI^1JdDek}TKR+p;5{31e*vVus#M7L9{(O@rV?&QfTF16`YkgnM8MLP ziLW8rr}bmIYE%cHipaVY{h1e>(XS;c>Dx;>2&!{FBzbYL0|G+nq{wHqAvm>D$5_cA<4sX^!^w$pmdhE z6_OIFa@(@^DaJk>3}CgT^D+~D^YnJZj$iTwT!L~75``s)rWoM|Y?9*P?I-E36 zo1d(^u%3c#*#I*0|7hW)VOWJ{fNO^)so9ks?;L?mXp7f(o40T^s}6}#_KtVH6@!iz zCJ`?{fpG+_!GQXc1IRe)S?B0Ao|6`BypS3GBd~;*u*xU&-@3hU(HRr!;)q&rv22RE zmBZnr0JyQ%+hM(mq{*)Ag^}tMgIIJA)=OLZ)=gVFBEa8RlVDPDE?Nxq)EJ-w-`ps< zF$V4LECsUzBto~Arg%ucos9Ny(WmKlbq@nH|H_OQ$iLq^CO6Q^)N&_*YlR_<+dBd} zqTJwKAU*rHw~sjihi{zdRjlxR>js31mCB)#A!pI<2~UJTiOZ{LDEmFSNmVbWs;~iW ztB43Msn&K2k8;wZ-_?0Z-oIP%2?umE|MH5EUTUPUA=gobQ62;=f`?oGgh70DUtydI zxGcw3QV-K-%P3A=>$1ft*4*!)=%YM2uqdh_Fs-HK3Q9|HROwfa4|`ZbpfYJRgMc4nRL&caq$Fy*!eF68%3OHyn!lo3s- z#ugFD9YvpQUE7VMdG?e6QW9?xatdWtP5t&OA^gbjVZK*q4NkxZ&OmLg9vwVZ>NaI0 zf6fWfq<9|kM}qK?pz~cxs_iSvRE7ws%1NVJ2vqE9O|+M|Xep{7$%cv@12i42cGa-} z6d=1Foou&}{Ryby@tYfLTys-V{$sC8``~C}Ec;xe$e8wT%sqTJ4!H_}Ko5?Q0aryB_Ab_W0j($Hs&9@?Rym}v~~E`E&IPXzHiE|(@!1t z=R3?_foWW~s|_M;McrLe82)j==>hv*0Dw2jm$wTJTXlG{r3`E22g2Tp-~LI0Q(p8v zeE4JiDzX$s6?p}eFJW7}-Y^gD zxIcK9#}(rqJe33*z4NoZb z)J1@~T|lpTu@+H2QnbBkTvnhefT_ylr8W9?y2=@p^)Z zxu_*|?jVTYT38pnJ6vt-E`zQa@|akD5jaSfQ{-;;smJ#LS;)eU#E zouJ3(E%!UnbNank$QA?>P=b5D*Y$wc?q8YE5i=mS4;{#Z$RrFCOW*1?sZ=`tVIgIR z8v;rV-gLUxh+VvP@*gcv3S^M@hnn+2q~jkWYfSQQyW>$Z;P+mcSY<~59FhWf&T5?4 znU<_q*7G}VOu*n752Asx)$KK_1ahB1*4;8NFiQzYIK&b=0hu@8IOlZH>iT^#E$nAA z`nBKx(c$BR>g`L$`cLHG1GE`ez?kKW|8xT?^N8^iM`O@F`iUMWU!a0Q=;{~RxxH5z z?rY@`XRJAwP~^6D{)zvf7^v8538!5+9gCiOgr0He?ALaqUpw)Sj&cbGFSv6VbZ~hQ zw9BDyqyy973WVKi)2agy8T_zno&x;-PQqRxUWOjvw_iGP#r=@qqZF`?@|4c~&`U4@ zu=B7$50tfTJ5J(#eEVHW^@l=%><}j)w^~{2j*?MChGaYCFRfqTMs;jn(gbA8ZASZL zA8j1_T-KTLGte{>DczuBUbIzqN_amKS<`u7<2rA9Tr+wNaaRLbLY zwUH9H<8SViq=GVn7bG9BFZ>-Se=+TnH#@vC(7*CmEQDXaMD`rh{+0Q2E?_N&Ure7T zdR+K__Ge28&wqrB&gaha=3A2)YBDi+{0k)h^c`UR#{bg)6z6?0Cd$5M*e5e;N%lL~ z{Cgk9059>^&sN_Y5Kz{=y|&V1qf_Sm_5Z`yk(ggjO?*)Zw$1VXW}E(ZNUD61-+Egv zFs%g&rM0^1g%y=DQ5Z*^TbTyi)qJxe?2E|u>+PCohGmB%fM{t%!(y&)vfLlRDbD`_ z-L~eNeGPpImm!6)knw>}Yt@w+ji*a|_Og|FNDjDOtqNQFBc<=3P1wNuOswtsjBV)R z4ux_4Hj%E6ge|LP>Pux?RB?OF0dL5Q`?gPF#Rq^bA910t4V1s@Kjv=R^;Eir;hQ2> z`LUZ|65*%_eoVv@bbu4ftAx$_y3(mp#srh&xED7!#_gR47F~1ZZ|U|XigyLTI|kk` zj2-9}MBy4ori`^tE-`F$CeaCqx68&BoSFude1HMu8-9lwZ5Nte)geA8AO^%V?;eph zZ!XDFsW_>aM19}xA%^}~(OMsYqQd9x9HZT)u3LUu);VLPT_X<}@a)U9kMJV>P=bS# zCe?sOO}}rn+2&4#G0cH}DDn<0(^HMi42>JeXJ z-fgY`-8oR6qb%UI_FJK)MnF7)y#8li*68U#D1BKRE7*TFCXa~$M*WAVHBzz_QjPqF#H>g-W{MgdR z{E|w+hy8He!T&yZ{_m{v|AgO|>V|6%*0bPCzdZOia*Ri{Bsa@pntHWTUln|5JzY)|Vz4x54h(4BxBDufGFy zR{H;>=U%@;A7O1nh%=J|xE5K};N{hRH5M_XqZQ?}|^U#~e4{2wP4 zH>x+PH-c1YY--z=PRsunbG`P3BfLznaoW>?SnC?SD;0tap$q|}ac3wvgv~!EkhQ*8 zF*;e37G!cYBlSk!-oS5h%h&brk`dPA;3YQKbl)dxNU!Nh{laD-l^Y{3{A{}6^xKVh zJazZ$h+p=zvwqoHOFlzrPYR_dX^ZY{8u6MH{THCV93B;EiQcqrdf6|#MOSMU*_ZAu z`Q%@|`7QU8T`gjNu1Pu)eoTDhS^vs!|7OQ;ibrFm3=C4U@JfjFk9y5WE_Y-vzLvnI zH_m1`?8et^`GqWhG>wj(UXogegw*x7l>KWYf3eoHHsEZGQ^e=kQPxz|>gD(Rc;vB- zDdyI7;8vMtWi_Wgn2``waSMVeV)NmIKtlM>ACIuPtsgh#>;E<4GiA{uNMy~Uy4he! zcPHvlHolA6%R%~Lqld)4#^v99=I2)a7G0y*loarKi(e&EM@JB^yBcf9+_$yXIyEWb zCE4f%5P2#d@j*-c0fxu8)1vPZWf;IC)kZZVNUgEAk+mCM@r4si zAO6nYy8;wCXm<8PXxM59hPC^nKIyQg&1Z zVPPzTa!mb+TVT&DV9dzDr@O2%mK9ezX~{)quB?G5ZjabR%!5@2Wa{KNxf&=j2;{nk znkQ?bxhfdPrh1zuN8Ntrym~$13U@uxPosZsy)!!;J;t(~mITwPX4FL}o4-f_-E}o zDJUmot%+TOTNkx@nyDAjRy>kiJ>j0r&@GEinyYf!0zHu=z6)2bMpR)Yg6r&bB1TN3 zzw`CaJvI1D%f-7T9W}>akmv4>ltSt9di_IxK8w^I@?|f)6mpMi(A*lWro@u+CoLD% zlXlc`D?5VT->H9KGpA-QUJ`dYc<<1-6EaSl+j%50TtU0~wg2AOj2W9G&SMO1ICgkV zubp{|GdRE66|rZeX8F)WnI3Jh*NNGNRS4{u4g8vw*yeKeY3E`2_cZRD_fQd?^Qr;a z48JWD0^wj1Px%-NzV*kk;#ZUPC4C1>Ym7c8@_WYKABLYyg+Paz4mfw{tx@7 z9}ZC;q)6pNZd>VOcBl$s;UdmkaVHrl4902KH1ydPxdnF9J}L>>`Ojxb>aB;2M{2q@ zubqI8b=>XO`cIcN6@B_O5xi$cc|!O0rHHC7BC zTR!g$*HR}Bhss+J%@m|CdNoH4Mrzhmtbr1izcMaz)%&gU184BQL*Dy_W9i`)T$WFV zGAI1>AKw{x%d1&%J?4;l@ZyrxFZi`d#}T4bRErXL7yd(5X~jE!{IW+y+e#dmUSe#!QuE;m0A<4GoDtwv_e2nS6sKTBV-B6Avn5Q}y5;0fq*l61lTc z8|7hd&7R$#XX`e^^1!$^c(JSU+T6j0aX0gUlo%y&C~DI`utRpUZmFkwb_v|*%kU3e zX;=$>fs8}5Jz{4ay?wp7=D;(Tf73Kk1079P2WIp7DrTR!VT#ziBJ2$cZmb<5v3J$9qkQ6q0QSMO2#CfR`2M7oXCmggLA#bZ zBBc=vr|wbqmE8*t-krvd9%)=@ahp!0Na6Nx-h|fO9OiyfOV1640o9;ny{H$XCHw7K zP^zpE83M1wJ}>7>(D(b{bLC7+H`wNh!p)$M^B}_OG)cYCX<^5zhJg1KrUO)Zniys+4r{$qWjsDtNOAKb& z+6k*U)AX89WG&)U#$<)Uzc^b-Q0>-iyF8j5&8gm4oY?ews!HUV+5YP)ufWyZ5t|4+ zSvL&18iicDGcT}D=VPPhS$X)dl+JSQIPz8Nzv5*3Q0_E${yFl=Qx(squA>U@VU|*) zG+jGl83oS$mydmk1E>cDzcD@k8p&#!FEcGk#V$PzZ*JJ^i5N9UNtSI@dAD zHR*cig#J!Ef0excCyMIV)o6PQ&?qbA17qiU+a$;hA^YBh|M6AO{T8)bjq$0HO&;9s zU&S3cLQ~;|=6{+28&loR-!%)I2)Ommqa+z-T z-yY3)+?kjkt~Dv4mQM2}l(Bg)_rZ?PDW_noV|)Aaxln}$xB9X09}-r59RkX2x$Fts zCdTjTG90}#xReUhUTZFg!FIRGDO85h=Pz?%YppE(>@ZFry5Z7i64D`b+blUdJpo%W z)TvteQcFLvQmwm6FzRpe$%iB2RtC6xesJ(!JS($M<67fuHV^~*0T(e*#twY}1gT!%>X&ZEU_!eS3ky@MJExa;B{t{bTer^el zaixx|E!|w2JLwe=w#~iskG~_jVw?OZ5O3E@8$nbi_)tPD-`0@I&KV=mtKWxpI3=rX z9}bSbt|j?*VDLX?s9V2n>U2T9gjd>YML}Z4d%|!jlMn8oD<`+@mDn!SxK)~ah6VV% zCM-@=#YlrWhQAlSJ=(2`>-Y4T!A$e{EE`8OO`=Y&V9W8e1nAn{wUN|mc0LIW#C9_( z3)|O6t7+{g`G}czW)PaZ#{;K39K6drh;?GyQUee2E8_ZOnSExd4)+(=YO#I^jVNZD znQqupSXe;c@`_8pNEuB5-+O!8x_a%)?I&SM^}aJfYmJhW+V<9>LsAk-x$Jv9irxQl zd7H(+&s6j)_XDz!4c88hZD^+Lzny>Dg#UQ{jr7sR-$9-Ifq&gs%c0>$iAtsb5kJQB zmd!V~oS=wrz_jaJrLRb2h~(W6-wr)EN@yK|5JanQ{O0L8GWz@;+md87ett|hNdrqBiMkYYOw#o$_3A5d#hdmAFPi`Wt$-MS z1Sn*m)?TZrNKzDYL8Nm)IpTsb=M~>3lJ9A4kjBia#-Y2_1XW^ZKh0h& zzgw82pDb)sqs4ySE)_2~pY7`Ol#aG^Lhn_Kc}c#fSnwyTj~Qs&t%^3#IwZ_4(l&He z*hxWk>ZQiWLrl?YE7LI|In~stv7|%B9HBq1y*#A4T(BxtHx2cw*=B@dLUN2pirE%~ z+p8Pk*k>GU&>pj-IIT0t2J$_Yp)CNm<#Qn|vx}`y1+C2bpAh{O>l3tM0EY-9t-l|M zJ-T9cotnG|oux$62QobmF*?$wZ!)$$dJuc?(}m!$u|L4W>ROej@CrE@b~TU<4#`!T z@c~K~{qsZ2j_RM#(pzSf7)!clGQVz`^Qo95EmW=As*537Fc`Cd)v{BX!=>4GgcHdl zsr9jmD%OO!Gj-mFpl3P0|93OQg;ri6Waq(T`s}9}0~taEFTb8{R~EP4*zNkLWR?0u z&^FWlv?%OiTcSzd!(-8C2FqX*mkw-Wj+O8HBk7D%r^va<2nkhpkWkZI?u!tcZBElQ z`gk+kD8GF5@u&J12e#Xv|3r#ryWRa?$fCx3FL)HV0tD^PocuQrl3^6UiqHHT1L!n2 z9M{$Wk{cIX0_KFjrar#U`$PbPfoB=GF7Aze@XlS8!KQrnVaHu7{;!!v04geMq=^0n zU!x;H7K)kSEi;~XT{;%sRpt3>FVjpspg3$|PvXEM{>jo5P!t@;+PfO@XC1I*%cHoL z-G9ba(IJx1{PHy0wsod3lL3d;trL-xn8SG6bg`*6!T1osRW~m^~TJGv>n~ZO$g?( z=O^%Ys11000izL}^Pxj~aw}kAX-<1P#z;vW{Zza2dgXYKWdQTVAHO=+)zrU#ew3soH<>&3Fj2^>Wj3W# zjj|d_(|3u#@>Iau89=Vxvs-cx0Ui3VJ0TWo-tWuA6+1vhj6x3nvYNIalLsxcJ_vqJ zCzTLP&=c`v(!&ZWKT3NvdQ5MvFz5B>TTNEMW(fW0Pod{1U&1_p<$taaoK}#Td^auZ zI9<);M^E25d;A0y8zo?k4B3Kx-4GAGV4iYh37cT25wWjhhu0JM0VhEnexMp5oun{l zn05d2(_@Xc(JJ%J9q{sB1F^3A!tH`F=IAvmF1IV1WMgu~&irH zL(_#2Wz&8lEkSeYMT)bOH(7e`kW*B-j1pSjwyc+x$g#YXQ~t8<*u&BmF8VJC_$P>EDcWhDi6 z5hIMc%1q-JRvJ_jeuKpMj=o3Qfh6j#PJ6bohY?&IJM4?G;$w@2fo}y68dx35lAm(vw7J6`d1?^r1VpEdBlpC)v*b0-hA7jwb%bI}=i`yqkGy!@rfcn?okT&uljO3d$2FKWiuI|%H^ z`w-~#wSZwgH81u^L9QG<|5EZo83(e{!)&1?=(v(o*JTu&mFxv9{WWQdn19xN{LRp@cH6NT9)*!G+AC>UN6jO;Mtbdwn#64$~^J?tnbA7uC=-|yHd zhT~PFSf4R7KDN`PEj*wk+!a`aQ>xE@VY;95%MlS)QQBcB{gu$~(uxZ(pdq>vXcC0! z&-3gsgDUGdiI(tEUC56{W4R|#lFRf^K86#s6-2kS^CVc@fC#LSCnGGBDNy8Z&5spoa6Q>FS ztX=bq1E+i!;rs`pn%D#VU2%Bn$mUhuu@uTL!BGWptv6LD z9g2=fkDOYQl#p4GysDw*r%-IUmo~QxqA+cIWJ)YykVp=!#XB7hY@5B}$sJl&4zvIv zzkx!pul%tZVPBHYkKxR{VSvlBi)!QAp%KB}#Ri>s%HjFVr+j86?U#`z@<>^)RIjTT z@<{sZarewK_lpSfZRgzb^52VudyvkK#@h&S&DFG+|BllNBnV;~^_NNGx2Ap{x=MpG z_>+Kmy+H;AJFy)TX1Q5TrkTD(T%bvSOa;p?y7~$LrblMHGzd zgr-cCSXS6g4#4wv@(hl%8M^evJ1lK&c}ag$}H=x+&NM(Rav37{c7X7 zKxb7a$L}g_PXEUiVbaRcU`)}ecY?6f$R`%dc#|W8ewU^S(#?&>-DbK!V)d%C&7#aw zq$3}bj+g@lM*5LjJ6jX4s<|#e!9MS&>MA=xd+Z)2P>bR=?3$dq176=X@o%qh_2Y$~ z-ii56=bcu}R{aqNEX7lS5NlKF2@4mTR+BK$Jg-|ASZ;HY@RMIeE7Zpo(EVF1qs;iY zez)%c%hBRuZjv>%mulZldfXe(`FO$YAHZKd9k!UAq4PPzz}_6!>Z#s7 zf$hqhP!BGfFJt)QYUeL!Ua!n4Q@XLbt$7&jG#z#>-lbx%n;Z9?l>50)6u0+Py!Oa`IKkx z3<-ATk?SI)%YYnMa>^!8@y}=%y}t{Hz$;_qH){4aCf0hLAjmGnUU3u${2%cM>2vEO z_-`I9$Wq{AV}2nV6LXUkK(5YyGXCxa8(c=F`2Q1fD*uAC%|G=Lf0F~sb{UvbTR9d~ zt_*?1eWR30{u1Up`zIDT&P$)H>U+LaoY=hsBK~cnIYr8IKB`oFP_8`Vwhwas8`t~* z2)t4&6$AfryqtTt+LJzh$aR*@)p+9B&T>arz`RkCJVdCplU57!;gI!MVm?p&Vit&kueaU9ySeoHRA06|?8}l(HG!EG)Id z&e@X|Wf+QYU&j^QVU}`4Ut(8x^ILZJu4Rk`zjJ2CLeg+SI4Ymg!f$9z-I*rzTMZ$2X?e)E+CUKQ zKzO24_ny=3c{TAhbLyg$?l7~`YdcZtlPSFmrNQZZqF)C~q5{p(wG@rMQFD&J^f zeh?*wjCBpa=P5g_p4UdaKElIx+?DzSIBI{~j1vsAaYxhIoT~o-Qk6v~UKq813dY#~ zh$p6f`3xs~F&;Iy!&37)GVerZlSicO`9)V&>#PX{-cJ@U<62$DuoZd>^i#&=Z8B;- z9>-;J7IUY85(a?zzfCqZpKGO84ac>Is?DCE-t!|{W|Q;IsJF92fA8X^0R6-wd2I!g zJivi9EJ;jlcW6Rglgp_!P7%I@jfAwmpa^H{1vm2-Gcz~<{Q`lBl;v`Ue_MW6e%aEJJ=KLFf7zRcKY zDPHW*m*T8Y->CsbCiE}`=mP5IWT*55Xj2XhNxmgto$=dTVhSU`%)8p#uW8m>2NnZ9E{HMGwR9>IER>Vo5eLzZc zEPSnBZd6k>|D={+mePY*e5sqdjMl|25+WxHYX_~vUKTe3F)c3{L6)>Zbs*Up`z7dw zc5!cK%gI4dpD-lnxm$@=7UEN`8QV?k2pW?hiRyJHs%4N3j?In6E<{P0M-CAwm55ON zbs_!@(;$XC)0j;Vec|5CD(-Y0BOv~h1E;WZkj}YmRa~oF-%p*bt5~?vPt#)6#38#f zFa!o3BR&DwvYw5wL01P&ZiQMo+MlE~Sk!}P1AFJ;ywt-(P$$fC?j5`KRbqxuX{Vc} zb#?6s(AET1^@bFs0(5*|&79<}SZB(sBsE5>u&-uLic+mss^Sx=P~PyW71P{e&Ge}4 zW3hol4td1ht+4mmFN*C3k*8Jn;BUkZPRW|GbLv&}W+xg5=1XRkj#3lzcD^%2%B%p%F6bp4}&3FTQw3ChEpxO^mun$&4g^%E;KKajJnl zHsU&!4ktW?&Y+I1_N0P359xAtp#LB}g*P7OWRy#6%yMIPsH;2fjKSy*#}%@U{UbR0 z9^B>BoZU5@_uO5W8$|(uh&j7!;FRix-%Qy~);TSLn)PUdV{V>kj2&-no1CdozF^d> z)#77&fvl)V6T%d$HGJ$=n2&1AdwZMLlY5NzR}9i=Q;M#{QZt@>V+-Ki+NIN$XBSUP z2&A+bM>RjOyj%ugp32(^KqjtSPUzdvHN~7pN+(t31>%hc?#ggmi$%1CE#UHIdsPDG+nqF?B{n~H#ch~&Ih#yY);p>%DLrllB)VJOVGp* zJ0N-gI-bklJ4`q7vSinEmm=1dE2r^#W!&_36jnPBR!bSMK{Or(sS64Ca{6>1cFh8a zSWwcc5(ZsnE&zS`O^4SYXsA)$l`CwcxClES zJOw)dEW825aZR&eY|=BY-fy+iGIOGOcDSoamK*LpMC)&q@L}!srcIogp)47D2?@L0 zhB2#8I{1{C0Nv&RkPN*z_Y34B^QMnAU|7Hz`~Y|=H)s_htB%Lz$~=Vb`wCG1cwxdD zKKZO%c;{ph@L!bJrF?MZ~n=fPKlA(zJIREZ`xkEW&P5d+prHjHU}%w7D zop+&RR!&#<6|j2GNR%D^DSt_uq%DRV5Jc;fZ3Toqb7G)%RPiR;vC|fZAa9H}JkZ0R zS)rh5$y>H0`3olz17>{Q4r(h8bf8+4N}m;lC2rV?lK4#SY2l-!4m#8gzW?Vn;@*nl zCoaKMzdrX@xLt({6gPpNF3=54?6^ zaW~|8&BkJ3{(x6%0qB}%?2To89R96SFlLDzI}mm9%FIc#D%X6?L(pIs zRYa1pu}p6=x$Y3BY;glQ&}Zh1x72LbfV5LjX330Wfk^yRxe;axw(=eoJhwVA?I=59 z6;d=k=Ix_t*EO~Sa!q=}=iY_$D)4$AmlWQ4ZM+6YEWc} z3S2)cP`}}LmFH3t#$63Vlo4uQ8#-YMCUx1ShKlJ!sQ!U+6=J?STEJGbjTVE6VDWK7 zmcStpzjd1i%0*AC&7|Wp31u0W!CqbjZP!Am09YVV4wmDVAi`QO$+m$y_e)-f=z zrs*g9%jv{{C2u-vez9?d$n78Cv(}$Um)5oUa#C-`!`5INU4I3~248DIf!iGRHTB4K zcg1`7>ox$cH@#$tx&zX1Z{yV;xFU#raw4ULXeo8ijG|p8Q>YPfh#h;MFeB-PMrmRw z`h^FuwUJ#=jEFj1aBYIY`d```$^CZOFO0$2@9JWQMl7JP1Lpcb7-=)2t!fU!AQx(8 z2c_z=Yk|@skU}PfY6CgFnph5jnIoSN()%&(3DB@n(KNX}yD$fw?ws60AE9lo%Yg~< zOl2cNR{)wBb*x8SV_HoYZdI$XB6?S5>DCLX=m-{=^PzHeK3;k^kfIvME+)1IBKeV> zF2-(|x*Zef!G^e_A}FkTj)5^UszW++BABs?WyDg1mytdRJ0MD%_jws?ZGCZg-r%9K zN6Z6J7FXsBbq?K@%fi14<#w`Ot?+R#J!9J$1C?60E=V`nzMt20WhP&uSjQ4qhnOVN zDlB^%01MfeSJ;#FN*r+i9Tzq%NOY1U6Ih35ynWPGoImM*s#>?Nxi1?&7!=JkI!>>o z_s@^1-$&#noE3}tH-EbPc7FQP9E=$YTWfS&-P;J7&@#-$643n5Tq>2ql`z%>U1~0R z$;Hc_H1#3I_wSAZ;X}|dZJmAnujK*#{nado0xRis^3L$BcwpfM(<5b=%k)E(B$~;BvhxroJ7riMHinm zA-j5~C`6*N)tBO7wSYs$2yMSu;Hk)SeV$@#h7Grl-xly1URxfUULDr3=s_Zxx7`Lb z#k4BpF|ml+u;?FFzSe!TalziN>3mZH=rqg_TKfu!DrBvYrEm`lsigkOIu~y5$%$T- zIEe~9hXt5gu16NW1bCnyRkSvX*9&LODdRFgkn47h%xd>LphVlOv2)vi5IJISTBrbJ9|IiD zuepPk$EQs>E30rS_76{<&{P678ijPs)Xjv=ZYnjRU^RfFfq`omAKJO0>rb!uzS6wS zX3m}z`k>)>ite|zSMTb!_PPSLbK~=0&`9gQ`{Zhw>*I94lHGJ)fJB+V*FizDnMX8sY*5%v>;H>v$iGV{ z{i`&B5g<{qfsH;A0AN=Ki>^hvK?93UgQ=BnJ911V!l-J};o5-u(_rh=doZZ{+3EM=DsL0cM^#c4< z`0ScnftvTjSe&Tkw3lTM-327s4YqI^C=ZXaK?}n)8Hy+b(B;*-V~80oP$$Z0%~RUw zt*A9M2;`zQV4-;imVZ%IDY${d^Nw7>cN&NTQWMPZP=2mgw`rLsyBx+&e5^VFFevwL zp{}{q><`8WS&k?6y$$z95S@9|0qv6RHlGs)6+>lZ@;^lieA7YPh$_)eS7JfqIZ)z? zc;w%VR*N^Ybt(oWrdcA0m^o#DI_~V?uP#9A zkqJ5$9lM2;Db?CJRbs{TRR7(17)ZOXNby@OTfDdCRg>_|zV#d~E`*E~F;P3n^kT@l z(c>?2Fp;@KN;;jVOl`YCzp5t1nI{cd9K=^vi0M-nDwev$*W|iJvQ-!m+2eb=g?@p) zF`*I%sxc#zhGrfQRxtavtYV-GrAE&M-CoeAwhml!^-i8hzJPwmH6@em z95Ji3Q)13(6s#bZTiFFfDF$@h5%Z7DD8nPRNJRdZsYd)wefpodv~Oxon~SgJ|9R%9 zqg?e@cImarE!;WQ_f1KR~eH%;4rflSith|OMJZYJG72Q<2*G;Xsa?v9R0 z!WLO@oA}QRZBTZsNF>O`$h48{2PXw?*gm$Ph7SY7RoH=q{jJ@)(eWaw9&kv(0+zWW zeBamCMlleNiu8NG4iHHgp2!Tf$+>)F8&{d~5L$2~ILb0oRjcTOpOO}6br_vYRz!Sw z7;(;*A~v>=pf&!cZbMFW-NQy08@|Yakt~Qn`|iyBNHNE(4+OnF98i`M=&>|v`5><; zOH0XZ6#dHz_HWy*B*(t6=*eAe-Qq3f3?&SYMhsm^H@k@ULJJq?EN8`A#Lf>i0kh%1 z)oifGRwQXvC4wYTLKg{mx-(A87%4)GOk-_Y%TUX_^twHZ{u_ICgAfL{aHd`d47odA zI9jPpx~n+{{!Gw9XG^ly$J@ae^vj0MbKh6BxCr009KRhD1;=Sw#VcnoU;5NN%hWM7 ztTF!P!xmW{VoW>hS-r(L(2263n@t8&uH7bN-5Dd%GgZZrjFQz6iKDg*opMSb48_jp zZ69)GBb1ess5#}M5{2o}n6stiE`;REWX#*}r{`h}qyVX2!aQa5i3KoB|JZ7nER%*5 zy%mT6m=i$eH9RBNmFK-6-wWR=Tth5DCO1w)oprgBj<7+EI;?8cjD|C^rQ;{I6;1s6 zGG70Q{rInHV(Zes|M%BW!r>mL?!%T6E-fvs{ZcX2eY{q&#DB)H#%3Snx5$k^n)+b( z{Y#WjEZ9^a@b>G5#!{tMRR>R@*`?5gJ9axDhc}cl&T?ChsYHE$r0~)uHDL&Zc>@WJ z4m0LB&IcMD@7c8dSF#>H3TJ{qc5Q@-!zc9=-qnG=Gdnf{o4LmVCqI1xvF+W>J9-y! zp!icAR^n*q+who)#K11Ex#uf39VHI96|-WIz6AG7#YxG&hcqkiNl$NFV>c4H|NHZ! zFPlBiwrOsOs>DBA>M zETLA-PlVuXk$6wDA6sQek>YJLRTX^nI94eq?$w=XYmagC!NEP-ZlLj*mq8-t9^Ols z_{?D3!C*YcLZxXAJVcDRFNcgOn>zN3B{`9sWE~u9Ol1w@vG-}v|1lTvDE@rCg`#F8 zKrvR_7jv6R&eeu3lC0ptofK*Aw@P1>W1`pvbOU)bEQ>L=9;g7I!nFza$T?e7Wz{wM zbKnJ)J*w4Wtv!QDX)TsFV_x2rqA_~SIYKvq9WXs`E@q1OM{LKPELBquk3{j50$F~k z5#|JX1Nyw(Ot@UWlRw}LFwnh`R+3yo*J2jHz<%3cdU<`Se{eF1U%4|zd^OB+{}Way zu1YaV9RV3CGo=7Iw&np|AYI=Odu-6C_^X~E z>*FWpf*Zkd^b&U!2$)kJe(k?4k2r_a7=7@L)7cuBri~BU78tUP&wsQ%_kTC4@c-}p zpWJW#pZ-FJLj$lu00%6!&&kFJu}eWlhtgR1%NLdKy@7FjN(MC8;V$Tc9$2|@F#rZykVAthDob7+K`vqM!o z9*ancv+~w?@2%B1B%D4L1taP_|G;m*r}n%iU3-+YTx)8TrS#Ss zI+9BC7JsS)`7H)KyQBXnrhwC0hqZT6iynOb`LlVm(~Y&x>{nM!ry7o=CU%ATy^VOS zcZex?XaJ|pb2)qUc6l&q@ySG6tq+eeeA3Oe!PNj~=x`_0sjtyHcHkwvjQ{+A_Z89@ zyHH)8GbwA%!`W7ky|%YY7qDDpBaudx2Zejo?Bm*8+FTosIjkB}IO7(dduNsH=>aK0 zDMtBI%;Tf)!(Q!~U(L3dFNp6CXWcO}#y|?LMVy`(Ec*2`D-2XkBv`dPWdcMe+j6G# zS+mn+x(S~7w^Q?)Ggz9^wd@~`Jk^*7rFUcSu}aXTikd>O3@h~64;7yhLFgAGId|E% zTLtGdyY9IA1Wb~T4ex&L4VdM*Xvoa0{Ksv~q<2xZ{P5u?Pj2cvf9SGHNC(PAmksi< zSr%3-ixSx?g4*p7Co?ChwdPlYUMLt_7G&b))Dvuo?m3_Z&04Pf`%5VgjvRrLbWtTX z`THTPpj8_Lp^&Wou3jW6lDDwsgwW9z(qL1%UC5!Mt|PClig`eL$(h?hp?8>TPa|KX zMF)0;7}$>e3J;$Mj{S0E|M}`>vbzq+Hsgz8sEuO-aZ!r?qvIY9bucK4*yW}Kf z=#vZnV<}H|Ci2UScAQqdfy+~|3Oz~lnDpSGjlM(s)J!j1p0D*hyAWSPB8>}}YUVCe ziYHe#23n===l5e5y)`duC%su3T$$~8@(iAADwqK{f)y524=pvc3J!l()HlgcL^dIQ z)VMw3Na-9m7s95JdS%rHme#AAS2AK+8^7#Ti}-lcl)DhQPN9c5?#WFeh!!4vA*7Rb zJJ{cPby(ev0>|F0kDmw*u`CWA4Dy*Q5n}Q8Q*`iDrM}L}(YH+!&hJE3*=p=@jdXYt zf5pT%G!>*O6n;O9hP2!e}*W^t6k2zbp4P20RdKKwEzGB literal 0 HcmV?d00001 diff --git a/docs/pic/bbs12.png b/docs/pic/bbs12.png new file mode 100644 index 0000000000000000000000000000000000000000..dac9765ba0ee538e330530320c3eff052ab172ec GIT binary patch literal 29673 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 literal 0 HcmV?d00001 diff --git a/docs/pic/bbs13.png b/docs/pic/bbs13.png new file mode 100644 index 0000000000000000000000000000000000000000..526976f50bc3a001889529335300bf9f4870ff07 GIT binary patch literal 22940 zcmeIaXIN9&-Z$)wGopil9z{BggEI&yh@g}J8OKqqFj7Rih=@oDNQV?16qFXFT7amC zG$Be0JxT}&C=n140>ltwfB+$cG}7K3&~qH;yw82k{ha&0o)7bZD?59Kwb%OB-@mMN z{Wn`1x$jiJTeWJH+~GsN+OJym4Pw=*)un6K0C&Dc@NWPgUxnG*{IaT|M|}$T@{QlV zvdWw`4dVdRiUl(%7C2Z9yd7Sj`s}4x<*;T7tj1K?0&oSC_c1$7HJ!&6Aq-byv z_S?GCM$Q`wFN$PdY$4xVu&Mp_n zg5uK$(P}Q5^xp>tk8~zD^0iH_u9@BYZC_vCwxBAkAKb5J*xWemT;#d*j118$0gf)Z z5GkIWIh!~X(1JG3xc&X%^lgXJAD%T9ACg{d`!SbkvwWdTP601p9A4)qyeWNj_=p(= zxqM;Ys)AU)NdKF`6q8n~Px#K**!V}ktNI+OU&UaHeyfYekd?MOXIR*jC4Z$EWGJhY z9~W!JUWca+CNe;?k3+;n^xC1ZY_GsmGMt36D0k(axaTEgCZ6jmfsq%h2nspwF&=fZ zV&O&VT#JGGV#=NSnPO(J6b6MOJy{y7{;R>tO7d4H&DmLaQWnXpolTPyZO%_w6eN4?g?fw6|rU`F|Gjl9M!2wFnTAVSB6uks^6lalRB z3`}FKa~{z+HWzl_6ihs|6Rpt0L?U1Rv)(M_-D z2X~_D`ksfpQj2XbVk;#C%=HjFr%u0R*E%#BnuZ;D3!P=Uz$awi5V;6*%lT(Fg_}#p zCm626JT;TFhx4HN5yEyUN2uwNm#EcFq_I$PXP_3LdjNscNIqlbA&Lhh<_5@(90-eo%8*S5QZ1qJ?!j2B} z$_N;xKu=uvq%uF6}qW7s(ELvX(`^^t>do^@D_YKO|1fUR0{K^oQM2nMViCHaF2$7m#8-;62Zu1Q7Y;$I+r}h8qdy_*+pk zIm!6w5Tt%`N%(l28{;N&hC3!X&M^DCNn38yjv8)+>;<2=ZTI) zFMz-aIY+O~V<{ybXC38VFQ7^Z{P6Gvg&*>sKTw9Zt7=Y6o-qI6_-io{cbxy?4anNp zcXjuT-bb{SHWb=Y91gG8nDFqX9@rCqK3l<(39p9dAJ)v76T}AIO=9Y_I0b|e%r3U4 zi50xlW@F>HH2(UA(F?N;)q==_BIkAsw&rCMVO0{xb69e+D!81^g`E!<#e|kVvN%T} zz`VYTld#+8nS?o6uGJ0H-cTx2N6h~{kT<+3yER`URCt?Ur*Es3Ps;&h@}PfTLDUlR zwCcXl!?oCetiyaZRwk3}`P)*TpvmHMnlAUv2 zd53X$w$|_n(vT1FO$vCcyOM$G(jZz~5N{w1A$9CRk6c!O%<+o`>}JK!CY?a98?=hD zD@Y3|a|8|5(I9fEb7n;jQ5eM^mNV%}?gv@3uFoSS)%x7)^PLOeWUZFJS;zQcfKl`ZcyCc^^jsmkJU%zWS|BIZZM0iUK~69 z_Lk!b4(woEPjOCJ7cVSjT4af;&^{9jRyr^G5c294kua{1PcjxhR#2-@r`@{SOr9R% ztOwIgQ-m&7%=mJBFxT%rbMh@_I=MfvX=?qhF)vIaO3j*;HB)wKsMmbhx7(*z3D7Dy zJkD`iGo!Nq$ZC5&owNN-Jyft%D0sAI;6y6;s6?j;-Z3Xk9?x#=*;%GwJU}hz$)B}C zF&yyAlH@b|6mWQNQ^B(dDGsTc{QefN;h;8#13x;VG0;yCbcSi|q1JIPpJlU~e95G^ zL=~}QZBw*3h#p65oXNx>O><_N7nbeG0Nx3RYfd z4nGs+NFj*%Po@;m3S6pJWYp1U3HsPx@nh(m9sbE1*n7hHWdvaoyT3i_qK^i@Kdin$ z718C?TwZDuqi${s5x7QNQDqzTT#%&X2~I-#_lOr^8^V}_=+)$DuN^3Omoj9)LfN{$ zoa;5>s#?4H*LXetYaA(O8+TI&_o~=|g2BGUI z7|&`$ENBsn>vs~-3DPZzn9Krocz0v1)g;{iAt$8URLJ4m|-`mmls;MF>I|{i^ zcdn`EqhxsnS2NEyJqi@AgGs)L;{dC0PGrT|bsK`4;>(Gkf;gTFBKED2Y-Ih@(j4Fd zb0QVMbUUJYg^EvzS+wYY6~r`PtlcnJ{w}H)<|=$QMS%$kW`?#zNMq7S{87nGkX6<} zR0V-$BrYE4O$C={f51H&YBm;%?2TBXO7c+7YVYncgSB_ZNvwUZwTA>Q)=YXbuBT$Z zFJ=3iu#rp4SWmTiBk~AfKTr!d9913C&IzyMy6({{b~h}-Plx*nuXC#`IqLCDKi@W$ z#|UA4Gra{P$*SR*+ms6`tDtvhQ4-D|6&c}RDt2sU(;r~+otI+U5H4lY*HAjSrVBLI zStoTSix-Ao8^<6Jv?V?z&g0G+s#vDEm4rbXK1*}v4l@cLST_=!TeG&gKKwaRgixJ}`P!T8*srTIW1?%0K}3zbameDL$SbdRVP?1WVCFz*cvk<2U#`{uV^BW1+I3Cm&bjxk&7 zOCFr-gE5MjJUKV!(kh?unM3 zZ{oYggT}btBK@DDj}A`!2!n8^;{u%VGW*a7ypwmP&)u{G1x;qJ4(14F-Kdz5nr_Lr zXho{_dBGWf>?vKe!;gDj`Dl0Me%kqYxN93D{;m_NToL7WJ2-@n+#~%DYhW9D-EjKo|m=J z|C@3;v@&9BA`b98Jk|%Wjdf3TD&op(Wp@^-De$F0IijZalEW8Zne5IJrtc>^x+U@*C6F?plx6SvsFFthwmlR9(m--DR%7UAg*l9l*+739j zYe|=K!4zQG1dawH`E zk*?6Tf@6FH7|7n7g1lhZ@^h-q_BKrM&tnsekqZScTqSwxRKHAMwGV&zbNJXJb!Nb` z%#fAIq(8j!FGZqtx9MoCH4s{_y7B0?g6I|L8|ihQ39A0EqL9>OIefzD!u&vxUmBqL0Jn7dPyC@34$Iq=PVCmg;#{a^@z~iZ4K?@K6BwV23?Jvmz{?9hBe8_;g z=h#4i+9itrs}%6?eE$;oHF_*=*A7EN87a9eP9&pUCIWJJs_m=3F$n^G6S@Z}q3KGW z1r!FZy3m|m5}Ud@r0H=U(@&D4&Xf|_|G1(Tu5D^Ud=>dvyUOn;~f%>MWaE9_HM5SJc(6u0&i@X!4#nE^+icCCBRz{Gi{n zDYcaEmoSLa@k%H*pCEnAOmiC8{?j{H<`d zf*1FN7ZrV8*WsW0yuN8A!X1ywNCiLb@%M=D-cGTje(&^r89wU10@%KDm>`_8PSSzA z*tpNd3bKw~zOa|IaY`e{Yq%kpaqEqnx=TVT=%}}Ui&e2BQnMpg=ubkm-2bV+;TYU& zX)|U3pn*DHDq9hLQeMo-Saapf6(PiFT~LzWYrk))+IG~sjMO8z3O7B$X{wXhx9l?I z#XV+`=wx}<{d2b}Za!L!L_b&%6*t&1s}FaeN(Bxp^Q*}RWXQFFVpmpS)PMbhT5=BH>>2%ucuc9d|nuP(3u^;{|j|mTQEtMAfx2jZJLnk~3TId%^2x zixw(TVv7iQp@$LR2z=Q3D?c;`_QbVwU}M*BzEDukZ+BjQnX<&rdY*~ zHw>sm9pM%fij1AKb^^28R+zhD9i&$O0$@1*hm6m^HGFvqvuHYe)v8OIZV&DLxqn5b z5C4bF;lDMbf8W|V4Bg+KhzmLzb>%K(Sjig0J$cKOX}$p^%QWA5IDLA>%omjCwY*3* zjAk^^=R)4UxCk#b$-~orh8ncdu6%VU{o#_-z8H(omnPYmw<$HITi|KGLW6+^vHy5r zW;S6nZD6f45w<^l+d#$&HyxaWxtk7)Vu0T|dabyH<4&IMjtu-y+$kUF6XMA)<&;v+ z$Gy$)LSqYov;}>)+XpvvY zDRnQxD_Qr?z2H?LtOHeJUQVqC;{xw!1s&8|_}aO&2Uy(SsWI@ACV~^_rQ(0mIkfpJ zo3#;Xzp6%No{0EzedQx<5P{yoT#ZK7rqV9bciCR(sPkP1AN8?`1rFUWAR6=@S@#kP zg4{p&;RKr2Mzkv<8dO8xzpjI@^=RK#IOfq3wjE~sE<5Ai(mi{{XS1vYeys(tu0Joy zMpTQwxtIbj@Qj*#@&=_;XCINT2Jj_kg)e21)i&bwh`T4bH^KU-sSLH~v72dn(}X|G zgRT{OPz_Ofu;7G#MS$>Tn%y5paSZ*{t_-j+1J>Ps(d}AOybqtz)uidn*(v@LY72lh zpl=;D5lQF{b-$#8;@qtiWcaa#(Hq-JT2`FD>PVlsF!0)x)z^N$!eNIL>mWRJg!1aF zji?P!It`Mg>9)hAhAU9wk)B~l;q?E~ol>dNq^Y~~VAD4z6Rz`sIUi=9UEzRZ1hG$p z+|xMs&mT^{CeN%*uUT-asbqiaoAJZR-~zN!YwMTIi1i z&9XoR#|L(0dLRg#q<&Dr2`;Y+6qrnd0C8ahCEP#Eu&GdrSF zKu}JA%e#Yg(+2$&KvZVY()s(Iv(Jkx4=UPdL@bW#P>_yCKT~Eu*RBp!^k!SXz)obl zE|5PAEn3|2xT)vnzF}uYo4L&vHuI0+@9iYKi~-PmCe}dgZr@}Tl-cwwtCaPbCinMU zqY!%deZ;0CL-b0Y7OU~I`)yAUi1-QJh%_)h#^=Kqyu6)#5Jm)22-fKJrV*Na2TdTS z+!spt%+4M=TA<0_)RC8exllQDWWslW`JosooSIyEavrcFqknumkhzU)p7r(%g+txm zX7jebX6`LrM1p%C@%fi+#EZUw35)x~s#QaU{)l&Bp>RPZ)53%Do6&em^n1G@?sS8# z=ibT97!RlhTB*jCi-sMp`P^$fDm1cY6_o-xgz4HN0Aqi4*rQBUHQDM_rEqy1Z$_D^`>?= z-#PsZ(|jWea1$l@D|Y!#X|P*^_Grw|*gt(JuVIm^LEhjsWAXK&e$S8U|3@{i;Qe5# zN!{Qz-%c>U?7wVBPV;VVD;fXS1RPWsa4f_ta*OGWzc-LVMX`N~VZXEbD=Sy(spRF@rS{7Y;QE*z<9 zwh{-v)#SX_Vb|{7kQFqnSsOHEz7yjQZ&K;}5(31!s>B||l%Kl7AtWAWR!c$5lK#O5 zS@e`!U!n?jCK6254qGF)7gpr#j^P4uQNnZB0|OiMhfd36ML!T{?jtYX@f z>U?Gt3u5)sIM*q*d}HXzw6$HNR;LzseyoSh`q`e2d_9WX&tC$xfqwCrH!)l2#dcK* z?}|STze337KdDlVY&e)d$1Ey6oF-;|0se~HBQan~(L>hO9)3(SL{KVx{5@b%qdv1O zHZ_jw&-+CxR-zRL&gH1EphO>tRitr9 z6En>AwCi%5q6`P1h3TJjP5%S7Luy|>rLsO7zMzEu`aX_aTL@}>g_)5>5##jtw{>i{ zKFKr!g8II*A2FX3extU$s&w^c7tfl5o#K;_C!mife9o-`#=5iP@8D?jQFUVzPo_~a zG7orRJK^Kf^)#PPTthLFkuJ~~;Jyj`Q%uDS3p8=j1OYjT&QBrP?$gKeJ8XfBSmh^U zzFs*a>H#=1IXRh+S`sWAkMgz6G?28V0^i~oHIht;G!9Sy7`bIJ{T9-ue3TOJZ1s7y zO->DwRvS&E5=nKTKH{S3lOU`+!xs(fkKm&KNUQg0c`AsXAh{iLrKH&J1(3aWX38{u zt*zUCu5?XKZgkFFTkeLb2-q<_`*U!p_tux9g=506575#^Mw z7~4p(8#bcZim2bC|30UaSXB@)lEz7%EaWFUV*}}n(*6eByabZ%)j?luJ7-ab8U-*@$cTqvc|YG4608K~`t1pK~M5Q*#i;j%ywD2pguBPHP~N zw9^vUhUJ2$U4q49Mq=n$?|@r(QF3b5CIcP;XDZ*OT;NO z@zRBxfke}hWuZjXoQzS{mD|xg@ox8$6!z+Spv(Fq8ro4=437plV^x;Nxj4E2X)b^CHk+=FJJMA|ua%H_5B>j=^mk&4iW@BE*>LKsgW&VZj?Ct0@G@>u5CW$_;14 zkRPIJ+9aB>9=vRvTWkEBmHA7}TsfIaJF>s&`S2uCqZy-O5JjmAE2dUNVL?J4y5Jyl zaf5vATt`?{chD%WVHcMYMm|9N&%=#Z!O= zy1o^IRW(?u4o$jTWYxNPb>~|fv11m}AoT213K)ONv0*l=;L^$Z<|c2-agr!_AdX+! zosurqybn*~Xb{QaycV3Q=Ll(vjl zZpe>X@Fy=apuuJWe?Kaw&tSZ#K?W9fsxEr#%bu5!sr&J>!iAZ@XmM*j8GN-Hw z*SyH+Zhh(OhEXHUMUZ}}n{Fw?VYH$z@a(wO)|T5XEd$5u_Po@L^@r;Z;CuZlB8cUn z8`tCQjKnYVSRV!tOLjIwdfQX6ua_A5Zrq}Xyg@vnCCDH*veP~Kg|T1je%t(Y$k?U$ zR=Xyu46cxY-6fm`nO@02JY-ifjFt|iXI}UuD@NkYkn7X2bSL7o%V!@li_EOBqg}iV zR10+?iCNN-UDhgCAWlLha}3jH;S^M&SV;JKx7cK88*e#aFpczbdyrpMB%iQgBM zc+_jD<2IJhk4h}_Lv8e|e6pb>=-gPB%r?XEku5TLjHRWHL@g^mpA05gZpYSeh)+Cs zfz;qJ9CPw*`p{K2@|03-@Yo%c8raout0iY2NfjP8W_lIkYH66e_)PMh7vjCYcQDh} z+h{c1tF(VcM39pWlO5(6_b+*!YBB{EInl*CcFc6S3o;!l33T%(%+YxaH*x-V5MzB9 z&9ibhXR-E42;^3tD1>)`9!WxUm?mmT${_2N#GO@crZEnY;^su`7C8BL=R}66-X;O# zE|w+NU=fkgBi-0NAUnWttYmTk!x8h|&gfk@kO=S9JT&6dd3yM@L&NOE*JL{d6OHU2ujg7rfc}k6ov_a>SqqCu6` zSH6-NXv4(jRYlw05_JWh;&uJPTQrwwdYW*0d^B(#9unNBG-CR0tBQ`~*S#~D$wP=<9AZ0^5s%#?2%AaAh)$Zt z&_)_POZHRAP*=!iu|X;*dp)WWMlNTF`1AUR z#mX#{10Z=>%Lu`*d{4**T@7{yY6z4Tu3#|cb1aHkt7l8Vavy0Bi4u<(w^Kq*klk%ZBXR)-+%JVA4?e+>!hH|9#ktc3=Pf8No)|rHkX&x>odt_v#ygI?~m{4sFULMhwtLu-w(ot&&2h4^$!t2wRd$Hu&lanLmGPjv$y?Z^GxYcf71N5WLP#+<7I+dO%D-m9z z>|IsDwkHu32Df=OfHHIDR)A;$Oo8O!DB|~rcv*2wRcx1a2W=ziiGi?f6X84Tz!GC=aOkPo-H zaKn?VMiO?9<-%wL`KFrY#+JF8UP@bV9^PXxJ2?f|yN*^fhJ|4`o|>vj;O>T#!}BbSAbH?=Z-+W zL-2C2`6!@@Y~QsU{8SC9#+n?9(zh9Z+%#KiITPNVk;mWQApV|q(ZlDM<#*?)VKHl7 z%()3TjbQg!MGr0Y=H`hPC^1nb93|r`yxkP4*@zYPD3LYi)fVD0C^0{^qzkVggJPH)Yt#7Qtv?jbeW;Xs%A%a_YL>cLWL6PSy`heLOGB zuv0+Z;y;>c!V9+G;^(05yutmD^>lfW{jGWds1g(XO5=Qen8D*lL0s#8d9gdM76+8l z<)Mh~0$h9im{ymtQo^`ApIerLbMGERObTVajPGi#t#aO(a9dKZzQuZs|Bm)RFb7u8 zXAAujoUxSZc@EcOLq3;fCvO<%BPh=AkpV;26LLX2o1(mZ-a?1PgmzT2U9@e$M4SGrh6zpvVE0kqh@D{QC$*9t4AW9GVZTs3Q%hs@}xY@C8um3r;?6ZI{@ zfi8ifn4yc&WSbmZvJ&8`uq?5#kvmfZQ}gJK2zvX-jq(BhNqbzCB#;k)3h)rt8fL;B5B{n%8~%cdMN5j;<%uId_Qq- zZPO2yi*t;iJn`fc_Pkbt%{a@4ywxkt8;}&6)>iV>4d=Wx;GETx4K1S8-DFy@yF8d} z*G<0ajB$_I)-(^>spTmTW)Zr{R4q4oWUS!kyeY;B!69JBoAh&+gu@|&*+o~5N`%fh zE$F+{+hrA^n)#=A)2rAq;?i(FXP309bY0quaZcFlDAk3-nvF$PbBV11C?1`R@tPNq zJ6dM5$mUgcLAT{d>|%yIc%j%BN3<1;J)zb!z9U4xJ_-api$46ChDJe8TqOp60B^Qf z8bNPWT6q56&N|e2?{|0>;+;$jNDx+!$8$ttdtUS@3@>+A)R6lv!GgOPqlHAUMb3JP zks%|OQ7>(gsBgpH<-m8o^i-<6tdjpltEmrfd5A7nmF`Z7P{5!!am=4snLZFrhoJYJfXN&uSt z9(MlUcXNG~0+V+9{5#zdcN%~Kg8FiW0Z13l*EeH!{|Zf+@KMyN3T2s@GR}*|0Lh;I zqeWqDn&Gv7v?#1m)GFYe!gmDbe)XIJJ!3LO0y0q+wVwve*4vm|yCz}Yq4YQIpLpfD z$_~IHK{Up%=?_1A%C{|i9lekO4geu^(zosTSZ8<0QhJu*Cv+k5K|s-?{!@~xX;r=@ zg)q`Xy1wo3t50PF>bLXnRS<)bVq2j3(qJVrQ4J=f$+q5Bt4*}x4?P8PS8hf4e$d`m zhKjU=JhusdY08|HQJK_lxR%&uI#?>wH$!mZmf6uOvvP=)R)O6N zFLWsbw8QX{4x3Uwp_(0i362js>lGDT zKtB)|d3$ykHdPJ-%cPj{VY7&@#?6B!*@^D~wrG%mjYi^Z8T>dp(Ruw(v!r3~Bw`AN zBpyo}a^a74!xNLcs}Y1oxFM^d!ok23@uF@M!*7VaWB?u~Snc?HRzRZ9%qem+coikM(ZS7Gv0FOg)3Ccwc-nQ7DM;Je1R(pQVJ)>n=~(UuF{6 zchqld2tR_%I%CH6+~tC`_+D2D(ghV6-E}& zCx4w(MT@FqEaV9ys{g>Ta&Mnw{?b~ti1MP#EHf`3dt;}kWmKnENCgxttaLNzLGo12 zbUTq@`WT|1c?1KB7M9f6>4TkV3+*ThiK&5zy&%#&sp-=1AmIK`s(EZp8d$&JsDKM0 zLe=4}STB~7Pk>lBy<}ww!}4;0O(9z;b{x=HoF~8G={Oqs!yl+qv%9_8>xH~3;-qKw z7DIIwJ!04hrC>o-y62>QT-_xJsAFFZbo!XiXx>gh*1j-s7S^+k!#&?{RUxaSN_a;N zp||F_K{IwWzIS(-2YRPk)=41_TPPV`V~%1E4* z^Ke3%aPt1l#aUYWJ3-9|zknL$^>>rGOf zV3O^-PYVH|y-=cj_GAx41jm4ri%c5YSPS$;g+ml1`00%KX<%oBzut;r17@LA%)I*U z)IX`LXL`Q;faw>jXXZ0J*8ft@N)r5L(#z{F<<=4n+bRAUq2Ejjg#|P~gZAteXC`Kz zY>q$7Rd##>5^u)F;TdOWKv`WR6lO6tp-C-)Gy%0JD{alRBNRJ`p!n)&AQouOd~Op= zi%8fh?GX=Hsqhe71KNOI(aQupf3~}wzL^#!x7)+eHd(1Fk6xbZmGbkjN}k~6fFPob zBMN|_`O$6da}~s$p3odauj+-cav<}Xyl`=h8}1yooHUeK>n@zX0t%im46O8`~-Xkj1Ec=GBQ zE+2o%zVM7=iE?z(2!;sDo46Wf38RTaJ5Yb45Z3hq>M|04j>aumY`l}I8!r|Uhv@FX zzgHR+O>-|iTbp5JcqB*5PpCT=(EW_5(+HNfQ4e1Hlq99D%D}$M3l~aRFL}@qka9go zWAD!g3JX*k#!os#3|9)_>#czrVB{Jt(TP03^+Z{Apm?AgqOl5Lh1^n}L8?_bDI>ah zqQ2Mk2l;dfJj+lE%e^qf5RAFa#+-P8AXL%LOx4@-a}6F_%KSw5Y?0Dl0>BUwm^K~O z|3MFj1lqYS=@5VxQdZOthwZ~Yd2gv@Ye&`OVK*I4zw-$JOn-3WT-CP8W}!_kNFmZ# zG2ogXw~GWog{@=nr`p*+%8LhgTAyP+RojDPT_31JAkw!@z5Rp~BbM8o4v&aAvtQy3R-nwBT`CatpU!nWd!7^8$Pxx%sDm$F88X3k)`>_1G z#+BbmfzW@|`u=|bmj3^Se^i0+i2XiS&=S|Gn=`JG4_$}*=VeFSq;U)HmI~0EmHyKw zg6e7F?e_#fY2dvDpqsz&6FgC88`pnvtMs7UK>)5kWUe5_^QEP#Cdz*(O_pAGeL5VN zr7HLnBTDzh_x@qr(l!6WAjKWzkTA2qRg{`B(%o|Q^A^Z0{m!G|+pw4e{Mj9&TEO-o z`*7BAtD*ASpI1hK*B9ekpNBZ9$FyFo^S;j&#*-8FZ-uf4vHTnu*mL z!0zdJ<1KPhgVJ~XQ=I5DaPLIX#CB9!OD^g1*7Eh{QpJ1t@DsKJRy)1H26fqn^LX#5 zvUIm-`bt)!phWs&+>fRj{s?P3s-Ix_;iHwrGV)Pr>Ar%!!!jl`-0_^}xL4aD3iJTq z4W$53{YOm~7{E-kk|0(&8S^Yu+Lvx`|49p+1{9#aRd`J3P7<(-M;S)UE!x*pgL zWOBA{DmK8`akP;5hEg+&x%QOCyO z^X8*ZUW;J#pZ-^b;|mFMFeumDbIRk3S~#tRk>BMVKY*83zYkMB1z~LTQ3bOlzpwuk zT0(;I+^eZrO!9_7z6vgCzSNjJy?f@U(doSO;bVUU?=w#KZzX8_tuZMpT z;V((}OCA2Q34kU1iwJ)a;V&2Y7f$#KEd7NT|3b!pg$IAdNdLz`@s&G5#FpyGC6ia* zNQ;N*+kU+J@0~OG-#sYgpB!2F$DtgDKW-)t50oB46VuTwVtMx`0EZ)q_(S`<=D0Tm zck-}4QR0Dn(xbQvQC6;Oi>))mz%e<%QF`F!Vu8^t80#U3gV3#vth*bcBRqz|R&OqcO``PV_(_`jnl6payyleh-EgvqbE;SH0GzhoUfg6;EtqPBu6#&OIy761`1f!ZJ7DIH23WeK) zwX;sEHbfycnF9GHPlmEXLwRXO1zp$&Blb2htT0aesNM4|z~KAh9`l^su~ z#kD{UPKAX{bZ;bz=%TW^G?=vL%y15WB1DRNgP- zHCX)+p1L2{)X2S-1-&$>idX|9oy@yjfQ|MP_%SrkRT5vIHz6u2zB>DxN4%53Z@R^k z>(gukCb3yLhHf#aI4xYoNeSGEjl4)L4K~Kw8r8}*RRE;fEhUYfljv(Kc6#f5OU*@v zbyRvdP;m<_n6S=F$P{mV2y4Xq5A!{2s@DrV$I91(m;$-FW9l9Wa@!A#fe}p#g+{uD zo{uE8YeYh7{{kxJ9nXQuQ_x6ujYxG8vB4DwW(AP!&eo#uI^7-ZR6|n;@na#s>3ww^FP>WNH<( zEQI>MCS+Nii%+=UCz@^~00g|ULcntI;Jrv2u=s4jzP){I#A%HqvB3hfR4}uN6VyS^ zY){J)jEFsP2h(O+7E^aSA&2gDG)z}2X3aT7G~2k!DMQlE@j4j+O~HbTY2upzUtUU2 z2x*wsva^Udm_1E?VA+}}8Li-2@V__0Hq$ODQfz?JEwmsb7`NO(grpIImMl?^Xdkvt zszzSuv`M`me-sYZBcNlOj*!aAl2F(O;ttFMp?FSZF-n!7wa{Fe`1rv%D(Wr45J>qi zzbv*CzLBK)^%0)~d)3#A8lM6 zs`YBtv2d|i;8NX1(4xa;WCmNxyMQz4LT5@uEP3nnq6Ohs(oT#Ed!?K%eXM-$q@$c7 zem;FlQ@fH*lLW>L@Ld$+Ur$nO;Em-1MM(+wOvt2`Q*5xI*7gKBwQ@Iqh0}QMwS&qj z4F)KEiTdpGhh~u1Tr`jGwSdTr)^6jLAJ)tSQMN<^URdMHUlu_$ox-=S6ay7 z8MhMCPd2_>i)T>J0|kzU)6$c3O0o~CASQgVa{BlG4<};Q4*&oF literal 0 HcmV?d00001 diff --git a/docs/pic/bbs14.png b/docs/pic/bbs14.png new file mode 100644 index 0000000000000000000000000000000000000000..7aafc1e3867a9d6961b121076fcdaa5dac74ccfc GIT binary patch literal 20561 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 literal 0 HcmV?d00001 diff --git a/docs/pic/bbs3.png b/docs/pic/bbs3.png new file mode 100644 index 0000000000000000000000000000000000000000..7b042d979f4ab22c0b5994bfe9c8cd2eb1e29c3e GIT binary patch literal 45853 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 E72pg}IRF3v literal 0 HcmV?d00001 diff --git a/docs/pic/bbs6.png b/docs/pic/bbs6.png new file mode 100644 index 0000000000000000000000000000000000000000..18326bbef344fb6ef1d90cc806c1ec4803a94d09 GIT binary patch literal 43370 zcmb@u2UJt-x-J^|QNcoys+1@opmaq+TB3p|BA^ICIwGP7gx-@F1u3B@h^Ulc1wpz< z4JZ&0se&{qfdEDbEwqG$BzFdX*INJH_l$G)xp$7iAenQ1?fu^JyyZ)*g_-f*T?cl7 zK%l)B&Kq6_Xq2Kp0ATrUVu|kXDfw zUW6NShf%BF0rLc|PjiC6+BjDtNRVgi!#Gdn%$+1u*})6Rau<@PY6A}oY~BAPc#vz` z)+fnrGXFo`3Kv4x`FEvb(!HyXP&)7mMSc8*#2*S6t>Av#9OX@Q6|xF?bgLgt94wcUQ&b)1pwTy?DZ%^}rRBUG0R*qOw6q zml$So(*bAym0E98ySS*u$gkaSig+v8p%ZomyTq_zc52Al=@k6zo>fEN0f`zivjKH}pM`2(e3-v)o4)yXrH{3K zY(^ZmQx!}3X%}a1aIL6vJe6378pT*>)#q0(GS(V*J06jyuVEKdgL}}aQ7+aL16c^PyEeAjF8 zNJO|V;pMa1D-o0d+_C;`l1lnqRGp2_8KBn zDammo-^G*Oidw;c%TF;&_rc!-MV86e{%p9T)?)9N(v~R58L~5uNq7E50!UjXcG?An%=8)43%lcw23BRx;8P6>h#!QjM@{|Fk(Yjz@l2kqvqVQPjVup zC?0MQ=x*=iGh$i2UpQq*Vyz?6U6tTiJ57~-2k#r9dHOQ!#;(-5IiRM?rn3?sM=u`8 zYVmRUsW*zO3V%ZMe|XLNI}2&OeBKx4tvj(1=USU@|5An#_C?T1c0Me+J-w|g)cWfD5R%=PMePJQmF48E>V06Nz}|dhl;J$%#JJAJ{)O#m7VQd6vk~c?U%a#$^Z&|@98(uMG7ARWq7 zm4BzLwtk$;;fU&pUrD7cAP?MG`|*9 zj6mGk1BGG8_`ZvWxH7*}Pf*obuxh}zNtMp@>0K;b7(DqYV+TY1fp4{-oLI&=S&Q{5 zao;u`P3`FW&_T>8neJ;VCcXqU>e#Wh=9)N{v1@9z@x6pjiMX0NM~G%BOXLDuQETk6 zLY#Ts;cIoI^u;mdn_g{)E?vRa(k&=a`R08UKEFJ{Xr#sF8ZKBA&cH(KH~U)*tnF!o zi^3JmHmWdteTD2$(Cf2yMJV`a{&??$EOMq2`WS4Fn*c|PccRrpvErBeV})i!&ehzg zm$kSUxbWb#+z25Fdad-4+u7NJ;?(rrI)@M0M75-oHrLydgu7y(q!uM?4KDaid)J=E zb|$Wi5jvbx3SYCuj~6(@pDo{+v3zjay(iVs99bITU)tH=xuhducrZh3_+0iK_5=>^ z#hz#-zM%(AMXL$(J64xf`mF6-lOiYA?8~j5%?Z;TOeHQ$%_BHAj_hA1-w>3C{fi}WpNCB!)8<;s#)ee!#WO_Oi6WED@UT0K3)_YHFH zt5!b4b*@#}$tb%>`HA_!=ZO+4?yzYzv9W%0C%$}SxZbg@KJ0y6l{AxQ%H$xxTL|~` zhbeXyRo7p;t?+#3J@!b)Oq06iY9eH+BdA#AkaSqNOxzr2>K`tS?pY(dc1Ar+^%QD6 zc0;!9XVauvqJR9H-<_zVg1^51LXDY|c0FT}c8qdV_4B>IVgc1Bb{7!&D)-DgK3R$e zE0A@r?v4smmNIr}+u%^w_UDq1%&@5`-^G1@2=w9{wrAIG&Qgg5P?ASxrRRZ!tUN9= zW{5~y_2naDX_2p2gG8c#Oy{qqluTp~9_4aizaploI=q9gRyo?&xdvvpTDD~7i-lv^ zDVE$^Akg5>YFLjl^}Vb`;>n(?!}Cs*o>*brC!rYE1;hBG$|@LWW=RXqoiZi09`ug96PJ)VF6LYH4kU84buXEADFFDhn4-|rY8cn0vs-J^uX=b~4(!(~V-Z}nSxr{wIp~WW4e9NU)qCdL8>&}&lxyuJ z{+(g=r}F}>xbi%?`0#1F+J@>o#@UgnWD>Tm^VFR$=dwM9Qd>&g=iuB2BAoqKo)mA{ zkX07eep1E0NI1#i7yD*mI>t^_@1#Bm!7d>dV#x@fwT=qmV1(POsN<138axbkYHxeQ zj-LI+VaY!bHLwG>@|1jkwAhBb$TvTqqLlD_keQ8vu3XROxoWS(np8to(pE;I?;)63 zM5%h_r}GC7C~#-*hNV=5Ms;ge(sKe$1om+>Nl@3pVr2~pdz}=v{otS;7rs(}I@%n0 zQd=^N`)j;g>qiBMxlH%FvKGNy@y*$F8Zdc|{YE+AHvJrrR8WtPf&x|~;)dBb5|UC_ zEWo0&;hbBLT3jVOVQJ|rbCHbOTQJgGUx}+^E(R~|23sKd2mUHJexYD2QRIC?+mcC^ z^o7lth_NJ|$mDq$i`KOi;z!h)E*|Ry_v^ZYUvXmJCnlnT?)VPlaQyLErtC6g!@Mr0 zEwf(ptmN#d);*5REe?NhNWmDnOmNcLD>840>g9Qi(d+w|hp={{-aoTvU$`{7!9a(x zyW}-esedqZ*Q7y;5_*;df5y}Z>b!QJC*a%-z^2wYF`}l{n+Q#*HC(>{h}ViG2({X8 zTcwVzw-RIP^TF5#C4P}ba!Xb^;abGcq2(7{gfZRzGPV_kY#XwNOn zQcbQ<-NDNxf!w=BLb7R7I|+81DcJh*kX}f5uy4yEqOg)4l_avL2E^V2uh(SQXE|Oz4O_X>Z)3&7_oILK z_W=A5&YoQveqZ0@C1W8Muizgcds*QiSEiD=a4_?gxA+WwH$F$+l#Z>;5xdJ`G2+w; z*BDb+MT4Q;PzdvmlRX3016iFI+j$|n;w2N698P}$mmz+QpJfVsZ^HoXFUi66R+<77BfO%r#& zsXAX`1CapFDg}RS(Rxm6dH67X0)Ru*w5F)eJ|)?D86;T70*+g)g)z)zE<6jYg}TJf)0WQH~BN!P&QQKYCiCM*q2T@g1nu2gAqEb-A9m9P-6uNm^H{soyLFZk%PLiYFxnlb_XBEG0Mm6; zxmnZd800lsU@LJY_3i0p8nXb{^{0LA!{kQ=VJ;l)#5fpdf8i&yu|li}j$@+@Ux#qH z{be#^9#L$wftlEeJ)-$dj!S=4A|IIo8`I>{_ob%qOiE%Ope+hx4{WZN%=+ICO5pT# zJQhld|AUqPih&wYGQ%GTPAi~X-M9|0f=b@0%5*Ocd^ZmiL}#_zUs$EWxZmHw9`&B7 zSDAB)xH;c-&{izvYKGWvw{b4(ehjp+;s(>ycVK|ra&Bm;!1=R0mlw^t*jWTXGixJ& z2ghJ}Oe^f)3u&jnO~(KRe0J^Q=RZgq1gasa%LsHvD%6D*&?fj%R|#C550;+qF2YIr zhh9?E{q0OC86H%wq>NDG+`S`UJPpqTIqsI2WB93`OV8~C;{lR@e5_-jzXas-CgP%& z`bGQ(9t`}*)AsvS)Ow_4%Nce@bF>KOMeZ2r)(4RB-T&KLpDs}eDAZ|=S1s2X8s6*9 zrX}s(`gWmnIGr_T&i?Sn=f=&bv6t2U{jku!>dHe-y9<6}W2=L%Ng`Wck~1o_5c7AO zl+JH;a|#ZpH*3{h{`Z?xDdwX8ev_O|Q2zIu{S|dq|9(>owW76s%j1_L74R5t^%u$= z2mRgJIQ#$mtp#N+hw#~VMEdbA(E+%gF=q&d*QsD$|ED7(KQ%QWGD(9{DAcuD~J>?Jf=W@>(rJ=T>AvHFQ>Kp)Ll>Y3Orn z?kLx`zqd6!k_Tw}d$Ws;f&W2U&Kn5yKYlQNHDtMp6qmF~V#HOT<|gr7PITrgt&C_N zgND#+(TEsm^s2pgSQgsVkOL|}#V1_2R9RDdNp6`?-!Z{o7TC7HuH!!OG0-o|?bAu3 zi>yBC0P;iS;tU-vX^s^J+m@RiR2}g2j|HDPlJyP-$oMB0fx@OQm)fuG@9etTsmmp` z>|fOxx+76gFt^fig!+gowphn7LDU$l`RMrtA5dO6BK>ZmugjIh(M;uP2X zo+$>5y^n)Be4Sj}neJoSR+wii5@OE_NU6`mDf!7c9TCA>y4&Jqx%zGpIv?-WJwo~V zgc6g2!d#WgSg2EQ6e-iIwC8xOcYG&25Gz;T5gu44y2Rc0?T4*JY%Z^zF5Zu;ZcT*( zt1LULwcmZ-00)R{GR7G`Xp!?+= zc)#0!4mjoCXRen-eVi1<|HN@wwB|?)ABX=A{bz5AFN74V?Wcv(qyVRT7u5B|E8E~9 zxJ|5A#Y^ z-ThX431n+;v=YD!de2)jxhmTo2H$S?RN@X|+FVa86Z$=8j6^JO9K9>t8GIn=i31u4 zSKejH{%1$IXNBaO$G-OQ@7JI0s@=a=oY?|X0S~rR++T~OC`7(2QOe0%>6dm#NQ+%Q zlCc=%z_IA#OJ6QE4+S2T=?>x&H|Cx#38}dvzuKg9_Z;Ly3sXUq93=f8+-78F(I1jwfcE{ z(4h(wm2l4!eRjS5{?~G!Nuotz?0__Q^YJiN505qcRZabDgz165I86Frx7B9C6!n^N(bJnyYsM1K?lxSJC?y<5=w zhh7WGwBcl}O|RzR_q#Jh|J&1jhjvE)w~p^nRxeOqI3ZA!g($GfLU=V&xjS?-i#U0K zJM8DO@#KKUp1!t-&Chh!%}hD*H`|UxFkiGO;9JtCX9Lj=vRh%?e=mk~WA;;Ta~c_s z0EYrSCS?eBMW!=bz_mF-LC*(!_3C0EmuRu%ip%f7=$`Sb1>xqD^MOKx`~T})z0byL z1ah0yd!IksIZkn0z5VivQ0xxD+*l*@=ju=1Ti6x!Z(8^x3IoQT^hIW#&OH)4;eMOj zr0Az0x)}9a_kNWB!waV}PqHF@Ew6=`9|$r$*e|ezC-8(F9cg2Wp?U67}Xs#yM9`Mya;$# zSNJF_{3CUNNM%>oh3_pyu?QmYi_NPalk{zCtslGMUg6;Hf*-e7z?E=c-!0qvZZJDa z0SHen$|CC<5S1jHdN@&3!GDOC=xdjk;IJn~*;6HQHW?}q#X`rhVEwv6cuj!YnWwh0 zU*k_{uY-lnH=}2FW#4>O!CYtJS2Rq#_My#O;uEG%ag63n@_)+khjAZSiii^2qOTik9BwXW zg#3um4xRzCYKT}(MhLYfj{Si)zQBuIi3&>x_*z@#pCpj9<))veG=YN%-hCT;vfJIc znLYYRiJK1!R|glBRSCI^j;*v3r}_x@P?QiBDFAV%7c2tabFAft^REFNIEu04)Q6tI z8)Mjm+<9Ga=DR^)6r211sqC`1-{#ry@dfPPqi~Gw^TCq2lCn4`B%+YELO_@+fN(Qn zYN9ZwLNGjJ!^C$&EXB=)KyL#pNpE^HY4=tK36`7vq@GE;pUJN5i8UYxauqfbFjlzU zr7Fr_N4vkd^JLNx`yeTYeK36c72nC%%=uem%Ybq6dHYYgo(-nQ@A;rfqS#IBm}RYO7+etb490UBH%(YwSv(+26 z3%!y`u3J-Hcb@Tk@QqQbeoD?Oa_KXT@m?4w4FVFnW-a)OO#N_qMhulxnc?_swF-mR zecm#Lg8SjGko(9;eLaBjRR3W#O+x0U+wC5`q>6#Pi47|CmYbnL&wA2QJ{8~R`Hl)7 zP(#e2r?kAcpOdke+KCrZn2$c+(#4+#o;jCI6{R9&{XMUxtn?&7aiGV@{_Z;i;Eo;7 z*{k7;*Ob|b1cp7sX8CmIot>|<@==xtfc-uB4?J>fUmNi&PfZLI?Q^&tQd34_DpgIU zt9MH93)i#9P_WI7m9_cv2hbnc&cD*?C_8Z=VSC)D=2ATVz?Mf3`EAcgQs^;ONs@aD ziswPeUw}Hys|tI!ce~h*wHrqE7w&b*9NYBi;DP<;`F z-A4(db^0o?&BotiG| zta`i@2QzlOGtTy(2$1PM_ZGf0oaIlccz|1DD&SF@^EaPa#zEVbK6eA{N$0%J0Jiwl zBG2lSf0xu$AJnDYWsYO1Jq)vN;^vFEkH!teZRVF<5&=FKEH4GInZU> zpoomcC4lUdCE4x=g%ao<{!Zk4Ik7wqtIV1VAD;ILkVeRJ0_#7I@X|}Ao%j0ETvsIV-8Jy^w{D#ns3 zigF;-JSWAmSL;uZnKeWRqM|PRa4U;d0a42;TD(-XzVTDbk9pa54NvcUzFzW!J^7lp zQUv#9)iFr;davdcl%DNx%XUyqe-OZx0(Tt%N&&_@ zh-qdWF<>Zl4u#FJPYnwLVsh7is@b2QltuelPNXQXZmR8d-R;VK*J|qJP7e4u@M;&d z!U_4d&f(Jc;bF$-y6p+ZNVNp<&LLsGi3~4bL7-2k1c_gdYt`9pE=5D~7Kb1WgAL+Q z2SNE?elJ8)-i@QwV({^t=_0a$0 z5kP3_*cUw~AEO@WN4iqf+CUafi%|^8y9XM?8*R2Z@2~pxnFCwjuCz}NZ%=TWYPhEA zmvMZHCaIC)C5!BR!^N{sH~6P*tfh8>B>y@T2i_H}X$>Ns{mo?A@2!TK-KJtfMzd?4)|09*RY{NAi?;aUEe^+PRfg6Mu@ z?jKboX*3^Y=WvMz_(#dptICr~cra^WQM8`%tmu11_y`R{%px!w{ocI{S>H_+u9tXH zfFtehvTieM2wFJ8x;`agjT(KEn6O>@PTg`eesOF?%!qD+ZMs%eaqlc$`WNHGzxKfv z&)SiFx8h_$l7CQ84D@g`?f(4WQ~r6IPPbZ)-%amJ5~b=p5FGEjtD-)HP>szx$Msvf zL{YxxBK~#D&j^>~v4?(Lolr=C?j|CvmSV}%XUt~6g&wC|8fuQwzCX(IEsmg4yq}u1 z8s~Xu%u122`SYyq6aW2- zqJqCX#m$=XFNDN!x%fG?pigt>$+I>NcALIzd3ibsa8ZB2bemaE85L;>DyE-mQZ{Ep zQW$=pl`fVO)L$&l<@52)BU~qM+XO~T@5|JNC52ka-QqGtRjJpN|JC@Vq@P-3Kt20> zFh$y(@gqN`1-B;R!d%gv->}ge+kGC9)^sA<#7$-0gO0JL&<<4WB2&SCf ze516+Y}+rfQYGEihiSbr)k*ZTH8a*Opcwd38JJ+U2XS7r)BSg-xN0P|4Oj=qZ`jpO@x+SJlVw6?v{F&_072a~1XC_O1_DJMN@ zW4>kcyQ~3$kF2HRjU`Q9YNrTHikfbJD#;+&6D|Jo>wI7*;%Ak(9ZKpL3EsD2r+PV2 zCFA}k`PEA*Df@M3X2Az`#_9zu+w#UN^;3S@>?a}FZoEwJw(jfCA|tq~uh`o}6lJmW z84>J4ZXceADF`7g0sMXs$^EE|MHVgnQ^WA59qVJ&{+)An-M3_#i4hx;Z+L%eu-qv< zRPkQOhl+`uU1uy=eLq#$MA>&d1v*9E?sU%g`HTC1`2nlk-4{QAQU+Wo$cg~6Vn}@QAr|hM#J&__m_J_!2tSm_??^YHeXI1F+RSq*v!#ia( ztjk-(n#%^w=2zy=+Kf`TOA;?+){6EjGlrDXe zN48*NC@+Uz-7aOQ)2?ja&Q3nT+#B$Q3kRE0=17nLfVo1YE^6J}{ubeg_inbsKRwFz z#%Um6jPE26X)|~vkUG0`JRa($ylYSYXk`11vdk|JTK)7}J4{3V(olTd*4#>$IU3+4 zKiu|Y{|Q~e1v8>+%&+Ksk0^Yy7C2T8<%A;lZ(RT-NUt4aGH#|KS;$GYHQ zgmIeje(5{MKk~Vf>JHWZB=*sM|J!ty&6P z$uJ8f`eR-DsGn%K6FV|=e!SlZDlSH@@bA{x6ARc`Qy!^_I5CafW1P@sKQEBO`Bf~a z+23+XSJyB*`4XxaF*6Gmrn1)fXYC{&*4WC6JvbJh5V~AayV*xvZsjWtOdy<%Q68fL>xR12oimR=ds!5u$x4K z4w*YC*+}^584;PD>49B>vZv)AJi3w0OdUB{wx{uYbY(rSi}U9%l(mn7ExLzxGzG#` zE9h|$=Mkfi@y#WKyNxss!8q@#NfG1=9OTMpq~K*0cPq zly+>}?a1+CEPX@|_0#Gs_ArcV`j>I`>>a>#uS@-N(MVv?MF3cuA;DF~08c{&i2@Q` znTje{b=vK)EBHog(5sEvMN!J3`_D$yG(( zlnrs-*}LjU<-Vt-g1L?r5)!knx8~x*TPbT)U5fTwz#$GvJEqrP-if#{XkNp5Ow&AJ zkx;fEo{!+`@>@4@uYt)^?@}SWmzkk{b(+xz=zAAT^a7&d0Ro4(cYQ~sQu!w%S6nci)8t8qdCa!qVDrMNy;$5rhFJp!F6k@A-Q2g;yPlQ2^ z*Q*@1j1ak%j3n&9j454On_`kZK^F03?VQ}P+&4e91SvNT~; z<0sd7)TpOiYqD<9oeajd#>v^F!(-Bz6PEk+z-^tuA@9X*9P4tIgt1QyZKd^PR_7Q|QCAgrCrRHTVuLJ{ zR<~|LftJn(_A?g->NAujnwd5mgpMJDTc-OPgE2);q1hqh=)xofPOk;W5H;u@CceOy zjnTy7MamTT!#V6*0(TGO30!3fWOAcZ zr|xy-b@k)|n(iFr^}wN9WuU7Xdki-6@6$8BzLsfzdUW$DC5KP{LVT?6+tAHrv_0=t z!h7*_o(iD>@qJ%oeLs{TZ;pz*e?DS;=-?2cfn`{YP=f@|M^Pp|F$Cb4haURDR3zL`X!Y z#MuwAj~e}jZ*^G?dgDA*xl*qdwX&ES^P*jdib~O}7UZ6Ut7Ovz@0?hktEHX%9|y3~ zUB}y`C0-n|;m`_*Gu=%^R>dLl>ca@$S}r2WB1-|GRkC$dD|Z%T{Tr;S~+ zuMBWs(=QJWG&fP8-(WpDw282c+7Lj8QEp+BEVhAix?Ij>8?;7NPkb)|64FNdxUWN7 zoA36RinKcQU132y;T;+~%}528T1(toqo4VNY=rddi5=H=*XRyt84S$~AX(Z8L)Ts z_G20@-%s2m4ev;pKBQ1H9oQ+l%|m(peGIg!#QN-B(jhSVEq6xL zT3yYH_vY-4EgN-q^D}@|qJxy>ML>zqe#3oGhE%i!I`8SjOmTkCmxgDLZF4&FG+qq@ zbt+OIXSN1E?asM;aPNUvWlMg;Ll29e_g3yxbkr{mU~gm#^0^D5MKx}Oa_hYJeV^?K1_5Q@&$d;;FMPTNqTe79y7RL_G)W34a+>MHWZuNq_XQK*DWr%5BuH&;P*0% z7UEyC-sZ%n%iQ|#$oYV~5W0B=$e7|wc>+F>JT+L45NnCIKi?WZHOeEre>9QjF~V75 zU_(B5vT9MJYlOCNx+z7yS-oHVr)0FBa(?1pphQkl#zR+@prTkr17b8+{bvZbhy3Qu zdYb9SMs6J6fxbzXp_>h35t(zYGQi5u+-S{AFE*Qhd|BOa;V}3xp!SYmwn@UU5p^QvrqDNdv2PN z0@3#y%L?2fhYQetuv}8?Ip{8>+0#lZZ^=V64GL6TQ*(mU#RUQz9^$FAJ``VeivL^4 z!9ZbNa!bC`&9KfLMG1~q_e(k%>FsR2=h99-myOq%HdrpA#IfpZ4YTL|8de0ho)3+v z59>`$2l=eG8*sVFljaR;UmxFQF8`Bqv&!51r{3UA3C$fCtU?PcWmCy`IK z!R{1IdCFKw2==Uu0HEe+IH`D|yKBgK6IYxZnmOHRL@FN;Xs(~ym9=_8n`N)ETVKXv z9qlCyEE@!pl<|*;Qg%I(I}jjWf1fvapHM?Vr<}fNR@%-4d5f!LO&8fAq|L{XkmGer zY!4@wVVA0~d#p8Y+S9Mk46{ROr)lJsQ!(O}+N=Ig;vsG06p#4P7@MRT$ahn2568x# z#$AkA2>+`?N7PFR$Dvz^k-PfW69sSWckvs=?#Y=@*bx_i_G{1|^v(c^_>Sc1w!(88 zn^TuQw;qx?L3ufbjF*mGJNdk&|JnN@Ax*lkXY#bO4(UCgfYLm;37u88-FLH*=W$l= zYT&-bqMd!G7BOC$l>CnsbB`ylWu*B{&;oH+)+46dCA)6_PI-Nj)=1+Cc<(8!nJ7t` zoBN%Ra!wNX51hkE-`v$d!>!}Vov^kA>^ZqW&^ph5fQW;fJA<-@*^TGAZNUHN2sF0~ zkR{*(8f-=4IG;Hqfac<^8E20$Ipq{pU4S_c!oQd0M5{oO2mT%0`Xmj+pn#Cy)`L00 z|M`QOIA|5)f^^!S9)Rzl-={YIKX?5 zwf#Q7D2lmJgW(@txkU+HLx9%#|E6dRA{MHKWPT>Lp{m-I@Vx}JICs|60ujY7gDA0n z^`dZcAcrFcto%i_F$6W09+Z@09>>p|)yK=Ob;K2S8ec|B2#qe4hd=9{`RAz|6j+3i>3 z%VMftf7r7Gs8{h5a$dd)16ghRHN&>xV)#qsusI4js+RxSPDi-V|m2ONWt>Db4eA@pa~(E{im z&}w^FqZPV*opVdifym7WT;`yy)dzaoS9Yy0BPm)QNn_w;~wcF(QWZZ{} zXc#D}1*q_b{OO1xjjrCNIO6}NQmv{d=g@?Gn;idwYO0yD|3*?WS4U&NU#o8Y=U{$f)LDRApazb9B@NWlVp?$-6 z1KSA2b14Gm$x0zakuw`h$vq3NwxJHm2=(G9*gsIWqREKj7q(H~8Om9@wU zl(C381bCi!x}f6W@Wb87Jemgr{B9y$ZFtVju=2XCr1E(p5oi81c_OH|Ss$y2i79j8 zHo0%=#aJ($C5xjM>T>o%TyXMZ89k{`^laXnF{|^KUzSLmcF;B+#@{7m;Z4dw)kE2f z>ML*S1PAFR*+;82VUx;$XHf*Qt<_iZ@c=?;?t|W8hb@F6by~#!N)?D)`JGP&)Fxb} z8|MzmdBEa`Ng_Y_6{sBkMM7goeY!iUTrH0`Y6$y zYF7v+iKEN@HNF!d%p1Q0mz4Ph(`+a)p6| z9?OII>B!P77FR(lVJ{?1S8d>lxaoBW<PZ7J{o8 zAmY%|FOoJxYUaV=cPO#&etypeOX^2gW-M04V5!P|a~VkJ`^|htyh+FcLL;uCi#l z3o3=oV#k}iis~$Cmv9;UB4UILPX>x+NC^q5YAP9A?vMi+p=v`Iqe)^e6n8drIEA6` z)WBHHy?H4!g@|jd8>8v+?@hZ#%qM5)a!i8C-=m*aIJQToE0SkbVtx|NrUF{X5r`l( z2aV_xY@}PhW1RXE)i1VZV#VrK)A3zFTo%C*!-mEYwHhvC)F>Nz7Bzr;?l84krcMQ)V&}Pv?Fb# zDBz40U9`BD_yZg8*SB!OBcy1z9meT`boy-TNo+VLoB!%GH&?NeVYbRsOYZ9RMFyb9ikKI5f#gxP5en!Gm>H#6>r_^Ymq0kPBZo$57=T$wwr9!*N#EXUiz=)S z{!x!OwG4NA-C=@?!I0L;E8Lu+5-qlq{eE)m66l@z4^|-=?8onY90N# z$en+f)}dAbjxSr`SzQK-{Q;}v3Rg5(dK1RZ5kx!U>Oo~B5yF6Yf>DjS zW5eOK6e0XsweQ2gpdjnwd|+^y?vu68>wmmm{zepnq;W^G*UXQ%$$gx^K@!YWbW}7$ z9@!{gWIHg1bW{MfJ*A7XjTmQ-dFL>!-#K#AtAI`XnHc_kVMD?&I}Lmkd3-2%dKeR) zuJovm8p08GES0^2Y1OH>u{Q-XY_Hs@^M_N`JJ+>N?B`UO7IXdH&Y*K@FK-x#hds_T z&Q4BaYdTKvGZ@_XHfMEINXB9uIOdeZVmKW^o{Zo#XIhs%Fyq$g;D4}Czuj}9X|U&1 zJy`J^cK;S?ApupToNChaCP}}8H~v_*`$c z(?C5-!RzqEQmh?k1K!8}Jy#j7f*Zl$JxmW@Hk)pVA6`V(hLo>7DFBk_DMd}QNbheD z9OGO2F^68I5}@5($-k8XQ1X^+#vQh@GtS(daP-7YYJv6re9z}kOEEm(LpK9Pi%8x`KH7{(pEClknW1A6M_-+KLsOt(o8U;`U>2>$AWgfCvN8RB`2{6*cx{%o!}yir1I zVHa(S^86WZ<~m%9qhawXNdVHX!G;RniL&JOXC? zoot*FYEFC4*s23oZAmZNe^%U_MJX;CalN?CpK)BK`&0_@W=DQUkv>642b;6fumjd! zTRlq8WWxPFck-Qz)BreSym&B)CjeKuD0^YB5~u@a@0$gE-z(#g)AXWGFgH<4%>z{N0#=6``<*&-TE>Fw?4iw@&ZFKB*cU+W`dO&tBGs6mmCA{J|f-3xbLd zQpc=xtJFWl8)aOB#3(00Tl=(HQ%`H?xyf2p-c#6rRtmkKl*UhS|C$Q5Qmjt4=M}Ew z8xA-u!1phI0v7|lpM5MS>f%o?>(66$t@Na5kfnphhb&BfP=k0loZl`oZ)YPrJtp;B zc93#Pk>=5BhS@c3{s3#NaY@x} zy>*hZM0_+W^Atfhz}EV7tFn6xv$gvpVlFtuzY;_LK=i?c1N-yO3@)+02H5u|iD)}* znRmdc?bPQ=ZBhyk!;+65_FH{rQf{WT{Q4^TjYLL|7dO#{4wDCLudT(r65Hm20#{(m z2~ocX)B)HLe3!JxD+_Y6($l;Cf2eXDIKLx=6m@Y`&eQx3n~JnqZtt~H=cULeC|I@M z<}$}I+k+T_xi7_%XL-J>4kv0Q9%_EG9K@b|BgciOd>`g%(=YYrHaXK}1La!Z`^O7p z#z5}~+-oPAWYSGCZY{(;U7{^3xh)IkUfiQKZ9v?qKfq`!6lxKbzWB0#6qa}X@s5{a zRdt!!-zl#yLWFLOR&;K2|5MW6^x5bjXy<*7@c&;F`2Ww31pJp4z_9}yi%wpX21&|J zg#S5!&}1gl4IGhBV~?kX@q-c{E$JVOQ2T;N(!K~x7PxYUi~y+g-ExTI=rfjZe}`6{ zI~Zm=Ki!PV2Q{o;kbX9eWg=of|K^SFkyWPNiD#4jEq*&P2LxlLGJq5haAlw4mO17A zcgKS0^PSgz)7iuDV6wmU|NiwM0EzsGYCLaym{C^vzi;zD9OD1vb*c>4XvlgvUda6S zZ!6dw=rqz+$id$!VmeT8Bqzlz*7|XL3L#9VrmI)oQ+G~wPH9dESiiO=XQAsOvKBE? zgev5#kd5gy49qb!>dl0Gq<^Uw&#ps1fdeZd<`FCJmf2mRUF`YY_={@u3wqIB(TGTd z6(hoI51?8!i@cvS1X%6S5XMCKCxgg?g13@J z<+!5qz0U*;O%K=gpNKyk-zst%Xg?SnBnV6tHE

jYz)iIjcTkiof|fqd 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 literal 0 HcmV?d00001 diff --git a/docs/pic/bbs7.png b/docs/pic/bbs7.png new file mode 100644 index 0000000000000000000000000000000000000000..79b0e71c2a68e56619183784a47738d6af3d1021 GIT binary patch literal 23018 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¥6)oL&HV<#+16?ax4n!Xwp|9dTe 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

3<3 zid0Tzj?`i+f%zsWj;SGXzeb5TG)DldraEOw62=|9dp<39)}`_zl>*m1Fu~Yt1>bJG zgCy&Ov&(`9!!J*C9%<~%9;SE0j`BQKI7-O(0F3r@txQQ|P9=1Th;E5?4-6I^|32;0 z`0|yQ9j`FDH%u0J*49Y;p!}%?>ZPmduz9t}FW+0HavL0;G<&+(U?hjBLFJuHg+Fb1M8UCKm3)|$_+t4=!Ve2s-Zr$gYCO1S zv=I-G4D`z?a!R=0q9Ra|A0b5{Y!p*6nuNUdzBE5l;*;P}qFiQt{uR>8V!?|l<0ePt z>g`~9uwu3GHuL%8NJNaRfoG-GL3^rYOGIV`Pa)1A6hl|_D|~Wh62=~ni2JUqplr_w z-A@9!$G7|z=E&fD2U;2}&hn7IeAnlh`P`9}j!F7PPuUafYA-!jrdqut7b-u0y|2?v zdwJ7~v||wjEIR%ucQ6skMA2-GkjdA!%6pe6xYK_Q5!hJ|=F|XX&yW{ovd)R!dNEI0 zVBgy-dj?clZsJX@lG}Sp6|Jz7Tufs(Iqt$|zELI$tPH&xk_EOg+IzHv%1b|U%ts?c zvg+Q4*-eKV-)i4h)LncxAlJXK1pAr~GrA>O$5$LHHB4|Pm=7i2M`1cx*w5_!2RUXn zo6-(F0O0_C&ksp6X2mSb%9_@<3p3>J z!4P&awJiJ+3wE4~ z7AD^G&r3gbAB_7SQ#R`XW03~mrOv%x8s^6WJJ~6>KRiWLYjzNNE>kQcM3Prw17m~L z)mVBl-Gt7ttvuJ+q=B15>q9w*)rEt$98qGZJQ6uo)s_)kB~CRrURG(`SA`iyy_&QdRuuBPlA@idM~)tr3< zRG7x`_=L>A`!25v)4&H}Ggg;H#_9q=js5-Z6w_qAM_&OB4iIC}umSz+wXXmDD%ro@ z{C`zs{1^HDBHw?Z7X2?a`HM~dViS%3(zy-)zm%1`DLx7On$M?Ls7(^UJSYWf>y|J6 z!$Fw;IH&TT9Ki7j4$b(NkG%YU>MHU`L&V~7piUDT;t)k2;zAdHZ%hDAGJ5^#;0OC4 zq&S^9h?WCoL=_?GqRx#h@de;$DWLpE;=sV2SIAP@v0V9>H!BL3hkk)tW0eJ!N#0c; z%CJaG`5@C~D67K{5^ja=YbRKf-U0=pv!u4Mp*#~o1Yi^z9aqom1PT4@p~20VgKf3f z9_O1n(C0Os;_Kd9{CbFC-)P9c`7%!4Lx`|gpVt0xAY^dgf(nc{Y}MM+>1@Iqtl%D#G6n^ ze3bL~#DR-n)X|47Q-1B|wuA(x+?bpj<9VaxPLXjeKAG<24HIyzVl>-0i6WU!Wg|Hs z{dV#M8~fczJRu)xmwzbhe*Cl(2ph^==npCIa-WNMxlp?%3k;%qq&nGAj()7t^47-bz6Y>98g_; zdy4{875yY_zFxTUcYF%*AuC4=zM^5WJ3aO|2i0j6$kx1@K|2@7(0h!~27 zVG0Q8;9C^TL|t`|r71NBT6vJgXT=QwQ@p&qtPO1^@9ai3#D0Bb?YF|K-(Vc%BF@X& zw2iDgF9cT*I*380g`QbUNZs$A8-geg!s?r+UWVSFY{ewr0u`QB=)B^iYp?^gKbSOl zS2K4X$#|}I{(6oORL*`4rV#oottI}m^`;2B;NzyU6=~oRILj|ZbZD$iS{u!%LEO8H z>W|#V zKNz`;VrFppC7^G*DqT)w>Fjz^>JzY&3M+PaJ9rFZdf3QfqH;Ii6otORNM7nudI=$JeEso@P=_@TM zlYOE9o%n&B=WqA@G~i)=>!%Q+!|I>_n!E>Z8A#j2E;zzR4S-J{pHa!9*YWFBkGXJi z&CJV;q_^|oxqU1)AAj!%Ia z1$F8oS^~Rdt5OGc1r*~O093bUS-}M{ZRu;ER*~<@f{LL}e4hai20tIJwDq4I5B&d$ qR#dC#Gyk``&xs+urxR>;J89{nzSRy3XO8oqf)J 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 YB6rQ~@1p=Q+zQukJ-(^fcjD*&16Rto#sB~S literal 0 HcmV?d00001 diff --git a/docs/pic/bbs9.png b/docs/pic/bbs9.png new file mode 100644 index 0000000000000000000000000000000000000000..d5946b8d8b3335f886a141665722aaa6a9970279 GIT binary patch literal 49109 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 2: + try: + port = int(sys.argv[1]) + except Exception: + pass + +if __name__ == '__main__': + print(f" * Start prod app on: {host}:{port}") + print(f" * Debug Mode: {app.config.get('DEBUG')}") + http_server = WSGIServer((host, port), app) + http_server.serve_forever() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..9657184 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,39 @@ +alembic==1.0.11 +amqp==2.5.1 +billiard==3.6.1.0 +blinker==1.4 +celery==4.3.0 +certifi==2019.6.16 +chardet==3.0.4 +Click==7.0 +Flask==1.1.1 +Flask-Mail==0.9.1 +Flask-Migrate==2.5.2 +flask-redis==0.4.0 +Flask-Script==2.0.6 +Flask-Session==0.3.1 +Flask-SQLAlchemy==2.4.0 +gevent==1.4.0 +greenlet==0.4.15 +idna==2.8 +importlib-metadata==0.19 +itsdangerous==1.1.0 +Jinja2==2.10.1 +kombu==4.6.4 +Mako==1.1.0 +MarkupSafe==1.1.1 +more-itertools==7.2.0 +Pillow==6.2.0 +PyMySQL==0.9.3 +python-dateutil==2.8.0 +python-editor==1.0.4 +pytz==2019.2 +redis==3.3.8 +requests==2.22.0 +six==1.12.0 +SQLAlchemy==1.3.7 +ujson==1.35 +urllib3==1.25.3 +vine==1.3.0 +Werkzeug==0.15.5 +zipp==0.6.0 diff --git a/super_bbs/Rocko.ttf b/super_bbs/Rocko.ttf new file mode 100644 index 0000000000000000000000000000000000000000..2f9d55b91d4fc7a938ee822c4dbc3fa21b8e4eeb GIT binary patch literal 52372 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 5: + raise LogicError('发送次数太频繁,请稍后再发送') + else: + send_count = 0 + send_count += 1 + code = self.generate_hash_uuid(5).upper() + send_register_mail.delay(self.input.email, code) + # 设置发送的验证码 + email_code_key = f'{session.sid}:email:code' + redis_store.set(email_code_key, f'{code}|{self.input.email}', ex=180) + # 设置新的发送次数 + redis_store.set(send_count_key, send_count, ex=180) + # 释放锁 + ret = release_redis_lock(lock_key_name, lock_value) + if not ret: + raise LogicError('发送解锁失败') diff --git a/super_bbs/controller/v1/account/tasks.py b/super_bbs/controller/v1/account/tasks.py new file mode 100644 index 0000000..69f9c8f --- /dev/null +++ b/super_bbs/controller/v1/account/tasks.py @@ -0,0 +1,34 @@ +import datetime +from flask import current_app +from flask_mail import Message +from super_bbs.model.users import CeleryTaskLogs +from super_bbs.core.extensions import mail, celery +from super_bbs.constants import web_title + + +@celery.task() +def send_register_mail(mail_addr, code): + msg = Message( + f'{web_title}注册码请查收', + recipients=[mail_addr] + ) + current_date = str(datetime.datetime.now()) + msg.html = f'''

欢迎注册 {web_title}!

+
+
您的注册码是: {code}
+
+
+
from: {web_title} at: {current_date}
+ ''' + mail.send(msg) + current_app.logger.info(f'mail send to {mail_addr}, code {code}') + + +@celery.task() +def clean_celery_log(): + CeleryTaskLogs.query.filter( + CeleryTaskLogs.done == 1, + CeleryTaskLogs.task_status == 1, + CeleryTaskLogs.time_modify < datetime.datetime.now() - datetime.timedelta(days=10) + ).delete() + return '清理成功' diff --git a/super_bbs/controller/v1/account/wrapper.py b/super_bbs/controller/v1/account/wrapper.py new file mode 100644 index 0000000..f0adb25 --- /dev/null +++ b/super_bbs/controller/v1/account/wrapper.py @@ -0,0 +1,13 @@ +from super_bbs.model.users import Users +from super_bbs.core.basehandler import AuthError + + +def check_login(username, password): + user_obj = Users.filter_by_query(username=username).first() + if not user_obj: + raise AuthError("用户不存在") + if not user_obj.check_password(password): + raise AuthError("密码错误") + if not user_obj.status: + raise AuthError("账户已经停用") + return user_obj diff --git a/super_bbs/controller/v1/index/api.py b/super_bbs/controller/v1/index/api.py new file mode 100644 index 0000000..01ba42e --- /dev/null +++ b/super_bbs/controller/v1/index/api.py @@ -0,0 +1,123 @@ +from collections import defaultdict +from flask import session +from super_bbs.core.viewhandler import ApiViewHandler +from super_bbs.model.topics import Topics, TopicUpDown +from super_bbs.model.users import Users +from super_bbs.model.tabs import Tabs, SubTabs, SubTabFav +from super_bbs.model.comments import Comments + + +class IndexMixedAPI(ApiViewHandler): + def get(self): + data = dict() + sub_tab_dict_list = defaultdict(list) + for sub_tab in SubTabs.filter_by_query().order_by(SubTabs.sort_num.asc()): + sub_tab_dict_list[sub_tab.tab_id].append(sub_tab.to_dict()) + tab_list = [t.to_dict() for t in Tabs.filter_by_query().order_by(Tabs.sort_num.asc())] + for _d in tab_list: + _d['sub_tabs'] = sub_tab_dict_list.get(_d['id']) or [] + + data['tabs'] = tab_list + + if self.input.tab: + tab_obj = Tabs.filter_by_query(name=self.input.tab).first() + if not tab_obj: + tab_obj = Tabs.get_by_query(name='tech') + else: + tab_obj = Tabs.get_by_query(name='tech') + topic_objs = Topics.filter_by_query(tab_id=tab_obj.id).order_by(Topics.time_create.desc()) + data['tab_topic_count'] = topic_objs.count() + topic_list = [_t.to_dict() for _t in topic_objs[:80]] + user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter(Users.id.in_(set(i['user_id'] for i in topic_list)), Users.available == 1) + } + last_reply_user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['last_reply_user_id'] for i in topic_list)), + Users.available == 1 + ) + } + tab_dict = { + i.id: i.to_dict() + for i in Tabs.query.filter(Tabs.id.in_(set(i['tab_id'] for i in topic_list)), Tabs.available == 1) + } + sub_tab_dict = { + i.id: i.to_dict() + for i in SubTabs.query.filter( + SubTabs.id.in_(set(i['sub_tab_id'] for i in topic_list)), + SubTabs.available == 1 + ) + } + comment_count_dict = dict() + for c in Comments.query.filter( + Comments.topic_id.in_(set(i['id'] for i in topic_list)), + Comments.available == 1 + ): + if comment_count_dict.get(c.topic_id): + comment_count_dict[c.topic_id] += 1 + else: + comment_count_dict[c.topic_id] = 1 + + up_down_dict_list = defaultdict(list) + for up_down_obj in TopicUpDown.query.filter( + TopicUpDown.topic_id.in_(set(i['id'] for i in topic_list)), + TopicUpDown.available == 1 + ): + up_down_dict_list[up_down_obj.topic_id].append(up_down_obj.action) + + for _t in topic_list: + _t['user'] = user_dict[_t['user_id']] + if _t['last_reply_user_id']: + _t['last_reply_user'] = last_reply_user_dict[_t['last_reply_user_id']] + _t['tab'] = tab_dict[_t['tab_id']] + _t['sub_tab'] = sub_tab_dict[_t['sub_tab_id']] + _t['comment_count'] = comment_count_dict.get(_t['id'], 0) + # 获取up和down数量 + if up_down_dict_list.get(_t['id']): + _t['up_count'] = len([i for i in up_down_dict_list[_t['id']] if i is True]) + _t['down_count'] = len([i for i in up_down_dict_list[_t['id']] if i is False]) + else: + _t['up_count'] = 0 + _t['down_count'] = 0 + + data['topics'] = topic_list + data['user_count'] = Users.filter_by_query().count() + data['topic_count'] = Topics.filter_by_query().count() + data['comment_count'] = Comments.filter_by_query().count() + + today_time_start = self.strptime(self.get_datetime_now().strftime('%Y-%m-%d'), '%Y-%m-%d') + today_topic_list = [ + i.to_dict() for i in Topics.query.filter(Topics.time_create >= today_time_start, Topics.available == 1) + ] + if today_topic_list: + today_comment_dict = dict() + for _c in Comments.query.filter( + Comments.topic_id.in_(set([i['id'] for i in today_topic_list])), + Comments.available == 1 + ): + if today_comment_dict.get(_c.topic_id): + today_comment_dict[_c.topic_id] += 1 + else: + today_comment_dict[_c.topic_id] = 1 + + for today_topic in today_topic_list: + today_topic['comment_count'] = today_comment_dict.get(today_topic['id'], 0) + + today_hot_topic_list = sorted(today_topic_list, key=lambda x: x['comment_count'], reverse=True) + if len(today_hot_topic_list) >= 10: + today_hot_topic_list = today_hot_topic_list[:10] + else: + today_hot_topic_list = [] + + data['hot_topics'] = today_hot_topic_list + if session.get('is_login'): + fav_sub_tab_id_list = [i.sub_tab_id for i in SubTabFav.filter_by_query(user_id=session['user_info']['id'])] + sub_tab_list = [ + i.to_dict() + for i in SubTabs.query.filter(SubTabs.id.in_(set(fav_sub_tab_id_list)), SubTabs.available == 1) + ] + data['fav_tabs'] = sub_tab_list + + return data diff --git a/super_bbs/controller/v1/member/api.py b/super_bbs/controller/v1/member/api.py new file mode 100644 index 0000000..0efd104 --- /dev/null +++ b/super_bbs/controller/v1/member/api.py @@ -0,0 +1,290 @@ +from collections import defaultdict +from flask import session +from super_bbs.core.viewhandler import ApiViewHandler, LogicError +from super_bbs.model.tabs import Tabs, SubTabs +from super_bbs.model.topics import Topics, TopicUpDown +from super_bbs.model.comments import Comments, CommentThank +from super_bbs.model.users import Users, UserFavUser +from super_bbs.utils import need_params, login_required + + +class MemberIndexAPI(ApiViewHandler): + @need_params('username') + def get(self): + data = dict() + user_info = Users.get_by_query(username=self.input.username).to_dict(remove_fields_list=['password']) + user_info['fav_user_count'] = UserFavUser.filter_by_query(user_id=user_info['id']).count() + user_info['be_fav_user_count'] = UserFavUser.filter_by_query(fav_user_id=user_info['id']).count() + data['user'] = user_info + data['is_open'] = True + data['is_fav'] = False + if session.get('is_login'): + if UserFavUser.filter_by_query(user_id=session['user_info']['id'], fav_user_id=user_info['id']).first(): + data['is_fav'] = True + + comment_list = [ + i.to_dict() + for i in Comments.filter_by_query(user_id=user_info['id']).order_by(Comments.time_create.desc())[:10] + ] + comment_topic_dict = { + i.id: i.to_dict() + for i in Topics.query.filter( + Topics.id.in_(set([i['topic_id'] for i in comment_list])), + Topics.available == 1 + ) + } + comment_topic_list = [i for i in comment_topic_dict.values()] + user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['user_id'] for i in comment_topic_list)), + Users.available == 1 + ) + } + tab_dict = { + i.id: i.to_dict() + for i in Tabs.query.filter( + Tabs.id.in_(set(i['tab_id'] for i in comment_topic_list)), + Tabs.available == 1 + ) + } + sub_tab_dict = { + i.id: i.to_dict() + for i in SubTabs.query.filter( + SubTabs.id.in_(set(i['sub_tab_id'] for i in comment_topic_list)), + SubTabs.available == 1 + ) + } + for topic in comment_topic_list: + comment_topic_dict[topic['id']]['user'] = user_dict[topic['user_id']] + comment_topic_dict[topic['id']]['tab'] = tab_dict[topic['tab_id']] + comment_topic_dict[topic['id']]['sub_tab'] = sub_tab_dict[topic['sub_tab_id']] + + for comment in comment_list: + comment['is_thank'] = False + comment['topic'] = comment_topic_dict[comment['topic_id']] + + if session.get('user_info'): + comment_thank_id_list = [i.comment_id for i in + CommentThank.filter_by_query(user_id=session['user_info']['id'])] + for comment in comment_list: + if comment['id'] in comment_thank_id_list: + comment['is_thank'] = True + data['comments'] = comment_list + + if user_info['privacy_level'] == 1 and not session.get('is_login'): + data['is_open'] = False + data['topics'] = [] + return data + + if user_info['privacy_level'] == 2: + if not session.get('user_info') or session.get('user_info')['id'] != user_info['id']: + data['is_open'] = False + data['topics'] = [] + return data + + topic_list = [ + i.to_dict() + for i in Topics.filter_by_query(user_id=user_info['id']).order_by(Topics.time_create.desc())[:10] + ] + last_reply_user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['last_reply_user_id'] for i in topic_list)), + Users.available == 1 + ) + } + tab_dict = { + i.id: i.to_dict() + for i in Tabs.query.filter(Tabs.id.in_(set(i['tab_id'] for i in topic_list)), Tabs.available == 1) + } + sub_tab_dict = { + i.id: i.to_dict() + for i in SubTabs.query.filter( + SubTabs.id.in_(set(i['sub_tab_id'] for i in topic_list)), + SubTabs.available == 1 + ) + } + comment_count_dict = dict() + for c in Comments.query.filter( + Comments.topic_id.in_(set(i['id'] for i in topic_list)), + Comments.available == 1 + ): + if comment_count_dict.get(c.topic_id): + comment_count_dict[c.topic_id] += 1 + else: + comment_count_dict[c.topic_id] = 1 + + up_down_dict_list = defaultdict(list) + for up_down_obj in TopicUpDown.query.filter( + TopicUpDown.topic_id.in_(set(i['id'] for i in topic_list)), + TopicUpDown.available == 1 + ): + up_down_dict_list[up_down_obj.topic_id].append(up_down_obj.action) + + for _t in topic_list: + if _t['last_reply_user_id']: + _t['last_reply_user'] = last_reply_user_dict[_t['last_reply_user_id']] + _t['tab'] = tab_dict[_t['tab_id']] + _t['sub_tab'] = sub_tab_dict[_t['sub_tab_id']] + _t['comment_count'] = comment_count_dict.get(_t['id'], 0) + # 获取up和down数量 + if up_down_dict_list.get(_t['id']): + _t['up_count'] = len([i for i in up_down_dict_list[_t['id']] if i is True]) + _t['down_count'] = len([i for i in up_down_dict_list[_t['id']] if i is False]) + else: + _t['up_count'] = 0 + _t['down_count'] = 0 + data['topics'] = topic_list + + return data + + +class MemberTopicAPI(ApiViewHandler): + @need_params('username') + def get(self): + data = dict() + user_info = Users.get_by_query(username=self.input.username).to_dict(remove_fields_list=['password']) + data['user'] = user_info + + if user_info['privacy_level'] == 1 and not session.get('is_login'): + raise LogicError('没有权限访问此用户的信息哦') + + if user_info['privacy_level'] == 2: + if not session.get('user_info') or session.get('user_info')['id'] != user_info['id']: + raise LogicError('没有权限访问此用户的信息哦') + + topic_objs = Topics.filter_by_query(user_id=user_info['id']) + topic_count = topic_objs.count() + data['total'] = topic_count + if topic_count > 100: + page = int(self.input.page) if self.input.page else 1 + page_size = 50 + topic_objs = topic_objs.order_by( + Topics.time_create.desc() + ).order_by(Topics.id.desc()).offset((page - 1) * page_size).limit(page_size) + else: + topic_objs = topic_objs.order_by(Topics.time_modify.desc()).order_by(Topics.id.desc()) + topic_list = [_t.to_dict() for _t in topic_objs] + + last_reply_user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['last_reply_user_id'] for i in topic_list)), + Users.available == 1 + ) + } + tab_dict = { + i.id: i.to_dict() + for i in Tabs.query.filter(Tabs.id.in_(set(i['tab_id'] for i in topic_list)), Tabs.available == 1) + } + sub_tab_dict = { + i.id: i.to_dict() + for i in SubTabs.query.filter( + SubTabs.id.in_(set(i['sub_tab_id'] for i in topic_list)), + SubTabs.available == 1 + ) + } + comment_count_dict = dict() + for c in Comments.query.filter( + Comments.topic_id.in_(set(i['id'] for i in topic_list)), + Comments.available == 1 + ): + if comment_count_dict.get(c.topic_id): + comment_count_dict[c.topic_id] += 1 + else: + comment_count_dict[c.topic_id] = 1 + + up_down_dict_list = defaultdict(list) + for up_down_obj in TopicUpDown.query.filter( + TopicUpDown.topic_id.in_(set(i['id'] for i in topic_list)), + TopicUpDown.available == 1 + ): + up_down_dict_list[up_down_obj.topic_id].append(up_down_obj.action) + + for _t in topic_list: + if _t['last_reply_user_id']: + _t['last_reply_user'] = last_reply_user_dict[_t['last_reply_user_id']] + _t['tab'] = tab_dict[_t['tab_id']] + _t['sub_tab'] = sub_tab_dict[_t['sub_tab_id']] + _t['comment_count'] = comment_count_dict.get(_t['id'], 0) + # 获取up和down数量 + if up_down_dict_list.get(_t['id']): + _t['up_count'] = len([i for i in up_down_dict_list[_t['id']] if i is True]) + _t['down_count'] = len([i for i in up_down_dict_list[_t['id']] if i is False]) + else: + _t['up_count'] = 0 + _t['down_count'] = 0 + data['list'] = topic_list + + return data + + +class MemberCommentAPI(ApiViewHandler): + @need_params('username') + def get(self): + data = dict() + user_info = Users.get_by_query(username=self.input.username).to_dict(remove_fields_list=['password']) + data['user'] = user_info + comment_objs = Comments.filter_by_query(user_id=user_info['id']) + comment_count = comment_objs.count() + data['total'] = comment_count + + if comment_count > 100: + page = int(self.input.page) if self.input.page else 1 + page_size = 50 + topic_objs = comment_objs.order_by( + Comments.time_create.desc() + ).order_by(Comments.id.desc()).offset((page - 1) * page_size).limit(page_size) + else: + topic_objs = comment_objs.order_by(Comments.time_modify.desc()).order_by(Comments.id.desc()) + comment_list = [_t.to_dict() for _t in topic_objs] + + comment_topic_dict = { + i.id: i.to_dict() + for i in Topics.query.filter( + Topics.id.in_(set([i['topic_id'] for i in comment_list])), + Topics.available == 1 + ) + } + comment_topic_list = [i for i in comment_topic_dict.values()] + user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['user_id'] for i in comment_topic_list)), + Users.available == 1 + ) + } + tab_dict = { + i.id: i.to_dict() + for i in Tabs.query.filter( + Tabs.id.in_(set(i['tab_id'] for i in comment_topic_list)), + Tabs.available == 1 + ) + } + sub_tab_dict = { + i.id: i.to_dict() + for i in SubTabs.query.filter( + SubTabs.id.in_(set(i['sub_tab_id'] for i in comment_topic_list)), + SubTabs.available == 1 + ) + } + for topic in comment_topic_list: + comment_topic_dict[topic['id']]['user'] = user_dict[topic['user_id']] + comment_topic_dict[topic['id']]['tab'] = tab_dict[topic['tab_id']] + comment_topic_dict[topic['id']]['sub_tab'] = sub_tab_dict[topic['sub_tab_id']] + + for comment in comment_list: + comment['is_thank'] = False + comment['topic'] = comment_topic_dict[comment['topic_id']] + + if session.get('user_info'): + comment_thank_id_list = [i.comment_id for i in + CommentThank.filter_by_query(user_id=session['user_info']['id'])] + for comment in comment_list: + if comment['id'] in comment_thank_id_list: + comment['is_thank'] = True + + data['list'] = comment_list + + return data diff --git a/super_bbs/controller/v1/tabs/api.py b/super_bbs/controller/v1/tabs/api.py new file mode 100644 index 0000000..771f002 --- /dev/null +++ b/super_bbs/controller/v1/tabs/api.py @@ -0,0 +1,160 @@ +from collections import defaultdict +from flask import session +from super_bbs.core.viewhandler import ApiViewHandler +from super_bbs.model.tabs import Tabs, SubTabs, SubTabFav +from super_bbs.model.topics import Topics, TopicUpDown +from super_bbs.model.comments import Comments +from super_bbs.model.users import Users +from super_bbs.utils import need_params, login_required + + +class TabAPI(ApiViewHandler): + def get(self): + sub_tab_dict_list = defaultdict(list) + for sub_tab in SubTabs.filter_by_query().order_by(SubTabs.sort_num.asc()): + sub_tab_dict_list[sub_tab.tab_id].append(sub_tab.to_dict()) + tab_list = [t.to_dict() for t in Tabs.filter_by_query().order_by(Tabs.sort_num.asc())] + for _d in tab_list: + _d['sub_tabs'] = sub_tab_dict_list.get(_d['id']) or [] + + return tab_list + + +class SubTabAPI(ApiViewHandler): + @login_required() + def get(self): + data = [i.to_dict() for i in SubTabs.filter_by_query()] + tab_dict = { + i.id: i.to_dict() + for i in Tabs.query.filter(Tabs.id.in_(set([i['tab_id'] for i in data])), Tabs.available == 1) + } + for d in data: + d['tab'] = tab_dict[d['tab_id']] + + return data + + +class SubTabFavAPI(ApiViewHandler): + @login_required() + def get(self): + fav_sub_tab_id_list = [i.sub_tab_id for i in SubTabFav.filter_by_query(user_id=session['user_info']['id'])] + sub_tab_list = [ + i.to_dict() + for i in SubTabs.query.filter(SubTabs.id.in_(set(fav_sub_tab_id_list)), SubTabs.available == 1) + ] + topic_sub_tab_dict = dict() + for topic_obj in Topics.query.filter( + Topics.sub_tab_id.in_(set([i['id'] for i in sub_tab_list])), + Topics.available == 1 + ): + if topic_sub_tab_dict.get(topic_obj.sub_tab_id): + topic_sub_tab_dict[topic_obj.sub_tab_id] += 1 + else: + topic_sub_tab_dict[topic_obj.sub_tab_id] = 1 + for sub_tab in sub_tab_list: + sub_tab['topic_count'] = topic_sub_tab_dict.get(sub_tab['id'], 0) + + return sub_tab_list + + @login_required() + @need_params(*['tab', 'action']) + def post(self): + obj = SubTabs.get_by_query(name=self.input.tab) + if self.input.action == 'add': + sub_tab_fav_obj = SubTabFav.filter_by_query( + sub_tab_id=obj.id, + user_id=session['user_info']['id'], + show_deleted=True + ).first() + if sub_tab_fav_obj: + sub_tab_fav_obj.available = 1 + else: + sub_tab_fav_obj = SubTabFav() + sub_tab_fav_obj.sub_tab_id = obj.id + sub_tab_fav_obj.user_id = session['user_info']['id'] + sub_tab_fav_obj.save() + elif self.input.action == 'cal': + sub_tab_fav_obj = SubTabFav.filter_by_query( + sub_tab_id=obj.id, + user_id=session['user_info']['id'] + ).first() + if sub_tab_fav_obj: + sub_tab_fav_obj.available = 0 + sub_tab_fav_obj.save() + + +class TabMixedAPI(ApiViewHandler): + @need_params('tab') + def get(self): + data = dict() + sub_tab_info = SubTabs.get_by_query(name=self.input.tab).to_dict() + sub_tab_info['tab'] = Tabs.get_by_id(sub_tab_info['tab_id']).to_dict() + sub_tab_info['other_tabs'] = [i.to_dict() for i in SubTabs.filter_by_query(tab_id=sub_tab_info['tab_id'])] + data['sub_tab_info'] = sub_tab_info + + topic_objs = Topics.filter_by_query(sub_tab_id=sub_tab_info['id']).order_by(Topics.time_create.desc()) + topic_count = topic_objs.count() + if topic_count > 100: + page = int(self.input.page) if self.input.page else 1 + page_size = 50 + topic_objs = topic_objs.offset((page - 1) * page_size).limit(page_size) + topic_list = [_t.to_dict() for _t in topic_objs] + + user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['user_id'] for i in topic_list)), + Users.available == 1 + ) + } + + last_reply_user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['last_reply_user_id'] for i in topic_list)), + Users.available == 1 + ) + } + + comment_count_dict = dict() + comment_objs = Comments.query.filter( + Comments.topic_id.in_(set(i['id'] for i in topic_list)), + Comments.available == 1 + ) + for c in comment_objs: + if comment_count_dict.get(c.topic_id): + comment_count_dict[c.topic_id] += 1 + else: + comment_count_dict[c.topic_id] = 1 + + up_down_dict_list = defaultdict(list) + for up_down_obj in TopicUpDown.query.filter( + TopicUpDown.topic_id.in_(set(i['id'] for i in topic_list)), + TopicUpDown.available == 1 + ): + up_down_dict_list[up_down_obj.topic_id].append(up_down_obj.action) + + for _d in topic_list: + _d['user'] = user_dict[_d['user_id']] + if _d['last_reply_user_id']: + _d['last_reply_user'] = last_reply_user_dict[_d['last_reply_user_id']] + _d['comment_count'] = comment_count_dict.get(_d['id'], 0) + # 获取up和down数量 + if up_down_dict_list.get(_d['id']): + _d['up_count'] = len([i for i in up_down_dict_list[_d['id']] if i is True]) + _d['down_count'] = len([i for i in up_down_dict_list[_d['id']] if i is False]) + else: + _d['up_count'] = 0 + _d['down_count'] = 0 + + data['total'] = topic_count + data['list'] = topic_list + if session.get('is_login'): + if SubTabFav.filter_by_query( + user_id=session['user_info']['id'], + sub_tab_id=sub_tab_info['id'] + ).first(): + data['is_fav'] = True + else: + data['is_fav'] = False + return data diff --git a/super_bbs/controller/v1/topic/api.py b/super_bbs/controller/v1/topic/api.py new file mode 100644 index 0000000..8e1c297 --- /dev/null +++ b/super_bbs/controller/v1/topic/api.py @@ -0,0 +1,393 @@ +from collections import defaultdict +from flask import session +from super_bbs.core.viewhandler import ApiViewHandler, LogicError +from super_bbs.model.topics import Topics, TopicAppends, TopicFav, TopicUpDown, TopicThank +from super_bbs.model.users import Users, UserFavUser +from super_bbs.model.tabs import Tabs, SubTabs +from super_bbs.model.comments import Comments, CommentThank +from super_bbs.utils import need_params, login_required + + +class TopicAPI(ApiViewHandler): + @need_params('uid') + def get(self): + data = Topics.get_by_uid(self.input.uid).to_dict() + data['user'] = Users.get_by_id(data['user_id']).to_dict() + if data['last_reply_user_id']: + data['last_reply_user'] = Users.get_by_id(data['last_reply_user_id']).to_dict() + data['tab'] = Tabs.get_by_id(data['tab_id']).to_dict() + data['sub_tab'] = SubTabs.get_by_id(data['sub_tab_id']).to_dict() + data['appends'] = [i.to_dict() for i in TopicAppends.filter_by_query(topic_id=data['id'])] + + comment_objs = Comments.filter_by_query(topic_id=data['id']) + data['comment_count'] = comment_objs.count() + if data['comment_count'] < 100: + comment_list = [i.to_dict() for i in comment_objs] + for index, comment in enumerate(comment_list): + comment['index'] = index + 1 + else: + page_size = 50 + page = int(self.input.page) if self.input.page else 1 + comment_objs = comment_objs.offset((page - 1) * page_size).limit(page_size) + comment_list = [i.to_dict() for i in comment_objs] + for index, comment in enumerate(comment_list): + comment['index'] = (page - 1) * page_size + index + 1 + + comment_user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['user_id'] for i in comment_list)), + Users.available == 1 + ) + } + for comment in comment_list: + comment['user'] = comment_user_dict[comment['user_id']] + comment['is_thank'] = False + data['up_count'] = TopicUpDown.filter_by_query(topic_id=data['id'], action=True).count() + data['down_count'] = TopicUpDown.filter_by_query(topic_id=data['id'], action=False).count() + data['is_fav'] = False + data['is_thank'] = False + if session.get('user_info'): + if TopicFav.filter_by_query(topic_id=data['id'], user_id=session['user_info']['id']).first(): + data['is_fav'] = True + if TopicThank.filter_by_query(topic_id=data['id'], user_id=session['user_info']['id']).first(): + data['is_thank'] = True + comment_thank_objs = CommentThank.query.filter( + CommentThank.comment_id.in_(set([i['id'] for i in comment_list])), + CommentThank.available == 1 + ) + comment_thank_id_list = [i.comment_id for i in comment_thank_objs] + for comment in comment_list: + if comment['id'] in comment_thank_id_list: + comment['is_thank'] = True + data['comments'] = comment_list + return data + + @login_required() + @need_params(*['title', 'sub_tab_id']) + def post(self): + obj = Topics.create_by_uid() + obj.title = self.input.title + sub_tab_obj = SubTabs.get_by_id(self.input.sub_tab_id) + obj.sub_tab_id = self.input.sub_tab_id + tab_obj = Tabs.get_by_id(sub_tab_obj.tab_id) + obj.tab_id = tab_obj.id + + if self.input.content: + obj.content = self.input.content + obj.content_length = len(self.input.content) + obj.user_id = session['user_info']['id'] + obj.save() + + +class TopicUpDownCountAPI(ApiViewHandler): + @login_required() + @need_params(*['uid', 'action']) + def post(self): + obj = Topics.get_by_uid(self.input.uid) + if self.input.action in ['up', 'down']: + topic_up_down_obj = TopicUpDown.filter_by_query( + topic_id=obj.id, + user_id=session['user_info']['id'], + show_deleted=True + ).first() + if topic_up_down_obj: + topic_up_down_obj.available = 1 + else: + topic_up_down_obj = TopicUpDown() + topic_up_down_obj.topic_id = obj.id + topic_up_down_obj.user_id = session['user_info']['id'] + if self.input.action == 'up': + topic_up_down_obj.action = True + else: + topic_up_down_obj.action = False + topic_up_down_obj.save() + + return { + 'up_count': TopicUpDown.filter_by_query(topic_id=obj.id, action=True).count(), + 'down_count': TopicUpDown.filter_by_query(topic_id=obj.id, action=False).count() + } + + +class TopicAppendAPI(ApiViewHandler): + @login_required() + @need_params(*['uid', 'content']) + def post(self): + obj = Topics.get_by_uid(self.input.uid) + if obj.user_id != session['user_info']['id']: + raise LogicError('你不可以追加别人的帖子哦') + append_obj = TopicAppends.create_by_uid() + append_obj.topic_id = obj.id + append_obj.content = self.input.content + append_obj.save() + + +class TopicAddView(ApiViewHandler): + @need_params(*['uid']) + def post(self): + obj = Topics.get_by_uid(self.input.uid) + obj.view_count += 1 + obj.save() + + +class TopicCommentAPI(ApiViewHandler): + @login_required() + @need_params(*['uid', 'comment']) + def post(self): + obj = Topics.get_by_uid(self.input.uid) + commend_obj = Comments.create_by_uid() + commend_obj.topic_id = obj.id + commend_obj.content = self.input.comment + commend_obj.user_id = session['user_info']['id'] + obj.last_reply_user_id = session['user_info']['id'] + obj.last_reply_time = self.get_datetime_now() + obj.save() + commend_obj.save() + + +class TopicFavAPI(ApiViewHandler): + @login_required() + def get(self): + topic_fav_objs = TopicFav.filter_by_query(user_id=session['user_info']['id']) + topic_fav_count = topic_fav_objs.count() + if topic_fav_count > 100: + page = int(self.input.page) if self.input.page else 1 + page_size = 50 + topic_fav_objs = topic_fav_objs.order_by( + TopicFav.time_modify.desc() + ).order_by(TopicFav.id.desc()).offset((page - 1) * page_size).limit(page_size) + else: + topic_fav_objs = topic_fav_objs.order_by(TopicFav.time_modify.desc()).order_by(TopicFav.id.desc()) + + topic_fav_dict = {i.topic_id: i.time_modify.strftime('%Y-%m-%d %H:%M:%S') for i in topic_fav_objs} + topic_id_list = topic_fav_dict.keys() + topic_objs = Topics.query.filter(Topics.id.in_(set(topic_id_list)), Topics.available == 1) + topic_list = [_t.to_dict() for _t in topic_objs] + for topic in topic_list: + topic['fav_time'] = topic_fav_dict[topic['id']] + # 排序 + filtered_topic_id_list = [i['id'] for i in topic_list] + topic_id_sort_dict = { + value: index + for index, value in enumerate(topic_id_list) if value in filtered_topic_id_list + } + topic_list = sorted(topic_list, key=lambda x: topic_id_sort_dict[x['id']]) + + user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter(Users.id.in_(set(i['user_id'] for i in topic_list)), Users.available == 1) + } + last_reply_user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['last_reply_user_id'] for i in topic_list)), + Users.available == 1 + ) + } + tab_dict = { + i.id: i.to_dict() + for i in Tabs.query.filter(Tabs.id.in_(set(i['tab_id'] for i in topic_list)), Tabs.available == 1) + } + sub_tab_dict = { + i.id: i.to_dict() + for i in SubTabs.query.filter( + SubTabs.id.in_(set(i['sub_tab_id'] for i in topic_list)), + SubTabs.available == 1 + ) + } + comment_count_dict = dict() + for c in Comments.query.filter( + Comments.topic_id.in_(set(i['id'] for i in topic_list)), + Comments.available == 1 + ): + if comment_count_dict.get(c.topic_id): + comment_count_dict[c.topic_id] += 1 + else: + comment_count_dict[c.topic_id] = 1 + + up_down_dict_list = defaultdict(list) + for up_down_obj in TopicUpDown.query.filter( + TopicUpDown.topic_id.in_(set(i['id'] for i in topic_list)), + TopicUpDown.available == 1 + ): + up_down_dict_list[up_down_obj.topic_id].append(up_down_obj.action) + + for _t in topic_list: + _t['user'] = user_dict[_t['user_id']] + if _t['last_reply_user_id']: + _t['last_reply_user'] = last_reply_user_dict[_t['last_reply_user_id']] + _t['tab'] = tab_dict[_t['tab_id']] + _t['sub_tab'] = sub_tab_dict[_t['sub_tab_id']] + _t['comment_count'] = comment_count_dict.get(_t['id'], 0) + # 获取up和down数量 + if up_down_dict_list.get(_t['id']): + _t['up_count'] = len([i for i in up_down_dict_list[_t['id']] if i is True]) + _t['down_count'] = len([i for i in up_down_dict_list[_t['id']] if i is False]) + else: + _t['up_count'] = 0 + _t['down_count'] = 0 + + return {'total': topic_fav_count, 'list': topic_list} + + @login_required() + @need_params(*['uid', 'action']) + def post(self): + obj = Topics.get_by_uid(self.input.uid) + if session['user_info']['id'] == obj.user_id: + raise LogicError('自己不能收藏自己的主题哦') + topic_fav_obj = TopicFav.filter_by_query( + topic_id=obj.id, + user_id=session['user_info']['id'], + show_deleted=True + ).first() + if self.input.action == 'add': + if topic_fav_obj: + topic_fav_obj.available = 1 + else: + topic_fav_obj = TopicFav() + topic_fav_obj.topic_id = obj.id + topic_fav_obj.user_id = session['user_info']['id'] + topic_fav_obj.save() + elif self.input.action == 'cal': + if topic_fav_obj: + topic_fav_obj.available = 0 + topic_fav_obj.save() + + +class TopicThankAPI(ApiViewHandler): + @login_required() + @need_params(*['uid']) + def post(self): + obj = Topics.get_by_uid(self.input.uid) + # 自己不能给自己感谢 + if session['user_info']['id'] == obj.user_id: + raise LogicError('自己不能感谢自己哦') + if not TopicThank.filter_by_query(topic_id=obj.id, user_id=session['user_info']['id']).first(): + thank_obj = TopicThank() + thank_obj.topic_id = obj.id + thank_obj.user_id = session['user_info']['id'] + thank_obj.save() + + +class CommentThankAPI(ApiViewHandler): + @login_required() + @need_params(*['uid']) + def post(self): + obj = Comments.get_by_uid(self.input.uid) + # 自己不能给自己点赞 + if session['user_info']['id'] == obj.user_id: + raise LogicError('自己不能给自己点赞哦') + if not CommentThank.filter_by_query(comment_id=obj.id, user_id=session['user_info']['id']).first(): + thank_obj = CommentThank() + thank_obj.comment_id = obj.id + thank_obj.user_id = session['user_info']['id'] + thank_obj.save() + + +class UserFavAPI(ApiViewHandler): + @login_required() + def get(self): + fav_user_id_list = [ + i.fav_user_id + for i in UserFavUser.filter_by_query(user_id=session['user_info']['id']) + ] + fav_user_list = [ + i.to_dict() + for i in Users.query.filter(Users.id.in_(set(fav_user_id_list)), Users.available == 1) + ] + topic_objs = Topics.query.filter(Topics.user_id.in_(set(fav_user_id_list)), Topics.available == 1) + topic_count = topic_objs.count() + if topic_count > 100: + page = int(self.input.page) if self.input.page else 1 + page_size = 50 + topic_objs = topic_objs.order_by( + Topics.time_create.desc() + ).order_by(Topics.id.desc()).offset((page - 1) * page_size).limit(page_size) + else: + topic_objs = topic_objs.order_by(Topics.time_modify.desc()).order_by(Topics.id.desc()) + topic_list = [_t.to_dict() for _t in topic_objs] + + user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter(Users.id.in_(set(i['user_id'] for i in topic_list)), Users.available == 1) + } + last_reply_user_dict = { + i.id: i.to_dict(remove_fields_list=['password']) + for i in Users.query.filter( + Users.id.in_(set(i['last_reply_user_id'] for i in topic_list)), + Users.available == 1 + ) + } + tab_dict = { + i.id: i.to_dict() + for i in Tabs.query.filter(Tabs.id.in_(set(i['tab_id'] for i in topic_list)), Tabs.available == 1) + } + sub_tab_dict = { + i.id: i.to_dict() + for i in SubTabs.query.filter( + SubTabs.id.in_(set(i['sub_tab_id'] for i in topic_list)), + SubTabs.available == 1 + ) + } + comment_count_dict = dict() + for c in Comments.query.filter( + Comments.topic_id.in_(set(i['id'] for i in topic_list)), + Comments.available == 1 + ): + if comment_count_dict.get(c.topic_id): + comment_count_dict[c.topic_id] += 1 + else: + comment_count_dict[c.topic_id] = 1 + + up_down_dict_list = defaultdict(list) + for up_down_obj in TopicUpDown.query.filter( + TopicUpDown.topic_id.in_(set(i['id'] for i in topic_list)), + TopicUpDown.available == 1 + ): + up_down_dict_list[up_down_obj.topic_id].append(up_down_obj.action) + + for _t in topic_list: + _t['user'] = user_dict[_t['user_id']] + if _t['last_reply_user_id']: + _t['last_reply_user'] = last_reply_user_dict[_t['last_reply_user_id']] + _t['tab'] = tab_dict[_t['tab_id']] + _t['sub_tab'] = sub_tab_dict[_t['sub_tab_id']] + _t['comment_count'] = comment_count_dict.get(_t['id'], 0) + # 获取up和down数量 + if up_down_dict_list.get(_t['id']): + _t['up_count'] = len([i for i in up_down_dict_list[_t['id']] if i is True]) + _t['down_count'] = len([i for i in up_down_dict_list[_t['id']] if i is False]) + else: + _t['up_count'] = 0 + _t['down_count'] = 0 + + return {'total': topic_count, 'list': topic_list, 'fav_users': fav_user_list} + + @login_required() + @need_params(*['uid', 'action']) + def post(self): + obj = Users.get_by_uid(self.input.uid) + # 自己不能关注自己 + if session['user_info']['uid'] == obj.uid: + raise LogicError('自己不能关注自己哦') + if self.input.action == 'add': + user_fav_obj = UserFavUser.filter_by_query( + fav_user_id=obj.id, + user_id=session['user_info']['id'], + show_deleted=True + ).first() + if user_fav_obj: + user_fav_obj.available = 1 + else: + user_fav_obj = UserFavUser() + user_fav_obj.fav_user_id = obj.id + user_fav_obj.user_id = session['user_info']['id'] + user_fav_obj.save() + elif self.input.action == 'cal': + user_fav_obj = UserFavUser.filter_by_query( + fav_user_id=obj.id, + user_id=session['user_info']['id'] + ).first() + if user_fav_obj: + user_fav_obj.available = 0 + user_fav_obj.save() diff --git a/super_bbs/core/basehandler.py b/super_bbs/core/basehandler.py new file mode 100644 index 0000000..9655c7c --- /dev/null +++ b/super_bbs/core/basehandler.py @@ -0,0 +1,123 @@ +import datetime +import time +import uuid +import ujson +import hashlib +import base64 +import re + + +class BaseHandler(object): + + @classmethod + def generate_hash_uuid(cls, limit=None): + u = uuid.uuid4().hex + if limit: + u = u[:limit] + return u + + @classmethod + def get_datetime_now(cls): + return datetime.datetime.now() + + @classmethod + def get_timestamp(cls): + return time.time() + + @classmethod + def time_create(cls, t): + return t.strftime('%Y-%m-%d %H:%M:%S') + + @classmethod + def strptime(cls, t, f='%Y-%m-%d %H:%M:%S'): + return datetime.datetime.strptime(t, f) + + @classmethod + def get_datetime_utcnow(cls): + return datetime.datetime.utcnow() + + @classmethod + def from_timestamp(cls, timestamp): + return datetime.datetime.fromtimestamp(timestamp) + + @classmethod + def to_timestamp(cls, t): + return time.mktime(t.timetuple()) + + @classmethod + def sha1(cls, string): + return hashlib.sha1(string.encode('UTF-8') if isinstance(string, str) else string).hexdigest() + + @classmethod + def b64encode(cls, bytestring): + return base64.b64encode(bytestring.encode('UTF-8') if isinstance(bytestring, str) else bytestring) + + @classmethod + def b64decode(cls, bytestring): + return base64.b64decode(bytestring.encode('UTF-8') if isinstance(bytestring, str) else bytestring) + + @classmethod + def dumps(cls, obj, ensure_ascii=False): + return ujson.dumps(obj, ensure_ascii=ensure_ascii) + + @classmethod + def loads(cls, string, default=None): + return ujson.loads(string) if string else default + + @classmethod + def timedelta(cls, **kwargs): + return datetime.timedelta(**kwargs) + + @classmethod + def is_valid_name(cls, name_str): + pattern = re.compile(r'^[a-zA-Z][a-zA-Z0-9_-]*$') + return pattern.match(name_str) + + @classmethod + def is_valid_email(cls, email_str): + pattern = re.compile(r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)") + return pattern.match(email_str) + + +class BaseError(Exception): + def __init__(self, msg): + self.code = 1001 + self.msg = msg + + def __str__(self): + return self.msg + + +class AuthError(BaseError): + def __init__(self, msg): + self.code = 1002 + self.msg = msg + + +class VerifyError(BaseError): + def __init__(self, msg): + super(VerifyError, self).__init__(msg) + self.code = 1003 + + +class LogicError(BaseError): + def __init__(self, msg): + self.code = 1004 + self.msg = msg + + +class ParamsError(BaseError): + def __init__(self, msg): + self.code = 1005 + self.msg = msg + + +class Dict(dict): + def __getattr__(self, item): + resp = self.get(item, None) + if isinstance(resp, dict): + resp = Dict(resp) + return resp + + def __setattr__(self, key, value): + self[key] = value diff --git a/super_bbs/core/dbwrapper.py b/super_bbs/core/dbwrapper.py new file mode 100644 index 0000000..7c86335 --- /dev/null +++ b/super_bbs/core/dbwrapper.py @@ -0,0 +1,130 @@ +from super_bbs.core.extensions import db +from super_bbs.core.basehandler import BaseHandler, BaseError +from flask import current_app +import copy +import datetime + + +class DBMixin(BaseHandler): + @classmethod + def create(cls, **kwargs): + instance = cls(**kwargs) + return instance.save() + + @classmethod + def create_by_uid(cls, **kwargs): + instance = cls(**kwargs) + instance.uid = cls.generate_hash_uuid(12) + return instance + + @classmethod + def get_by_id(cls, _id): + instance = db.session.query(cls).filter_by(id=_id, available=1).first() + if not instance: + raise BaseError(cls.__name__ + ' Not Find') + return instance + + @classmethod + def get_by_uid(cls, uid): + instance = db.session.query(cls).filter_by(uid=uid, available=1).first() + if not instance: + raise BaseError(cls.__name__ + ' Not Find') + return instance + + @classmethod + def get_by_query(cls, show_deleted=False, **query_dict): + if show_deleted is False: + query_dict['available'] = 1 + instance = db.session.query(cls).filter_by(**query_dict).first() + if not instance: + raise BaseError(cls.__name__ + ' Not Find') + return instance + + @classmethod + def filter_by_query(cls, show_deleted=False, **query_dict): + if query_dict.get('available'): + query_dict.pop('available') + + if show_deleted is False: + query_dict['available'] = 1 + + tmp = copy.deepcopy(query_dict) + for k in tmp: + if k not in cls.__dict__: + query_dict.pop(k) + return db.session.query(cls).filter_by(**query_dict) + + @classmethod + def create_from_dict(cls, d): + assert isinstance(d, dict) + instance = cls(**d) + return instance.save() + + def update(self, commit=True, **kwargs): + for attr, value in list(kwargs.items()): + setattr(self, attr, value) + return commit and self.save() or self + + def save(self, commit=True): + db.session.add(self) + if commit: + try: + db.session.commit() + except Exception as e: + current_app.logger.error(e) + db.session.rollback() + raise e + return self + + def delete(self, commit=True): + db.session.delete(self) + if commit: + try: + db.session.commit() + except Exception as e: + db.session.rollback() + raise e + + return self + + def to_dict(self, fields_list=None, remove_fields_list=None, remove_available=True): + if remove_fields_list: + column_list = [column for column in self.__dict__ if column not in remove_fields_list] + elif fields_list: + column_list = [column for column in self.__dict__ if column in fields_list] + else: + column_list = self.__dict__ + + data = copy.deepcopy({column_name: getattr(self, column_name) + for column_name in column_list}) + + if data.get('_sa_instance_state'): + data.pop('_sa_instance_state') + + if remove_available and data.get('available'): + data.pop('available') + + for k, v in data.items(): + if isinstance(v, datetime.datetime): + data[k] = v.strftime('%Y-%m-%d %H:%M:%S') + + return data + + @classmethod + def create_or_update(cls, query_dict, update_dict=None): + instance = db.session.query(cls).filter_by(**query_dict).first() + if instance: + if update_dict is not None: + return instance.update(**update_dict) + else: + return instance + else: + query_dict.update(update_dict or {}) + return cls.create(**query_dict) + + +class BaseModal(DBMixin, db.Model): + """ + BaseModal + """ + __abstract__ = True diff --git a/super_bbs/core/extensions.py b/super_bbs/core/extensions.py new file mode 100644 index 0000000..bd9d8d3 --- /dev/null +++ b/super_bbs/core/extensions.py @@ -0,0 +1,13 @@ +from flask_sqlalchemy import SQLAlchemy +from flask_migrate import Migrate +from flask_mail import Mail +from flask_session import Session +from celery import Celery +from flask_redis import FlaskRedis + +db = SQLAlchemy() +migrate = Migrate() +mail = Mail() +session = Session() +celery = Celery() +redis_store = FlaskRedis() diff --git a/super_bbs/core/viewhandler.py b/super_bbs/core/viewhandler.py new file mode 100644 index 0000000..da11c08 --- /dev/null +++ b/super_bbs/core/viewhandler.py @@ -0,0 +1,85 @@ +import traceback +from flask import views, request, jsonify, make_response, current_app, abort +from .basehandler import BaseHandler, AuthError, LogicError, ParamsError, Dict, VerifyError, BaseError + + +class BaseViewHandler(views.MethodView, BaseHandler): + + @property + def input(self): + d = Dict(request.values.items()) + if request.is_json: + d.update(request.json) + return d + + +class ApiViewHandler(BaseViewHandler): + + def dispatch_request(self, *args, **kwargs): + self.set_header = {} + self.set_cookie = {} + self.delete_cookie = [] + self.http_origin = request.environ.get('HTTP_ORIGIN', '') + + handler = getattr(self, request.method.lower(), None) + + if not callable(handler): + if request.method == 'HEAD': + return make_response('', 200) + else: + abort(405) + + return self.api_wrapper(handler, *args, **kwargs) + + def api_wrapper(self, handler, *args, **kwargs): + code = 1000 + data = msg = None + start_time = self.get_timestamp() + try: + data = handler(*args, **kwargs) + except AuthError as e: + code = e.code + msg = str(e) + except LogicError as e: + code = e.code + msg = str(e) + err = traceback.format_exc() + current_app.logger.error(err) + except ParamsError as e: + code = e.code + msg = str(e) + except VerifyError as e: + code = e.code + msg = str(e) + except BaseError as e: + code = e.code + msg = str(e) + err = traceback.format_exc() + current_app.logger.error(err) + except Exception: + code = 5000 + msg = '系统内部错误' + err = traceback.format_exc() + current_app.logger.error(err) + + cost_time = self.get_timestamp() - start_time + + res = {'code': code, 'data': data, 'cost': "{0}ms".format(round(cost_time * 1000, 2))} + if msg: + res.update({'msg': msg}) + + response = make_response(jsonify(res)) + + if self.set_header: + for k, v in self.set_header.items(): + response.headers[k] = v + + if self.set_cookie: + for k, v in self.set_cookie.items(): + response.set_cookie(k, v) + + if self.delete_cookie: + for k in self.delete_cookie: + response.delete_cookie(k) + + return response diff --git a/super_bbs/model/comments.py b/super_bbs/model/comments.py new file mode 100644 index 0000000..e2c5052 --- /dev/null +++ b/super_bbs/model/comments.py @@ -0,0 +1,34 @@ +from datetime import datetime +from super_bbs.core.dbwrapper import BaseModal, db + + +class Comments(BaseModal): + """ + comments 表 + """ + __tablename__ = 'super_bbs_comments' + + id = db.Column(db.Integer, primary_key=True) + uid = db.Column(db.String(64), unique=True, index=True) + topic_id = db.Column(db.Integer, nullable=False) + user_id = db.Column(db.Integer, nullable=False) + content = db.Column(db.Text, nullable=False) + like_count = db.Column(db.Integer, default=0) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class CommentThank(BaseModal): + """ + comment 感谢关联表 + """ + __tablename__ = 'super_bbs_comment_like' + + id = db.Column(db.Integer, primary_key=True) + comment_id = db.Column(db.Integer, nullable=False) + user_id = db.Column(db.Integer, nullable=False) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + diff --git a/super_bbs/model/tabs.py b/super_bbs/model/tabs.py new file mode 100644 index 0000000..5bbe115 --- /dev/null +++ b/super_bbs/model/tabs.py @@ -0,0 +1,50 @@ +from datetime import datetime +from super_bbs.core.dbwrapper import BaseModal, db + + +class Tabs(BaseModal): + """ + tab 表 + """ + __tablename__ = 'super_bbs_tabs' + + id = db.Column(db.Integer, primary_key=True) + uid = db.Column(db.String(64), unique=True, index=True) + name = db.Column(db.String(128), nullable=False, unique=True) + zh = db.Column(db.String(128), nullable=False, unique=True) + sort_num = db.Column(db.Integer, default=100) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class SubTabs(BaseModal): + """ + tab 子表 + """ + __tablename__ = 'super_bbs_sub_tabs' + + id = db.Column(db.Integer, primary_key=True) + uid = db.Column(db.String(64), unique=True, index=True) + tab_id = db.Column(db.Integer, nullable=False) + name = db.Column(db.String(128), nullable=False, unique=True) + zh = db.Column(db.String(128), nullable=False, unique=True) + desc = db.Column(db.String(256)) + sort_num = db.Column(db.Integer, default=100) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class SubTabFav(BaseModal): + """ + tab user 收藏关联表 + """ + __tablename__ = 'super_bbs_sub_tab_fav' + + id = db.Column(db.Integer, primary_key=True) + sub_tab_id = db.Column(db.Integer, nullable=False) + user_id = db.Column(db.Integer, nullable=False) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) \ No newline at end of file diff --git a/super_bbs/model/topics.py b/super_bbs/model/topics.py new file mode 100644 index 0000000..d9dcd7f --- /dev/null +++ b/super_bbs/model/topics.py @@ -0,0 +1,110 @@ +from datetime import datetime +from super_bbs.core.dbwrapper import BaseModal, db + + +class Topics(BaseModal): + """ + topics 表 + """ + __tablename__ = 'super_bbs_topics' + + id = db.Column(db.Integer, primary_key=True) + uid = db.Column(db.String(64), unique=True, index=True) + user_id = db.Column(db.Integer, nullable=False) + title = db.Column(db.String(256), nullable=False) + content = db.Column(db.Text(16000)) + content_length = db.Column(db.Integer) + tab_id = db.Column(db.Integer, nullable=False) + sub_tab_id = db.Column(db.Integer, nullable=False) + last_reply_user_id = db.Column(db.Integer) + last_reply_time = db.Column(db.DateTime) + view_count = db.Column(db.Integer, default=0) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class TopicAppends(BaseModal): + """ + topic 的append表 + """ + __tablename__ = 'super_bbs_topic_appends' + + id = db.Column(db.Integer, primary_key=True) + uid = db.Column(db.String(64), unique=True, index=True) + topic_id = db.Column(db.Integer, nullable=False) + content = db.Column(db.Text(16000), nullable=False) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class TopicFav(BaseModal): + """ + topic 收藏表 + """ + __tablename__ = 'super_bbs_topic_fav' + + id = db.Column(db.Integer, primary_key=True) + topic_id = db.Column(db.Integer, nullable=False) + user_id = db.Column(db.Integer, nullable=False) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class TopicThank(BaseModal): + """ + topic 感谢关联表 + """ + __tablename__ = 'super_bbs_topic_like' + + id = db.Column(db.Integer, primary_key=True) + topic_id = db.Column(db.Integer, nullable=False) + user_id = db.Column(db.Integer, nullable=False) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class TopicUpDown(BaseModal): + """ + topic 点up和点down统计 + """ + __tablename__ = 'super_bbs_topic_up_down' + + id = db.Column(db.Integer, primary_key=True) + topic_id = db.Column(db.Integer, nullable=False) + user_id = db.Column(db.Integer, nullable=False) + action = db.Column(db.Boolean, nullable=False) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class Tags(BaseModal): + """ + tag 表 + """ + __tablename__ = 'super_bbs_tags' + + id = db.Column(db.Integer, primary_key=True) + uid = db.Column(db.String(64), unique=True, index=True) + name = db.Column(db.String(256), nullable=False) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class TopicToTag(BaseModal): + """ + topic 关联 tag 表 + """ + __tablename__ = 'super_bbs_topic_to_tag' + + id = db.Column(db.Integer, primary_key=True) + topic_id = db.Column(db.Integer, nullable=False) + tag_id = db.Column(db.Integer, nullable=False) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) diff --git a/super_bbs/model/users.py b/super_bbs/model/users.py new file mode 100644 index 0000000..97e557a --- /dev/null +++ b/super_bbs/model/users.py @@ -0,0 +1,95 @@ +from datetime import datetime +from werkzeug.security import generate_password_hash, check_password_hash +from super_bbs.core.dbwrapper import BaseModal, db +from super_bbs.constants import default_password + + +class Users(BaseModal): + """ + 用户表 + """ + __tablename__ = 'super_bbs_users' + + id = db.Column(db.Integer, primary_key=True) + uid = db.Column(db.String(64), unique=True, index=True) + username = db.Column(db.String(64), nullable=False, unique=True) + email = db.Column(db.String(64), nullable=False, unique=True) + password = db.Column(db.String(256), nullable=False) + sex = db.Column(db.Integer, default=0) + avatar_url = db.Column(db.String(32)) + role_id = db.Column(db.Integer, default=0) # role_id 是否是管理员或者其他权限 0是一般用户 1 管理员用户 + site = db.Column(db.String(256)) + location = db.Column(db.String(256)) + company = db.Column(db.String(256)) + github = db.Column(db.String(256)) + twitter = db.Column(db.String(256)) + weibo = db.Column(db.String(256)) + bio = db.Column(db.String(512)) + privacy_level = db.Column(db.Integer, default=0) # 0 所有人可以查看我的回复 我的主题 1 只有登录的人可以查看 2 只有自己可以查看 + status = db.Column(db.Boolean, default=1) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + def set_password(self, password): + self.password = generate_password_hash(password) + + def check_password(self, password): + return check_password_hash(self.password, password) + + def reset_password(self): + return self.set_password(default_password) + + +class Passport(BaseModal): + """ + 用户session id + """ + __tablename__ = 'super_bbs_passports' + + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, nullable=False) + data = db.Column(db.String(256)) + token = db.Column(db.String(64), nullable=False) + expire = db.Column(db.DateTime) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class UserFavUser(BaseModal): + """ + user user 收藏关联表 + """ + __tablename__ = 'super_bbs_user_fav_user' + + id = db.Column(db.Integer, primary_key=True) + fav_user_id = db.Column(db.Integer, nullable=False) + user_id = db.Column(db.Integer, nullable=False) + available = db.Column(db.Boolean, default=1) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) + + +class CeleryTaskLogs(BaseModal): + """ + Celery 任务记录 + """ + __tablename__ = 'super_bbs_celery_task_logs' + + success_status = 1 + fail_status = 0 + + id = db.Column(db.Integer, primary_key=True) + task_name = db.Column(db.String(128)) + task_id = db.Column(db.String(64), index=True, unique=True) + retval = db.Column(db.Text) + done = db.Column(db.Boolean) + task_status = db.Column(db.Boolean) + exc = db.Column(db.Text) + einfo = db.Column(db.Text) + args = db.Column(db.Text) + kwargs = db.Column(db.Text) + available = db.Column(db.Boolean, default=1) + time_done = db.Column(db.DateTime) + time_create = db.Column(db.DateTime, default=datetime.now) + time_modify = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now) diff --git a/super_bbs/router/admin.py b/super_bbs/router/admin.py new file mode 100644 index 0000000..e57004b --- /dev/null +++ b/super_bbs/router/admin.py @@ -0,0 +1,23 @@ +from super_bbs.controller.admin.account.api import LoginAPI, LoginOutAPI, LoginStatusCheck +from super_bbs.controller.admin.users.api import UserAPI +from super_bbs.controller.admin.tabs.api import TabAPI, SubTabAPI +from super_bbs.controller.admin.topics.api import TopicAPI +from super_bbs.controller.admin.comments.api import CommentAPI + + +routers = [ + # account + ('/account/login', LoginAPI, 'admin_account_login'), + ('/account/logout', LoginOutAPI, 'admin_account_logout'), + ('/account/check', LoginStatusCheck, 'admin_account_login_status_check'), + # user + ('/user', UserAPI, 'admin_user'), + # tab + ('/tab', TabAPI, 'admin_tab'), + # sub_tab + ('/sub_tab', SubTabAPI, 'admin_sub_tab'), + # topic + ('/topic', TopicAPI, 'admin_topic'), + # comment + ('/comment', CommentAPI, 'admin_comment') +] diff --git a/super_bbs/router/v1.py b/super_bbs/router/v1.py new file mode 100644 index 0000000..03b07ca --- /dev/null +++ b/super_bbs/router/v1.py @@ -0,0 +1,39 @@ +from super_bbs.controller.v1.account.api import LoginAPI, LoginOutAPI, RegisterAPI, ProfileAPI, \ + GetCaptchaHandler, CaptchaCheckAPI, SendEmailAPI, LoginStatusCheck, UpdatePasswordAPI +from super_bbs.controller.v1.index.api import IndexMixedAPI +from super_bbs.controller.v1.topic.api import TopicAPI, TopicUpDownCountAPI, TopicAppendAPI, TopicCommentAPI, \ + TopicFavAPI, TopicThankAPI, CommentThankAPI, TopicAddView, UserFavAPI +from super_bbs.controller.v1.tabs.api import TabMixedAPI, SubTabAPI, TabAPI, SubTabFavAPI +from super_bbs.controller.v1.member.api import MemberIndexAPI, MemberTopicAPI, MemberCommentAPI + +routers = [ + # account + ('/account/login', LoginAPI, 'account_login'), + ('/account/register', RegisterAPI, 'account_register'), + ('/account/logout', LoginOutAPI, 'account_logout'), + ('/account/check', LoginStatusCheck, 'account_login_status_check'), + ('/account/profile', ProfileAPI, 'account_profile'), + ('/account/password', UpdatePasswordAPI, 'account_password'), + # captcha + ('/captcha', GetCaptchaHandler, 'captcha_get'), + ('/captcha/check', CaptchaCheckAPI, 'captcha_check'), + # send email + ('/email/send', SendEmailAPI, 'email_send'), + ('/index', IndexMixedAPI, 'index'), + ('/go', TabMixedAPI, 'go'), + ('/tab', TabAPI, 'tab'), + ('/sub_tab', SubTabAPI, 'sub_tab'), + ('/sub_tab/fav', SubTabFavAPI, 'sub_tab_fav'), + ('/topic', TopicAPI, 'topic'), + ('/topic/append', TopicAppendAPI, 'topic_append'), + ('/topic/fav', TopicFavAPI, 'topic_fav'), + ('/topic/view', TopicAddView, 'topic_view'), + ('/topic/thank', TopicThankAPI, 'topic_thank'), + ('/topic/comment', TopicCommentAPI, 'topic_comment'), + ('/topic/comment/thank', CommentThankAPI, 'topic_comment_thank'), + ('/topic/up_down', TopicUpDownCountAPI, 'topic_up_down'), + ('/user/fav', UserFavAPI, 'user_fav'), + ('/member', MemberIndexAPI, 'member'), + ('/member/topic', MemberTopicAPI, 'member_topic'), + ('/member/comment', MemberCommentAPI, 'member_comment'), +] diff --git a/super_bbs/tabs.json b/super_bbs/tabs.json new file mode 100644 index 0000000..b9534ec --- /dev/null +++ b/super_bbs/tabs.json @@ -0,0 +1,189 @@ +[ + { + "zh": "技术", + "name": "tech", + "sort_num": 1, + "sub_tabs": [ + { + "zh": "程序员", + "name": "programmer", + "sort_num": 1, + "desc": "程序员频道,大家可以讨论程序员相关的事情。" + }, + { + "zh": "Python", + "name": "python", + "sort_num": 2, + "desc": "这里讨论各种 Python 语言编程话题,也包括 Django,Tornado 等框架的讨论。这里是一个能够帮助你解决实际问题的地方。" + }, + { + "zh": "iDev", + "name": "idev", + "sort_num": 3, + "desc": "iOS 及 OS X 开发技术讨论区,iOS 是 iPhone 及 iPad 上运行的操作系统。" + }, + { + "zh": "Android", + "name": "android", + "sort_num": 4, + "desc": "来自 Google 的开放源代码智能手机平台。" + }, + { + "zh": "Linux", + "name": "linux", + "sort_num": 5, + "desc": "Ubuntu CnametOS RedHat ..." + }, + { + "zh": "云计算", + "name": "cloud", + "sort_num": 6, + "desc": "关于云计算技术和平台的综合讨论区。" + } + ] + }, + { + "zh": "创意", + "name": "creative", + "sort_num": 2, + "sub_tabs": [ + { + "zh": "分享创造", + "name": "create", + "sort_num": 1, + "desc": "欢迎你在这里发布自己的最新作品!" + }, + { + "zh": "设计", + "name": "design", + "sort_num": 2, + "desc": "Beautiful adj. Pleasing the snameses or mind aesthetically." + }, + { + "zh": "奇思妙想", + "name": "ideas", + "sort_num": 3, + "desc": "让你的创意在这里自由流动吧。" + } + ] + }, + { + "zh": "好玩", + "name": "play", + "sort_num": 3, + "sub_tabs": [ + { + "zh": "分享发现", + "name": "share", + "sort_num": 1, + "desc": "分享你看到的好玩的,有信息量的,欢迎从这里获取灵感。" + }, + { + "zh": "电子游戏", + "name": "games", + "sort_num": 2, + "desc": "Life is short, have more fun." + }, + { + "zh": "电影", + "name": "movie", + "sort_num": 3, + "desc": "用 90 分钟去体验另外一个世界。" + } + ] + }, + { + "zh": "酷工作", + "name": "jobs", + "sort_num": 4, + "sub_tabs": [ + { + "zh": "酷工作", + "name": "jobs", + "sort_num": 1, + "desc": "做有趣的有意义的事情。" + }, + { + "zh": "求职", + "name": "cv", + "sort_num": 2, + "desc": "欢迎在这里发布自己的求职简历。" + }, + { + "zh": "职场话题", + "name": "career", + "sort_num": 3, + "desc": "这里,我们聊聊那些工作中遇到的开心和不开心的事。" + } + ] + }, + { + "zh": "交易", + "name": "deals", + "sort_num": 5, + "sub_tabs": [ + { + "zh": "二手交易", + "name": "all4all", + "sort_num": 1, + "desc": "为自己的闲置物品找到更好的主人。" + }, + { + "zh": "物物交换", + "name": "exchange", + "sort_num": 2, + "desc": "将自己不需要的闲置物品拿出来和大家交换吧。" + }, + { + "zh": "免费赠送", + "name": "free", + "sort_num": 3, + "desc": null + } + ] + }, + { + "zh": "城市", + "name": "city", + "sort_num": 6, + "sub_tabs": [ + { + "zh": "北京", + "name": "beijing", + "sort_num": 1, + "desc": null + }, + { + "zh": "上海", + "name": "shanghai", + "sort_num": 2, + "desc": null + }, + { + "zh": "深圳", + "name": "shenzhen", + "sort_num": 3, + "desc": null + }, + { + "zh": "广州", + "name": "guangzhou", + "sort_num": 4, + "desc": null + } + ] + }, + { + "zh": "问与答", + "name": "qna", + "sort_num": 7, + "sub_tabs": [ + { + "zh": "问与答", + "name": "qna", + "sort_num": 1, + "desc": "一个更好的世界需要你持续地提出好问题。" + } + ] + } +] \ No newline at end of file diff --git a/super_bbs/utils.py b/super_bbs/utils.py new file mode 100644 index 0000000..f9204be --- /dev/null +++ b/super_bbs/utils.py @@ -0,0 +1,156 @@ +import functools +import os +import re +import requests +import traceback +import random +from PIL import Image, ImageDraw, ImageFont, ImageFilter +from flask import current_app +from flask import session +from flask_mail import Message +from super_bbs.core.extensions import mail, redis_store +from super_bbs.core.basehandler import LogicError, AuthError, BaseError, VerifyError +from super_bbs.config import BASE_DIR +from super_bbs.constants import release_lock_script + + +class HttpClient(object): + + def __init__(self, cookies=None): + self.client = requests + self.cookies = cookies + + def get(self, url, params=None, cookies=None): + if cookies: + cookies.update(self.cookies) + else: + cookies = self.cookies + try: + ret = self.client.get(url=url, params=params, cookies=cookies) + if ret.status_code not in [200, 201]: + raise BaseError(f'request {url}, params {params} error, http code is {ret.status_code}') + return ret + except Exception: + err = traceback.format_exc() + raise BaseError(f'request error: {err}') + + def post(self, url, data=None, cookies=None): + if cookies: + cookies.update(self.cookies) + else: + cookies = self.cookies + try: + ret = self.client.post(url=url, json=data, cookies=cookies) + if ret.status_code not in [200, 201]: + raise BaseError(f'request {url}, data {data} error, http code is {ret.status_code}') + return ret + except Exception: + err = traceback.format_exc() + raise BaseError(f'request error: {err}') + + +def login_required(admin=False): + def func_wrapper(func): + @functools.wraps(func) + def _func_wrapper(cls, *args, **kwargs): + if not session.get('is_login'): + raise AuthError('登录后才可以操作哦') + if admin: + if session.get('role_id') != 1: + raise VerifyError('没有操作权限') + + return func(cls, *args, **kwargs) + + return _func_wrapper + + return func_wrapper + + +def need_params(*params, **type_params): + def dec(func): + + @functools.wraps(func) + def wrapper(self, *args, **kwargs): + for arg in params: + if getattr(self.input, arg) is None: + raise LogicError('需要:%s 参数' % arg) + if getattr(self.input, arg) == '': + raise LogicError('参数:%s 不能为空' % arg) + for k, _type in type_params.items(): + if getattr(self.input, k) is None: + raise LogicError('需要:%s 参数' % k) + if getattr(self.input, k) == '': + raise LogicError('参数:%s 不能为空' % k) + if not isinstance(getattr(self.input, k), _type): + raise LogicError('参数 "%s" 类型应该是: %s' % (k, _type)) + + return func(self, *args, **kwargs) + + return wrapper + + return dec + + +def generate_check_code(width=120, height=30, char_length=5, font_name='Rocko.ttf', font_size=28): + font_file = os.path.join(BASE_DIR, font_name) + + code = [] + img = Image.new(mode='RGB', size=(width, height), color=(255, 255, 255)) + draw = ImageDraw.Draw(img, mode='RGB') + + def rndChar(): + """ + 生成随机字母 + :return: + """ + return chr(random.randint(65, 90)) + + def rndColor(): + """ + 生成随机颜色 + :return: + """ + return (random.randint(0, 255), random.randint(10, 255), random.randint(64, 255)) + + font = ImageFont.truetype(font_file, font_size) + for i in range(char_length): + char = rndChar() + code.append(char) + h = random.randint(0, 4) + draw.text([i * width / char_length, h], char, font=font, fill=rndColor()) + + for i in range(40): + draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor()) + + for i in range(40): + draw.point([random.randint(0, width), random.randint(0, height)], fill=rndColor()) + x = random.randint(0, width) + y = random.randint(0, height) + draw.arc((x, y, x + 4, y + 4), 0, 90, fill=rndColor()) + + for i in range(5): + x1 = random.randint(0, width) + y1 = random.randint(0, height) + x2 = random.randint(0, width) + y2 = random.randint(0, height) + + draw.line((x1, y1, x2, y2), fill=rndColor()) + + img = img.filter(ImageFilter.EDGE_ENHANCE_MORE) + return img, ''.join(code) + + +def send_mail(body, title, recipients): + msg = Message( + title, + recipients=recipients + ) + msg.body = body + msg.html = "

big

" + mail.send(msg) + current_app.logger.info('mail send to {0}'.format(','.join(recipients))) + + +def release_redis_lock(lock_key_name, lock_value): + script_client = redis_store.register_script(release_lock_script) + return script_client(keys=[lock_key_name], args=[lock_value]) diff --git a/web/README.md b/web/README.md new file mode 100644 index 0000000..e28ed09 --- /dev/null +++ b/web/README.md @@ -0,0 +1,29 @@ +# vue-startup + +## Project setup +``` +yarn install +``` + +### Compiles and hot-reloads for development +``` +yarn run serve +``` + +### Compiles and minifies for production +``` +yarn run build +``` + +### Run your tests +``` +yarn run test +``` + +### Lints and fixes files +``` +yarn run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/web/babel.config.js b/web/babel.config.js new file mode 100644 index 0000000..ba17966 --- /dev/null +++ b/web/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/app' + ] +} diff --git a/web/package.json b/web/package.json new file mode 100644 index 0000000..2e1054a --- /dev/null +++ b/web/package.json @@ -0,0 +1,87 @@ +{ + "name": "vue-startup", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "axios": "^0.18.0", + "babel-polyfill": "^6.26.0", + "core-js": "^2.6.5", + "echarts": "^4.2.1", + "lodash": "^4.17.11", + "normalize.css": "^8.0.1", + "qs": "^6.7.0", + "uuid": "^3.3.2", + "view-design": "^4.0.0", + "vue": "^2.6.10", + "vue-meditor": "^2.0.2", + "vue-router": "^3.0.3" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^3.6.0", + "@vue/cli-plugin-eslint": "^3.6.0", + "@vue/cli-service": "^3.6.0", + "@vue/eslint-config-standard": "^4.0.0", + "babel-eslint": "^10.0.1", + "eslint": "^5.16.0", + "eslint-config-standard": "^12.0.0", + "eslint-config-vue": "^2.0.2", + "eslint-friendly-formatter": "^4.0.1", + "eslint-loader": "^2.1.2", + "eslint-plugin-flow-vars": "^0.5.0", + "eslint-plugin-html": "^5.0.5", + "eslint-plugin-import": "^2.17.2", + "eslint-plugin-node": "^9.0.1", + "eslint-plugin-promise": "^4.1.1", + "eslint-plugin-standard": "^4.0.0", + "eslint-plugin-vue": "^5.2.2", + "lint-staged": "^8.1.5", + "node-sass": "^4.9.0", + "sass-loader": "^7.1.0", + "vue-template-compiler": "^2.5.21" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "@vue/standard" + ], + "rules": { + "vue/no-parsing-error": [ + 2, + { + "x-invalid-end-tag": false + } + ] + }, + "parserOptions": { + "parser": "babel-eslint" + } + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ], + "gitHooks": { + "pre-commit": "lint-staged" + }, + "lint-staged": { + "*.{js,vue}": [ + "vue-cli-service lint", + "git add" + ] + } +} diff --git a/web/public/favicon.ico b/web/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..74ea9a80738e52af3ec1dcb96e9fd07027006c14 GIT binary patch literal 2054 zcmV+h2>JJkP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2b)PmK~#8N?OJI} zR96(X`}U(hnpCUSYEu(a6PGA1bs1%55a!LmFz*d&Y~ya#)TrQ&;!;dYi;C8LN266+ z5VS_ERxJkC+Cm<4f-S&+7PDXyXSEP^=HY7;w}Os3b_*IsT! z2(hiv*hDn=2O51~5hSP$@$+}^^BGpV%i(srUt`UAV6wRzggg4wXa9Wh(5~IEH_&un zG;l=C+;h_=T||Cmwn-z+Ht`aFAOF6JuL*$(3K^(uQRFBTRw#=PU|hdANSZMi<}Vx% zYtxe1|#aP{_YkJu|(f+%N=_eV1+!G*Wi#WZBKQczq!3DVQ2L2>aF z=IZ%ST`?P~%Ir{a!vSkoIl<->J?$nXx!_Kr10LLTz=AZV91kbYb4*h3V6nL0$CBUe z6Cpulj0DS;O@Vv&%9xb^R2RaNN4fCi{${AIT!@^DX1|B(dyBE-x8naD@w`@*IXwyB zynfLE#}7us<5J&ylmtOh37sVA9VShGm?C2vu4hOCQSDeF4p1z>j7R!DI4@{HXZ`-C|4=+JsFB z*}R7~(ZwX{3k)=e2c@3R-a66K+XNcZYGUI>-sINoS`|pZ+S7sy#fVFG$CEz_AG~@0c%(_9UUYA_f0;_zBdT zFxjnlGMaQ?*@`=ytEF@W!(<*iJ9Rd|c`)f8vib+A0&U zm`SfY=;;c_zkG~!@zje^{x{Bcmdz7Wrt6ddtIgG&Hyq;@{T@X_$rC%9`6XcHWW^8= z#P68=x&wQE1aEl4q!(lSms~XYnI}#h+eJ*ToD!0JMEGAn!SfgBBcmN?*f`_-%h3dhIA}but z{#eyG@%Qx&Ax88ajAHrsV6wFXowMV_QqF_WNvxV!tyzA}0!OkMs~YE=I=+)^9``F} zQ0^;U)fxi>Wbr_$srqk*Xs3553?9|jGw%I4{6j!D%AbRLL-uJC~K)3mRG${P`ox3{^f;Xo!$=qQ`V z(!XyJT+NwO{b04Z2k@YD6QtFNFzxLN^1^V3_w17AoI9(H!aUOEp2Q^T3$r~oOd0sl ze*c4!%3?daBd9%#&vk)g+ncBwRpZ=Qt-)&d-2ouCqcnXczCd8G`8@C#`9j3Yy*pz( z_XLB7iEy{**_H9|mJP0*>Hx>Lf1+wqjr%v&4=8(D@}whH>zD5_dHMr)S=l`Jo*n+Z zpE%Vw8y`MUbD5;m+gthF;CyaN$o;i;rOx>aKIjY_5FxiuB=csc^8+R=I8Z(mtzO}K zCa5fSfY`?;?&MKl0`6Q5hqF1K*Lr*_xqDqhm=ym7&NqG~Pt2m9+A&$dgK`q2Ux1{q zaYD}CXy`x0Cy;)#b3NZX1j;V=!2SEPmoqie`cCEUa4CQK;^}odmrOt@!5Q;`Fq!(l zjZ4mXr6@Jhc9}Ly+3Uk#-$wNZ7$s><-?I2qNS)EvZ*5l+hu=Z^ts#>VI#?Z2Ga7$t zBGnib + + + + + + + super-bbs admin + + + +
+ + + diff --git a/web/src/App.vue b/web/src/App.vue new file mode 100644 index 0000000..98240ae --- /dev/null +++ b/web/src/App.vue @@ -0,0 +1,3 @@ + diff --git a/web/src/api/account.js b/web/src/api/account.js new file mode 100644 index 0000000..474c242 --- /dev/null +++ b/web/src/api/account.js @@ -0,0 +1,32 @@ +import api from '@/common/api' + +const check = () => api.get('account/check', { t: new Date().getTime() }) + +const profile = () => { + return api.get(`account/profile`, { t: new Date().getTime() }) +} + +const login = params => api.post(`account/login`, params) +const register = params => api.post(`account/register`, params) +const updateProfile = params => api.post(`account/profile`, params) +const updatePassword = params => api.post('account/password', params) + +const logout = () => { + return api.post(`account/logout`) +} + +const checkCode = params => api.post('captcha/check', params) + +const sendEmailCode = params => api.post('email/send', params) + +export default { + check, + profile, + login, + updateProfile, + updatePassword, + logout, + register, + checkCode, + sendEmailCode +} diff --git a/web/src/api/main.js b/web/src/api/main.js new file mode 100644 index 0000000..09589b6 --- /dev/null +++ b/web/src/api/main.js @@ -0,0 +1,9 @@ +import api from '@/common/api' + +const index = params => api.get(`index`, params) +const go = params => api.get(`go`, params) + +export default { + index, + go +} diff --git a/web/src/api/member.js b/web/src/api/member.js new file mode 100644 index 0000000..97f2acf --- /dev/null +++ b/web/src/api/member.js @@ -0,0 +1,11 @@ +import api from '@/common/api' + +const detail = params => api.get(`member`, params) +const listTopic = params => api.get('member/topic', params) +const listComment = params => api.get('member/comment', params) + +export default { + detail, + listTopic, + listComment +} diff --git a/web/src/api/tab.js b/web/src/api/tab.js new file mode 100644 index 0000000..b92de5c --- /dev/null +++ b/web/src/api/tab.js @@ -0,0 +1,12 @@ +import api from '@/common/api' + +const list = params => api.get(`tab`, params) +const listSubTab = params => api.get(`sub_tab`, params) +const favSubTab = params => api.post(`sub_tab/fav`, params) +const listFavSubTab = params => api.get('sub_tab/fav', params) +export default { + list, + listSubTab, + favSubTab, + listFavSubTab +} diff --git a/web/src/api/topic.js b/web/src/api/topic.js new file mode 100644 index 0000000..bb5dee4 --- /dev/null +++ b/web/src/api/topic.js @@ -0,0 +1,25 @@ +import api from '@/common/api' + +const list = params => api.get(`topic`, params) +const create = params => api.post(`topic`, params) +const append = params => api.post(`topic/append`, params) +const comment = params => api.post(`topic/comment`, params) +const fav = params => api.post(`topic/fav`, params) +const listFav = params => api.get(`topic/fav`, params) +const addView = params => api.post(`topic/view`, params) +const upDown = params => api.post(`topic/up_down`, params) +const thank = params => api.post(`topic/thank`, params) +const commentThank = params => api.post(`topic/comment/thank`, params) + +export default { + list, + create, + append, + comment, + fav, + listFav, + upDown, + thank, + commentThank, + addView +} diff --git a/web/src/api/user.js b/web/src/api/user.js new file mode 100644 index 0000000..5e86d29 --- /dev/null +++ b/web/src/api/user.js @@ -0,0 +1,9 @@ +import api from '@/common/api' + +const fav = params => api.post(`user/fav`, params) +const listFav = params => api.get(`user/fav`, params) + +export default { + fav, + listFav +} diff --git a/web/src/assets/bg-img.png b/web/src/assets/bg-img.png new file mode 100644 index 0000000000000000000000000000000000000000..310e8868d9d510f0aad29b0ff9081d42d13bf8b0 GIT binary patch literal 21967 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 { + if (!res.data || res.data.code !== 1000) { + console.error( + res.config.method, + res.config.url, + res.config.params, + res.config.data + ) + throw res.data || res + } + return res.data.data +} + +class Api { + constructor (baseUrl) { + this.baseUrl = baseUrl + } + + _getUrl (url) { + return `/${this.baseUrl}/${url}` + } + + async get (url, data) { + let res = await http.get(this._getUrl(url), data) + return handleResponse(res) + } + + async post (url, data) { + let res = await http.post(this._getUrl(url), data) + return handleResponse(res) + } + + async put (url, data) { + let res = await http.put(this._getUrl(url), data) + return handleResponse(res) + } + + async _delete (url, data) { + let res = await http._delete(this._getUrl(url), data) + return handleResponse(res) + } + + async postForm (url, data) { + let res = await http.postForm(this._getUrl(url), data) + return handleResponse(res) + } +} + +const api = new Api('api/v1') + +export default api diff --git a/web/src/common/date.js b/web/src/common/date.js new file mode 100644 index 0000000..0c25f05 --- /dev/null +++ b/web/src/common/date.js @@ -0,0 +1,43 @@ +import dateFormatter from './dateFormatter' + +export const getThisWeek = () => { + let date = new Date() + let day = date.getDay() || 7 + date.setDate(date.getDate() - day) + return date +} + +export const getThisMonth = () => { + let date = new Date() + date.setDate(1) + return date +} + +export const getThisYear = () => { + let date = new Date() + return date.getFullYear() +} + +export const getToday = () => { + let date = new Date() + date.setHours(0) + date.setMinutes(0) + date.setSeconds(0) + date.setMilliseconds(0) + return date +} + +export const getMonthStart = date => { + let startTime = new Date(date) + startTime.setDate(1) + startTime.setHours(0, 0, 0, 0) + return dateFormatter(startTime, 'yyyy-MM-dd hh:mm:ss') +} + +export const getMonthEnd = date => { + let endTime = new Date(date) + endTime.setMonth(endTime.getMonth() + 1) + endTime.setDate(1) + endTime.setHours(0, 0, 0, 0) + return dateFormatter(endTime, 'yyyy-MM-dd hh:mm:ss') +} diff --git a/web/src/common/dateFormatter.js b/web/src/common/dateFormatter.js new file mode 100644 index 0000000..b3512f4 --- /dev/null +++ b/web/src/common/dateFormatter.js @@ -0,0 +1,22 @@ +export default (date, format) => { + const o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'h+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds(), + 'q+': Math.floor((date.getMonth() + 3) / 3), + 'S+': date.getMilliseconds() + } + format = format.replace(/y+/, match => + (date.getFullYear() + '').substr(4 - match.length) + ) + for (let k in o) { + format = format.replace(new RegExp(k), match => { + return match.length === 1 + ? o[k] + : ('00' + o[k]).substr(('' + o[k]).length) + }) + } + return format +} diff --git a/web/src/common/http.js b/web/src/common/http.js new file mode 100644 index 0000000..af5cf02 --- /dev/null +++ b/web/src/common/http.js @@ -0,0 +1,36 @@ +import axios from 'axios' +import qs from 'qs' + +export const get = (url, params) => { + return axios.get(url, { + params, + paramsSerializer (params) { + return qs.stringify(params, { arrayFormat: 'repeat' }) + } + }) +} + +export const post = (url, params) => { + return axios.post(url, params) +} + +export const put = (url, params) => { + return axios.put(url, params) +} + +export const _delete = (url, params) => { + return axios.delete(url, { + params, + paramsSerializer (params) { + return qs.stringify(params, { arrayFormat: 'repeat' }) + } + }) +} + +export const postForm = (url, params) => { + let formData = new FormData() + Object.keys(params).forEach(key => { + formData.append(key, params[key]) + }) + return axios.post(url, formData) +} diff --git a/web/src/common/sleep.js b/web/src/common/sleep.js new file mode 100644 index 0000000..e5e2a1b --- /dev/null +++ b/web/src/common/sleep.js @@ -0,0 +1,8 @@ +/** + * 延迟 timeout + * 延迟10ms:sleep(10);延迟 20ms 后返回 1:sleep(20, 1) + * @param timeout + * @param data + */ +export default (timeout, data) => + new Promise(resolve => setTimeout(() => resolve(data), timeout)) diff --git a/web/src/components/loading-spin/index.vue b/web/src/components/loading-spin/index.vue new file mode 100644 index 0000000..9763feb --- /dev/null +++ b/web/src/components/loading-spin/index.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/web/src/components/user-box/index.vue b/web/src/components/user-box/index.vue new file mode 100644 index 0000000..b3767b6 --- /dev/null +++ b/web/src/components/user-box/index.vue @@ -0,0 +1,65 @@ + + diff --git a/web/src/main.js b/web/src/main.js new file mode 100644 index 0000000..ca7116c --- /dev/null +++ b/web/src/main.js @@ -0,0 +1,45 @@ +import Vue from 'vue' +import 'babel-polyfill' +import App from '@/App.vue' +import router from '@/routers' +import ViewUI from 'view-design' +import 'view-design/dist/styles/iview.css' +import 'normalize.css' +import _ from 'lodash' +import * as qs from 'qs' +import sleep from '@/common/sleep' +import * as date from '@/common/date' +import api from '@/common/api' +import session from '@/api/account' +import { + goBack, + setItem, + getItem, + getUuid, + removeItem, + removeAll, + diffObj, + sortArray +} from '@/utils' + +Vue.config.productionTip = false +Vue.use(ViewUI) +Vue.prototype.$_ = _ +Vue.prototype.$api = api +Vue.prototype.$qs = qs +Vue.prototype.$date = date +Vue.prototype.$sleep = sleep +Vue.prototype.$goBack = goBack +Vue.prototype.$setItem = setItem +Vue.prototype.$getItem = getItem +Vue.prototype.$removeItem = removeItem +Vue.prototype.$removeAll = removeAll +Vue.prototype.$diffObj = diffObj +Vue.prototype.$getUuid = getUuid +Vue.prototype.$session = session +Vue.prototype.$sortArray = sortArray + +new Vue({ + router, + render: h => h(App) +}).$mount('#app') diff --git a/web/src/routers/index.js b/web/src/routers/index.js new file mode 100644 index 0000000..7534e5d --- /dev/null +++ b/web/src/routers/index.js @@ -0,0 +1,186 @@ +import Vue from 'vue' +import Router from 'vue-router' +import ViewUI from 'view-design' +import 'view-design/dist/styles/iview.css' +import accountAPI from '@/api/account' + +Vue.use(Router) + +const _import = file => () => import('@/views/' + file + '.vue') + +let router = new Router({ + routes: [ + { + path: '/', + name: '/', + meta: {}, + component: _import('Layer'), + redirect: '/index', + children: [ + { + path: 'index', + name: 'index', + component: _import('Index'), + meta: { + auth: false, + title: '首页' + } + }, + { + path: 'go', + name: 'go', + component: _import('Go'), + meta: { + auth: false, + title: 'Go页面' + } + }, + { + path: 'new', + name: 'new', + component: _import('New'), + meta: { + auth: true, + title: '创作新主题' + } + }, + { + path: 't', + name: 't', + component: _import('Topic'), + meta: { + auth: false, + title: '详情' + } + }, + { + path: 't/append', + name: 't_append', + component: _import('Append'), + meta: { + auth: true, + title: '追加' + } + }, + { + path: 'my/topics', + name: 'my_topics', + component: _import('MyFavTopic'), + meta: { + auth: true, + title: '我收藏的主题' + } + }, + { + path: 'my/nodes', + name: 'my_nodes', + component: _import('MyFavNode'), + meta: { + auth: true, + title: '我收藏的节点' + } + }, + { + path: 'my/following', + name: 'my_following', + component: _import('MyFavUserTopic'), + meta: { + auth: true, + title: '我关注的用户以及他们的主题' + } + }, + { + path: 'member', + name: 'member', + component: _import('Member'), + meta: { + auth: false, + title: '用户详情页' + } + }, + { + path: 'member/topic', + name: 'member_topic', + component: _import('MemberTopic'), + meta: { + auth: false, + title: '用户Topic页' + } + }, + { + path: 'member/comment', + name: 'member_comment', + component: _import('MemberComment'), + meta: { + auth: false, + title: '用户Comment页' + } + }, + { + path: 'setting', + name: 'setting', + component: _import('Setting'), + meta: { + auth: true, + title: '用户Setting页' + } + }, + { + path: '/account/register', + name: 'register', + meta: { + auth: false + }, + component: _import('Register') + }, { + path: '/account/login', + name: 'login', + meta: { + auth: false + }, + component: _import('Login') + } + ] + }, + { + path: '*', + name: 'default', + redirect: '/index' + } + ] +}) + +// 路由拦截器 +router.beforeEach(async function (to, from, next) { + ViewUI.LoadingBar.start() + window.scrollTo(0, 0) + try { + // 组件实例添加用户对象 $user + if (to.fullPath !== from.fullPath) { + Vue.prototype.$user = await accountAPI.check() + if (to.meta.auth && !Vue.prototype.$user) { + ViewUI.Message.error('登录后才可以操作哦') + next({ + path: '/account/login' + }) + } else { + next() + } + } + } catch (e) { + console.log(e) + if (e.msg) { + ViewUI.Message.error(e.msg) + } else { + console.log(e) + ViewUI.Message.error('服务器出了点小差') + } + ViewUI.LoadingBar.error() + } +}) + +router.afterEach(() => { + ViewUI.LoadingBar.finish() +}) + +export default router diff --git a/web/src/utils/index.js b/web/src/utils/index.js new file mode 100644 index 0000000..141875b --- /dev/null +++ b/web/src/utils/index.js @@ -0,0 +1,83 @@ +import uuidv4 from 'uuid/v4' +import router from '@/routers' +import _ from 'lodash' + +export function goBack () { + router.go(-1) +} + +export function setItem (name, value) { + if (value) { + localStorage.setItem(name, JSON.stringify(value)) + } +} + +export function getItem (name) { + let _tmp = localStorage.getItem(name) + if (_tmp) { + return JSON.parse(_tmp) + } +} + +export function removeItem (name) { + localStorage.removeItem(name) +} + +export function clearItem () { + localStorage.clear() +} + +export function diffObj (oldObj, newObj, ignoreKeys) { + let dif = {} + for (let k in newObj) { + if (Array.isArray(ignoreKeys)) { + if (!ignoreKeys.includes(k)) { + if (!_.isEqual(newObj[k], oldObj[k])) { + dif[k] = newObj[k] + } + } + } else { + if (!_.isEqual(newObj[k], oldObj[k])) { + dif[k] = newObj[k] + } + } + } + return dif +} + +export function removeAll () { + sessionStorage.clear() +} + +export function getUuid () { + return uuidv4() +} + +export function sortArray (prop) { + return function (obj1, obj2) { + let val1 = obj1[prop] + let val2 = obj2[prop] + if (!isNaN(Number(val1)) && !isNaN(Number(val2))) { + val1 = Number(val1) + val2 = Number(val2) + } + if (val1 < val2) { + return -1 + } else if (val1 > val2) { + return 1 + } else { + return 0 + } + } +} + +export default { + goBack, + setItem, + getItem, + getUuid, + removeItem, + removeAll, + diffObj, + sortArray +} diff --git a/web/src/views/Append.vue b/web/src/views/Append.vue new file mode 100644 index 0000000..4fb54d6 --- /dev/null +++ b/web/src/views/Append.vue @@ -0,0 +1,128 @@ + + diff --git a/web/src/views/Go.vue b/web/src/views/Go.vue new file mode 100644 index 0000000..57f7b46 --- /dev/null +++ b/web/src/views/Go.vue @@ -0,0 +1,242 @@ + + + diff --git a/web/src/views/Index.vue b/web/src/views/Index.vue new file mode 100644 index 0000000..895091f --- /dev/null +++ b/web/src/views/Index.vue @@ -0,0 +1,253 @@ + + + diff --git a/web/src/views/Layer.vue b/web/src/views/Layer.vue new file mode 100644 index 0000000..025890e --- /dev/null +++ b/web/src/views/Layer.vue @@ -0,0 +1,217 @@ + + + diff --git a/web/src/views/Login.vue b/web/src/views/Login.vue new file mode 100644 index 0000000..b7867c7 --- /dev/null +++ b/web/src/views/Login.vue @@ -0,0 +1,132 @@ + + + diff --git a/web/src/views/Member.vue b/web/src/views/Member.vue new file mode 100644 index 0000000..eaf77cb --- /dev/null +++ b/web/src/views/Member.vue @@ -0,0 +1,244 @@ + + + diff --git a/web/src/views/MemberComment.vue b/web/src/views/MemberComment.vue new file mode 100644 index 0000000..6d4fcc4 --- /dev/null +++ b/web/src/views/MemberComment.vue @@ -0,0 +1,131 @@ + + + diff --git a/web/src/views/MemberTopic.vue b/web/src/views/MemberTopic.vue new file mode 100644 index 0000000..c80f350 --- /dev/null +++ b/web/src/views/MemberTopic.vue @@ -0,0 +1,183 @@ + + + diff --git a/web/src/views/MyFavNode.vue b/web/src/views/MyFavNode.vue new file mode 100644 index 0000000..a7a4588 --- /dev/null +++ b/web/src/views/MyFavNode.vue @@ -0,0 +1,69 @@ + + + diff --git a/web/src/views/MyFavTopic.vue b/web/src/views/MyFavTopic.vue new file mode 100644 index 0000000..74a4355 --- /dev/null +++ b/web/src/views/MyFavTopic.vue @@ -0,0 +1,184 @@ + + + diff --git a/web/src/views/MyFavUserTopic.vue b/web/src/views/MyFavUserTopic.vue new file mode 100644 index 0000000..1c8ae56 --- /dev/null +++ b/web/src/views/MyFavUserTopic.vue @@ -0,0 +1,186 @@ + + + diff --git a/web/src/views/New.vue b/web/src/views/New.vue new file mode 100644 index 0000000..2ca5e40 --- /dev/null +++ b/web/src/views/New.vue @@ -0,0 +1,141 @@ + + + diff --git a/web/src/views/Register.vue b/web/src/views/Register.vue new file mode 100644 index 0000000..0ec8c14 --- /dev/null +++ b/web/src/views/Register.vue @@ -0,0 +1,155 @@ + + diff --git a/web/src/views/Setting.vue b/web/src/views/Setting.vue new file mode 100644 index 0000000..a42dc34 --- /dev/null +++ b/web/src/views/Setting.vue @@ -0,0 +1,222 @@ + + + diff --git a/web/src/views/Topic.vue b/web/src/views/Topic.vue new file mode 100644 index 0000000..9724759 --- /dev/null +++ b/web/src/views/Topic.vue @@ -0,0 +1,382 @@ + + + diff --git a/web/vue.config.js b/web/vue.config.js new file mode 100644 index 0000000..4da436a --- /dev/null +++ b/web/vue.config.js @@ -0,0 +1,35 @@ +const path = require('path') + +const resolve = dir => path.join(__dirname, dir) + +let assetsDir = (() => { + return 'static/' +})() + +module.exports = { + baseUrl: process.env.BASE_URL, + devServer: { + hot: true, + host: '0.0.0.0', + port: 80, + open: false, + disableHostCheck: true, + https: false, + hotOnly: false, + proxy: { + '/api': { + target: 'http://172.17.76.64:5000', + changeOrigin: true + } + } + }, + configureWebpack: { + resolve: { + alias: { + '@': resolve('src') + } + } + }, + assetsDir: assetsDir, + productionSourceMap: false +} diff --git a/web/yarn.lock b/web/yarn.lock new file mode 100644 index 0000000..15f124b --- /dev/null +++ b/web/yarn.lock @@ -0,0 +1,9311 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha1-vAeC9tafe31JUxIZaZuYj2aaj50= + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.0.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30" + integrity sha1-F7JobvDWvFj5Y93daKtml1VYLDA= + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.5.5" + "@babel/helpers" "^7.5.5" + "@babel/parser" "^7.5.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.5" + "@babel/types" "^7.5.5" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" + integrity sha1-hzp/k2o8iUkbQ1NtEiRbYmZk488= + dependencies: + "@babel/types" "^7.5.5" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha1-Mj053QtQ4Qx8Bsp9djjmhk2MXDI= + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha1-a2lijf5Ah3mODE7Zjj1Kay+9L18= + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-call-delegate@^7.4.4": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/helper-call-delegate/download/@babel/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" + integrity sha1-h8H4yhmtVSpzanonscH8+LH/H0M= + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-create-class-features-plugin@^7.4.4", "@babel/helper-create-class-features-plugin@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.5.5.tgz#401f302c8ddbc0edd36f7c6b2887d8fa1122e5a4" + integrity sha1-QB8wLI3bwO3Tb3xrKIfY+hEi5aQ= + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.5.5" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.5.5" + "@babel/helper-split-export-declaration" "^7.4.4" + +"@babel/helper-define-map@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" + integrity sha1-PewywgRvN+CbKMk+sLED/Sol02k= + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.5.5" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha1-U3+hP28WdN90WwwA7I/k6ZaByPY= + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha1-oM6wFoX3M1XUNgwSR/WCv6/I/1M= + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha1-g1ctQyDipGVyY3NBE8QoaLZOScM= + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.4.4": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" + integrity sha1-Api18lyMCcUxAtUqxKmPdz6yhQo= + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-member-expression-to-functions@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" + integrity sha1-H7W47ERTqTxDnun+Ou6kqEt2tZA= + dependencies: + "@babel/types" "^7.5.5" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha1-lggbcRHkhtpNLNlxrRpP4hbMLj0= + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" + integrity sha1-+E/4oJA43Lyh/UNVZhpQCTcWW0o= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/types" "^7.5.5" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha1-opIMVwKwc8Fd5REGIAqoytIEl9U= + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha1-u7P77phmHFaQNCN8wDlnupm08lA= + +"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" + integrity sha1-CqaCT3EAouDonBUnwjk2wVLKs1E= + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha1-Nh2AghtvONp1vT8HheziCojF/n8= + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" + integrity sha1-+EzkPfAxIi0rrQaNJibLV5nDS8I= + dependencies: + "@babel/helper-member-expression-to-functions" "^7.5.5" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.5.5" + "@babel/types" "^7.5.5" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha1-Ze65VMjCRb6qToWdphiPOdceWFw= + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc= + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha1-xOABJEV2nigVtVKW6tQ6lYVJ9vo= + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.5.5.tgz#63908d2a73942229d1e6685bc2a0e730dde3b75e" + integrity sha1-Y5CNKnOUIinR5mhbwqDnMN3jt14= + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.5" + "@babel/types" "^7.5.5" + +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha1-VtETEr2SSPphlZHQJHK+boyzJUA= + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" + integrity sha1-AvB3rIgX099Kgy71neZ1Zeccyks= + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha1-somzBmadzkrSCwJSiJoVdoydQX4= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.5.5.tgz#a974cfae1e37c3110e71f3c6a2e48b8e71958cd4" + integrity sha1-qXTPrh43wxEOcfPGouSLjnGVjNQ= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.5.5" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-decorators@^7.1.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0" + integrity sha1-3psqGoqwGW83jiqC8QtuKjbyHMA= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-decorators" "^7.2.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha1-Vo7MRGxhSK5rJn8CVREwiR4p8xc= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.3.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" + integrity sha1-YZOXRPcbp2o65Gte6hilTBbSLlg= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha1-E12B7baKCB5V5W7EhUHs6AZcOPU= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" + integrity sha1-UB/9mCbAuR2iJpByByKsfLHKnHg= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha1-aeHw2zTG9aDPfiszI78VmnbIy38= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-decorators@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" + integrity sha1-xQsblX3MaeSxEntl4cM+72FXDBs= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@^7.0.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" + integrity sha1-acFZ/69JmBIhYa2OvF5tH1XfhhI= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha1-cr0T9v/h0lk4Ep0qGGsR/WKVFHA= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha1-C4WjtLx830zEuL8jYzW5B8oi58c= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha1-O3o+czUQxX6CC5FCpleayLDfrS4= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha1-qUAT1u2okI3+akd+f57ahWVuz1w= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha1-mur75Nb/xlY7+Pg3IJFijwB3lVA= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.3.4": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" + integrity sha1-iaOEigFmYjtbxIEWS1k2q5R+iH4= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha1-XTzBHo1d3XUqpkyRSNDbbLef0ZA= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.3.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoping%2Fdownload%2F%40babel%2Fplugin-transform-block-scoping-7.5.5.tgz#a35f395e5402822f10d2119f6f8e045e3639a2ce" + integrity sha1-o185XlQCgi8Q0hGfb44EXjY5os4= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.3.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" + integrity sha1-0JQpnZvWgKFKKg7a44MFrWD7Tek= + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.5.5" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.5.5" + "@babel/helper-split-export-declaration" "^7.4.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha1-g6ffamWIZbHI9kHVEMbzryICFto= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.2.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" + integrity sha1-9sCf3+P5RRb/B0/od9t7ye8FhVo= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha1-NhoUi8lRREMSxpRG127R6o5EUMM= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" + integrity sha1-xdv1EGv4TN9pEiLAl0wSsd+TGFM= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha1-pjhoKJ5bQAf3BU1GSRr1FDV2YAg= + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha1-Amf8c14kyAi6FzhmxsTRRA/DxVY= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha1-4UNhFquwYQwiWQlISHVKxSMJIq0= + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha1-aQNT6B+SZ9rU/Yz9d+r6hqulPqE= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.2.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" + integrity sha1-7wBDXUbaCllhqnKKHS7P8GPk+5E= + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" + integrity sha1-QlEn5gRSMTYIWO6qR6cdde3tenQ= + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.3.4": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" + integrity sha1-51JmoT75QgLbKgYgl3dW9R1S0kk= + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha1-dnjOdRafCHe46yI1U4wHQmjdAa4= + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.3.0": + version "7.4.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" + integrity sha1-nSaf0oo3AlgZm0KUc2gTpgu90QY= + dependencies: + regexp-tree "^0.1.6" + +"@babel/plugin-transform-new-target@^7.0.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" + integrity sha1-GNEgQ4sMye6VpH8scryXaPvtYKU= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.2.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" + integrity sha1-xwAh34NAc8ZethO4Z5zEo4HRqfk= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.5.5" + +"@babel/plugin-transform-parameters@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha1-dVbPA/MYvScZ/kySLS2Ai+VXHhY= + dependencies: + "@babel/helper-call-delegate" "^7.4.4" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-regenerator@^7.3.4": + version "7.4.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha1-Yp3IJRLFXO4BNB+ye9/LIQNUaA8= + dependencies: + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-runtime@^7.4.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.5.5.tgz#a6331afbfc59189d2135b2e09474457a8e3d28bc" + integrity sha1-pjMa+/xZGJ0hNbLglHRFeo49KLw= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha1-YzOu4vjW7n4oYVRXKYk0o7RhmPA= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha1-MQOpq+IvdCttQG7NPNSbd0kZtAY= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha1-oeRUtZlVYKnB4NU338FQYf0mh+E= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" + integrity sha1-nSj+p7vOY3+3YSoHUJidgyHUvLA= + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha1-EX0rzsL79ktLWdH5gZiUaC0p8rI= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" + integrity sha1-q0Y0u08U02cov1l4Mis1WHeHlw8= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/preset-env@^7.0.0 < 7.4.0": + version "7.3.4" + resolved "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.3.4.tgz#887cf38b6d23c82f19b5135298bdb160062e33e1" + integrity sha1-iHzzi20jyC8ZtRNSmL2xYAYuM+E= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.3.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.3.4" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.3.4" + "@babel/plugin-transform-classes" "^7.3.4" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.2.0" + "@babel/plugin-transform-dotall-regex" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.2.0" + "@babel/plugin-transform-function-name" "^7.2.0" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.3.4" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.3.4" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.2.0" + browserslist "^4.3.4" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/runtime-corejs2@^7.2.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/runtime-corejs2/download/@babel/runtime-corejs2-7.5.5.tgz#c3214c08ef20341af4187f1c9fbdc357fbec96b2" + integrity sha1-wyFMCO8gNBr0GH8cn73DV/vslrI= + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.0.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" + integrity sha1-dPulbTXvvspEQJHHhQzNSU/S8TI= + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.1.0", "@babel/template@^7.4.4": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha1-9LiNEiVomgj1vDoXSDVFvp5O0jc= + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.5.tgz?cache=0&sync_timestamp=1563399350354&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" + integrity sha1-9mT482jtMpiM1kjan3LVynDxZbs= + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.5.5" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.5.5" + "@babel/types" "^7.5.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" + integrity sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo= + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@hapi/address@2.x.x": + version "2.0.0" + resolved "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a" + integrity sha1-nwVGnIjLL9Pc1iR3a1TulcMSEmo= + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha1-CnCVreoGckPOMoPhtWuKj0U7JCo= + +"@hapi/hoek@8.x.x": + version "8.2.1" + resolved "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.2.1.tgz?cache=0&sync_timestamp=1565854121942&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fhoek%2Fdownload%2F%40hapi%2Fhoek-8.2.1.tgz#924af04cbb22e17359c620d2a9c946e63f58eb77" + integrity sha1-kkrwTLsi4XNZxiDSqclG5j9Y63c= + +"@hapi/joi@^15.0.1": + version "15.1.1" + resolved "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc= + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.3" + resolved "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Ftopo%2Fdownload%2F%40hapi%2Ftopo-3.1.3.tgz#c7a02e0d936596d29f184e6d7fdc07e8b5efce11" + integrity sha1-x6AuDZNlltKfGE5tf9wH6LXvzhE= + dependencies: + "@hapi/hoek" "8.x.x" + +"@intervolga/optimize-cssnano-plugin@^1.0.5": + version "1.0.6" + resolved "https://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8" + integrity sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg= + dependencies: + cssnano "^4.0.0" + cssnano-preset-default "^4.0.0" + postcss "^7.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4= + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs= + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.0" + resolved "https://registry.npm.taobao.org/@samverschueren/stream-to-observable/download/@samverschueren/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha1-7N9I1TLFjqR3rPyrgDSEJPjQZi8= + dependencies: + any-observable "^0.3.0" + +"@soda/friendly-errors-webpack-plugin@^1.7.1": + version "1.7.1" + resolved "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz#706f64bcb4a8b9642b48ae3ace444c70334d615d" + integrity sha1-cG9kvLSouWQrSK46zkRMcDNNYV0= + dependencies: + chalk "^1.1.3" + error-stack-parser "^2.0.0" + string-width "^2.0.0" + +"@types/events@*": + version "3.0.0" + resolved "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc= + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU= + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0= + +"@types/node@*": + version "12.7.2" + resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-12.7.2.tgz#c4e63af5e8823ce9cc3f0b34f7b998c2171f0c44" + integrity sha1-xOY69eiCPOnMPws097mYwhcfDEQ= + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4= + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha1-aQoUdbhPKohP0HzXl8APXzE1bqg= + +"@vue/babel-helper-vue-jsx-merge-props@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040" + integrity sha1-BI/leZWNpAj7eosqPsBQtQpmEEA= + +"@vue/babel-plugin-transform-vue-jsx@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.0.0.tgz#ebcbf39c312c94114c8c4f407ee4f6c97aa45432" + integrity sha1-68vznDEslBFMjE9AfuT2yXqkVDI= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + html-tags "^2.0.0" + lodash.kebabcase "^4.1.1" + svg-tags "^1.0.0" + +"@vue/babel-preset-app@^3.11.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-3.11.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-app%2Fdownload%2F%40vue%2Fbabel-preset-app-3.11.0.tgz#52bf79c15560a304a13f4770e3e5530e01dd6173" + integrity sha1-Ur95wVVgowShP0dw4+VTDgHdYXM= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-decorators" "^7.1.0" + "@babel/plugin-syntax-dynamic-import" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.4.0" + "@babel/preset-env" "^7.0.0 < 7.4.0" + "@babel/runtime" "^7.0.0" + "@babel/runtime-corejs2" "^7.2.0" + "@vue/babel-preset-jsx" "^1.0.0" + babel-plugin-dynamic-import-node "^2.2.0" + babel-plugin-module-resolver "3.2.0" + core-js "^2.6.5" + +"@vue/babel-preset-jsx@^1.0.0": + version "1.1.0" + resolved "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.1.0.tgz#c8001329f5b372297a3111a251eb4f9e956c1266" + integrity sha1-yAATKfWzcil6MRGiUetPnpVsEmY= + dependencies: + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" + "@vue/babel-sugar-functional-vue" "^1.0.0" + "@vue/babel-sugar-inject-h" "^1.0.0" + "@vue/babel-sugar-v-model" "^1.0.0" + "@vue/babel-sugar-v-on" "^1.1.0" + +"@vue/babel-sugar-functional-vue@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.0.0.tgz#17e2c4ca27b74b244da3b923240ec91d10048cb3" + integrity sha1-F+LEyie3SyRNo7kjJA7JHRAEjLM= + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-inject-h@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.0.0.tgz#e5efb6c5b5b7988dc03831af6d133bf7bcde6347" + integrity sha1-5e+2xbW3mI3AODGvbRM797zeY0c= + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-v-model@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.0.0.tgz#f4da56aa67f65a349bd2c269a95e72e601af4613" + integrity sha1-9NpWqmf2WjSb0sJpqV5y5gGvRhM= + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" + camelcase "^5.0.0" + html-tags "^2.0.0" + svg-tags "^1.0.0" + +"@vue/babel-sugar-v-on@^1.1.0": + version "1.1.0" + resolved "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.1.0.tgz#1f2b35eeeabb87eaf8925931f4d34fd8e6404a45" + integrity sha1-Hys17uq7h+r4klkx9NNP2OZASkU= + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" + camelcase "^5.0.0" + +"@vue/cli-overlay@^3.11.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-3.11.0.tgz?cache=0&sync_timestamp=1566403603544&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-overlay%2Fdownload%2F%40vue%2Fcli-overlay-3.11.0.tgz#88d49060095c9c5168ac6014d4c4eb66e7dd4874" + integrity sha1-iNSQYAlcnFForGAU1MTrZufdSHQ= + +"@vue/cli-plugin-babel@^3.6.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-3.11.0.tgz?cache=0&sync_timestamp=1566403613583&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-babel%2Fdownload%2F%40vue%2Fcli-plugin-babel-3.11.0.tgz#247a7233100a33ea0fd9f7d30bdf2b9b554e9e88" + integrity sha1-JHpyMxAKM+oP2ffTC98rm1VOnog= + dependencies: + "@babel/core" "^7.0.0" + "@vue/babel-preset-app" "^3.11.0" + "@vue/cli-shared-utils" "^3.11.0" + babel-loader "^8.0.5" + webpack "^4.0.0" + +"@vue/cli-plugin-eslint@^3.6.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-3.11.0.tgz#99b14a9d4ab05d96fc707d958db9de4856133329" + integrity sha1-mbFKnUqwXZb8cH2VjbneSFYTMyk= + dependencies: + "@vue/cli-shared-utils" "^3.11.0" + babel-eslint "^10.0.1" + eslint-loader "^2.1.2" + globby "^9.2.0" + webpack "^4.0.0" + yorkie "^2.0.0" + optionalDependencies: + eslint "^4.19.1" + eslint-plugin-vue "^4.7.1" + +"@vue/cli-service@^3.6.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-3.11.0.tgz#356526e9100a7a0a258e3c4a13ff421de29eadde" + integrity sha1-NWUm6RAKegoljjxKE/9CHeKerd4= + dependencies: + "@intervolga/optimize-cssnano-plugin" "^1.0.5" + "@soda/friendly-errors-webpack-plugin" "^1.7.1" + "@vue/cli-overlay" "^3.11.0" + "@vue/cli-shared-utils" "^3.11.0" + "@vue/component-compiler-utils" "^3.0.0" + "@vue/preload-webpack-plugin" "^1.1.0" + "@vue/web-component-wrapper" "^1.2.0" + acorn "^6.1.1" + acorn-walk "^6.1.1" + address "^1.0.3" + autoprefixer "^9.5.1" + browserslist "^4.5.4" + cache-loader "^2.0.1" + case-sensitive-paths-webpack-plugin "^2.2.0" + chalk "^2.4.2" + cli-highlight "^2.1.0" + clipboardy "^2.0.0" + cliui "^5.0.0" + copy-webpack-plugin "^4.6.0" + css-loader "^1.0.1" + cssnano "^4.1.10" + current-script-polyfill "^1.0.0" + debug "^4.1.1" + default-gateway "^5.0.2" + dotenv "^7.0.0" + dotenv-expand "^5.1.0" + escape-string-regexp "^1.0.5" + file-loader "^3.0.1" + fs-extra "^7.0.1" + globby "^9.2.0" + hash-sum "^1.0.2" + html-webpack-plugin "^3.2.0" + launch-editor-middleware "^2.2.1" + lodash.defaultsdeep "^4.6.1" + lodash.mapvalues "^4.6.0" + lodash.transform "^4.6.0" + mini-css-extract-plugin "^0.6.0" + minimist "^1.2.0" + ora "^3.4.0" + portfinder "^1.0.20" + postcss-loader "^3.0.0" + read-pkg "^5.0.0" + semver "^6.0.0" + slash "^2.0.0" + source-map-url "^0.4.0" + ssri "^6.0.1" + string.prototype.padend "^3.0.0" + terser-webpack-plugin "^1.2.3" + thread-loader "^2.1.2" + url-loader "^1.1.2" + vue-loader "^15.7.0" + webpack "^4.0.0" + webpack-bundle-analyzer "^3.3.0" + webpack-chain "^4.11.0" + webpack-dev-server "^3.4.1" + webpack-merge "^4.2.1" + +"@vue/cli-shared-utils@^3.11.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-3.11.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-3.11.0.tgz#a3d6f809b0dfb367e626b71405f85dea0631310b" + integrity sha1-o9b4CbDfs2fmJrcUBfhd6gYxMQs= + dependencies: + "@hapi/joi" "^15.0.1" + chalk "^2.4.1" + execa "^1.0.0" + launch-editor "^2.2.1" + lru-cache "^5.1.1" + node-ipc "^9.1.1" + open "^6.3.0" + ora "^3.4.0" + request "^2.87.0" + request-promise-native "^1.0.7" + semver "^6.0.0" + string.prototype.padstart "^3.0.0" + +"@vue/component-compiler-utils@^3.0.0": + version "3.0.0" + resolved "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.0.0.tgz#d16fa26b836c06df5baaeb45f3d80afc47e35634" + integrity sha1-0W+ia4NsBt9bqutF89gK/EfjVjQ= + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.14" + postcss-selector-parser "^5.0.0" + prettier "1.16.3" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + +"@vue/eslint-config-standard@^4.0.0": + version "4.0.0" + resolved "https://registry.npm.taobao.org/@vue/eslint-config-standard/download/@vue/eslint-config-standard-4.0.0.tgz#6be447ee674e3b0f733c584098fd9a22e6d76fcd" + integrity sha1-a+RH7mdOOw9zPFhAmP2aIubXb80= + dependencies: + eslint-config-standard "^12.0.0" + eslint-plugin-import "^2.14.0" + eslint-plugin-node "^8.0.0" + eslint-plugin-promise "^4.0.1" + eslint-plugin-standard "^4.0.0" + +"@vue/preload-webpack-plugin@^1.1.0": + version "1.1.1" + resolved "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fpreload-webpack-plugin%2Fdownload%2F%40vue%2Fpreload-webpack-plugin-1.1.1.tgz#18723530d304f443021da2292d6ec9502826104a" + integrity sha1-GHI1MNME9EMCHaIpLW7JUCgmEEo= + +"@vue/web-component-wrapper@^1.2.0": + version "1.2.0" + resolved "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.2.0.tgz#bb0e46f1585a7e289b4ee6067dcc5a6ae62f1dd1" + integrity sha1-uw5G8VhafiibTuYGfcxaauYvHdE= + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha1-UbHF/mV2o0lTv0slPfnw1JDZ41k= + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha1-G6kmopI2E+3OSW/VsC6M6KX0lyE= + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha1-xJ2tIvZFInxe22EL25aX8aq3Ifc= + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha1-/qk+Qphj3V5DOFVfQikjhaZT8gQ= + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha1-mnQP9I4/qjAisd/1RCPfmqKTwl4= + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha1-ugt9Oz9+RzPaYFnJMyJ12GBwJFI= + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha1-3vS5knsBAdyMu9jR7bW3ucguskU= + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha1-U3p1Dt31weky83RCBlUckcG5PmE= + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha1-dMpqa8vhnlCjtrRihH5pUD5r/L8= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha1-cSMp2+8kDza/V70ve4+5v0FUQh4= + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha1-BE7es06mefPgTNT9mCTV41dnrhA= + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha1-qL87XY/+mGx8Hjc8y9wqCRXwztw= + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha1-li2hKqWswcExyBxCMpkcgs5W4Bo= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha1-VIQHZsLBAC62TtGr5yCt7XFPmLw= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha1-sk2fa6UDlK8TSfUQr6j/y4pj0mQ= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha1-IVdvDsiLkUJzV7hTY4NmjvfGa40= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha1-4Q7s1ULQ5705T2gnxJ899tTu+4w= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha1-EUu8SB/RDKDiOzVg+oEnSLC65bw= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A= + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0= + +abbrev@1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg= + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80= + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-3.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= + dependencies: + acorn "^3.0.4" + +acorn-jsx@^5.0.0: + version "5.0.2" + resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" + integrity sha1-hLaOpEs3PE+GhgI6VR9hoht8Sk8= + +acorn-walk@^6.1.1: + version "6.2.0" + resolved "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha1-Ejy487hMIXHx9/slJhWxx4prGow= + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.npm.taobao.org/acorn/download/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= + +acorn@^5.5.0: + version "5.7.3" + resolved "https://registry.npm.taobao.org/acorn/download/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha1-Z6ojG/iBKXS4UjWpZ3Hra9B+onk= + +acorn@^6.0.2, acorn@^6.0.7, acorn@^6.1.1, acorn@^6.2.1: + version "6.3.0" + resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" + integrity sha1-AIdQkRn/pPwKAEHR6TpBfmjLhW4= + +address@^1.0.3: + version "1.1.1" + resolved "https://registry.npm.taobao.org/address/download/address-1.1.1.tgz#9483d6464788dee73e9a0f9f5d57bedf429b2a70" + integrity sha1-lIPWRkeI3uc+mg+fXVe+30KbKnA= + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha1-81mGrOuRr63sQQL72FAUlQzvpk0= + +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo= + +ajv@^5.2.3, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: + version "6.10.2" + resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha1-086gTWsBeyiUrWkED+yLYj60vVI= + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha1-46PaS/uubIapwoViXeEkojQCb78= + +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s= + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc= + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1566430679283&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1566430679283&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0= + dependencies: + color-convert "^1.9.0" + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/any-observable/download/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha1-r5M0deWAamfQ198JDdXovvZdEZs= + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha1-vLJLTzeTTZqnrBe0ra+J58du8us= + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha1-aALmJk79GMeQobDVF/DyYnvyyUo= + +arch@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" + integrity sha1-j1wnMao1owkpIhuwZA7tZRdeyE4= + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha1-SzXClE8GKov82mZBB2A1D+nd/CE= + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE= + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha1-NgSLv/TntH4TZkQxbJlmnqWukfE= + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk= + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.npm.taobao.org/array-includes/download/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-union@^1.0.1, array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farrify%2Fdownload%2Farrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA= + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha1-jSR136tVO7M+d7VOWeiAu4ziMTY= + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs= + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k= + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8= + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.npm.taobao.org/async-foreach/download/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha1-3TeelPDbgxCwgpH51kwyCXZmF/0= + +async-validator@^1.10.0: + version "1.12.2" + resolved "https://registry.npm.taobao.org/async-validator/download/async-validator-1.12.2.tgz#beae671e7174d2938b7b4b69d2fb7e722b7fd72c" + integrity sha1-vq5nHnF00pOLe0tp0vt+cit/1yw= + +async@^1.5.2: + version "1.5.2" + resolved "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k= + +autoprefixer@^9.5.1: + version "9.6.1" + resolved "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.6.1.tgz#51967a02d2d2300bb01866c1611ec8348d355a47" + integrity sha1-UZZ6AtLSMAuwGGbBYR7INI01Wkc= + dependencies: + browserslist "^4.6.3" + caniuse-lite "^1.0.30000980" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.17" + postcss-value-parser "^4.0.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8= + +axios@^0.18.0: + version "0.18.1" + resolved "https://registry.npm.taobao.org/axios/download/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + integrity sha1-/z8N4ue10YDnV62YAA8Qgbh7zqM= + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-eslint@^10.0.1: + version "10.0.3" + resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" + integrity sha1-gaLGab4PIF4ZRi/tJILTPkaHqIo= + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-loader@^8.0.5: + version "8.0.6" + resolved "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs= + dependencies: + find-cache-dir "^2.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + pify "^4.0.1" + +babel-plugin-dynamic-import-node@^2.2.0, babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha1-8A9Qe9qjw+P/bn5emNkKesq5b38= + dependencies: + object.assign "^4.1.0" + +babel-plugin-module-resolver@3.2.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/babel-plugin-module-resolver/download/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7" + integrity sha1-3fpeMB47mqEthSqZefGLN4gf9ac= + dependencies: + find-babel-config "^1.1.0" + glob "^7.1.2" + pkg-up "^2.0.0" + reselect "^3.0.1" + resolve "^1.4.0" + +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.npm.taobao.org/babel-polyfill/download/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha1-e95c7RRbbVUakNuH+DxVi060io8= + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch-processor@1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/batch-processor/download/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" + integrity sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg= + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bfj@^6.1.1: + version "6.1.2" + resolved "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" + integrity sha1-MlyGGoIryzWKQceKM7jm4ght3n8= + dependencies: + bluebird "^3.5.5" + check-types "^8.0.3" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4= + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg= + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U= + +block-stream@*: + version "0.0.9" + resolved "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.5: + version "3.5.5" + resolved "https://registry.npm.taobao.org/bluebird/download/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" + integrity sha1-qNCv1zJR7/u9X+OEp31zADwXpx8= + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha1-LN4J617jQfSEdGuwMJsyU7GxRC8= + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io= + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha1-WXn9PxTNUxVl5fot8av/8d+u5yk= + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha1-Mmc0ZC9APavDADIJhTu3CtQo70g= + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha1-jWR0wbhwv9q807z8wZNKEOlPFfA= + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw= + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha1-KGlFnZqjviRf6P4sofRuLn9U1z8= + dependencies: + pako "~1.0.5" + +browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.5.4, browserslist@^4.6.3: + version "4.6.6" + resolved "https://registry.npm.taobao.org/browserslist/download/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" + integrity sha1-bkv0Z83lILydvfN0fa+gNTHOxFM= + dependencies: + caniuse-lite "^1.0.30000984" + electron-to-chromium "^1.3.191" + node-releases "^1.1.25" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8= + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow= + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.npm.taobao.org/buffer/download/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY= + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.npm.taobao.org/cacache/download/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA= + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cacache@^12.0.2: + version "12.0.3" + resolved "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha1-vpmruk4b9d9GHNWiwQcfxDJXM5A= + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha1-Cn9GQWgxyLZi7jb+TnxZ129marI= + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cache-loader@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/cache-loader/download/cache-loader-2.0.1.tgz#5758f41a62d7c23941e3c3c7016e6faeb03acb07" + integrity sha1-V1j0GmLXwjlB48PHAW5vrrA6ywc= + dependencies: + loader-utils "^1.1.0" + mkdirp "^0.5.1" + neo-async "^2.6.0" + normalize-path "^3.0.0" + schema-utils "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/caller-path/download/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + dependencies: + callsites "^0.2.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/callsites/download/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M= + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz?cache=0&sync_timestamp=1564587881114&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase-keys%2Fdownload%2Fcamelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA= + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA= + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000984: + version "1.0.30000989" + resolved "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" + integrity sha1-uRk+KTzPfkQmxSRRNLjypWwKxLk= + +case-sensitive-paths-webpack-plugin@^2.2.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.2.0.tgz#3371ef6365ef9c25fa4b81c16ace0e9c7dc58c3e" + integrity sha1-M3HvY2XvnCX6S4HBas4OnH3FjD4= + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz?cache=0&sync_timestamp=1562887878067&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1562887878067&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha1-kAlISfCTfy7twkJdDSip5fDLrZ4= + +check-types@^8.0.3: + version "8.0.3" + resolved "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz?cache=0&sync_timestamp=1566113968138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcheck-types%2Fdownload%2Fcheck-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" + integrity sha1-M1bMoZyIlUTy16le1JzlCKDs9VI= + +chokidar@^2.0.2, chokidar@^2.1.6: + version "2.1.8" + resolved "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc= + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.0.1, chownr@^1.1.1: + version "1.1.2" + resolved "https://registry.npm.taobao.org/chownr/download/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" + integrity sha1-oY8eCyacimpdPIbrKYvrFMPde/Y= + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha1-I0CQ7pfH1K0aLEvq4nUF3v/GCKQ= + dependencies: + tslib "^1.9.0" + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc= + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY= + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha1-+TNprouafOAv1B+q0MqDAzGQxGM= + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.2.x: + version "4.2.1" + resolved "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha1-LUEe92uFabbQyEBo2r6FsKpeXBc= + dependencies: + source-map "~0.6.0" + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-cursor%2Fdownload%2Fcli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-highlight@^2.1.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.1.tgz#2180223d51618b112f4509cf96e4a6c750b07e97" + integrity sha1-IYAiPVFhixEvRQnPluSmx1Cwfpc= + dependencies: + chalk "^2.3.0" + highlight.js "^9.6.0" + mz "^2.4.0" + parse5 "^4.0.0" + yargs "^13.0.0" + +cli-spinners@^2.0.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" + integrity sha1-6LmI2SBsaSMC2O6DTnqFwBRNj3c= + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/cli-truncate/download/cli-truncate-0.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-truncate%2Fdownload%2Fcli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +clipboardy@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclipboardy%2Fdownload%2Fclipboardy-2.1.0.tgz#0123a0c8fac92f256dc56335e0bb8be97a4909a5" + integrity sha1-ASOgyPrJLyVtxWM14LuL6XpJCaU= + dependencies: + arch "^2.1.1" + execa "^1.0.0" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha1-NIQi2+gtgAswIu709qwQvy5NG0k= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U= + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c= + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM= + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +coalescy@1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/coalescy/download/coalescy-1.0.0.tgz#4b065846b836361ada6c4b4a4abf4bc1cac31bf1" + integrity sha1-SwZYRrg2NhrabEtKSr9LwcrDG/E= + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg= + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0: + version "1.1.4" + resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw= + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha1-aBSOf4XUGtdknF+oyBBvCY0inhA= + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha1-w9RaizT9cwYxoRCoolIGgrMdWn8= + dependencies: + delayed-stream "~1.0.0" + +commander@2.17.x: + version "2.17.1" + resolved "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1565398176321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha1-vXerfebelCBc6sxy8XFtKfIKd78= + +commander@^2.14.1, commander@^2.18.0, commander@^2.20.0, commander@^2.9.0: + version "2.20.0" + resolved "https://registry.npm.taobao.org/commander/download/commander-2.20.0.tgz?cache=0&sync_timestamp=1565398176321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha1-1YuytcHuj4ew00ACfp6U4iLFpCI= + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz?cache=0&sync_timestamp=1565398176321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So= + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A= + +compressible@~2.0.16: + version "2.0.17" + resolved "https://registry.npm.taobao.org/compressible/download/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" + integrity sha1-bowQihatWDhKl386SCyiC/8vOME= + dependencies: + mime-db ">= 1.40.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48= + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0, concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ= + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w= + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha1-IasEMjXHGgfUXZqtmFk7DbpWurc= + dependencies: + bluebird "^3.1.1" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/contains-path/download/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70= + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js= + +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha1-UbU3qMQ+DwTewZk7/83VBOdYrCA= + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo= + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha1-kilzmMrjSTf8r9bsgTnBgFHwteA= + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-webpack-plugin@^4.6.0: + version "4.6.0" + resolved "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-4.6.0.tgz#e7f40dd8a68477d405dd1b7a854aae324b158bae" + integrity sha1-5/QN2KaEd9QF3Rt6hUquMksVi64= + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + globby "^7.1.1" + is-glob "^4.0.0" + loader-utils "^1.1.0" + minimatch "^3.0.4" + p-limit "^1.0.0" + serialize-javascript "^1.4.0" + +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: + version "2.6.9" + resolved "https://registry.npm.taobao.org/core-js/download/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha1-a0shRiDINBUuF5Mjcn/Bl0GwhPI= + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0, cosmiconfig@^5.2.0: + version "5.2.1" + resolved "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha1-BA9yaAnFked6F8CjYmykW08Wixo= + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8= + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY= + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8= + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha1-OWz58xN/A+S45TLFj2mCVOAPgOw= + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha1-wZiUD2OnbX42wecQGLABchBUyyI= + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/css-loader/download/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" + integrity sha1-aIW7UjOzXsR7AGBX2gHMZAtref4= + dependencies: + babel-code-frame "^6.26.0" + css-selector-tokenizer "^0.7.0" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash "^4.17.11" + postcss "^6.0.23" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc= + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.0.2" + resolved "https://registry.npm.taobao.org/css-select/download/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" + integrity sha1-q0OGzsnh9miFVWSxfDcztDsqXt4= + dependencies: + boolbase "^1.0.0" + css-what "^2.1.2" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.0: + version "0.7.1" + resolved "https://registry.npm.taobao.org/css-selector-tokenizer/download/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" + integrity sha1-oXcnGovKUBkXL0+JH8bu2cv2jV0= + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-tree@1.0.0-alpha.29: + version "1.0.0-alpha.29" + resolved "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + integrity sha1-P6nU7zFCy9HDAedmTB81K9gvWjk= + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-tree@1.0.0-alpha.33: + version "1.0.0-alpha.33" + resolved "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.33.tgz#970e20e5a91f7a378ddd0fc58d0b6c8d4f3be93e" + integrity sha1-lw4g5akfejeN3Q/FjQtsjU876T4= + dependencies: + mdn-data "2.0.4" + source-map "^0.5.3" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/css-unit-converter/download/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +css-what@2.1, css-what@^2.1.2: + version "2.1.3" + resolved "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz?cache=0&sync_timestamp=1564773794818&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI= + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/cssesc/download/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/cssesc/download/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha1-OxO9G7HLNuG8taTc0n9UxdyzVwM= + +cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y= + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI= + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M= + +cssnano@^4.0.0, cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI= + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^3.5.1: + version "3.5.1" + resolved "https://registry.npm.taobao.org/csso/download/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + integrity sha1-e564vmFiiXPBsmHhadLwJACOdYs= + dependencies: + css-tree "1.0.0-alpha.29" + +current-script-polyfill@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/current-script-polyfill/download/current-script-polyfill-1.0.0.tgz#f31cf7e4f3e218b0726e738ca92a02d3488ef615" + integrity sha1-8xz35PPiGLBybnOMqSoC00iO9hU= + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.npm.taobao.org/cyclist/download/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.npm.taobao.org/date-fns/download/date-fns-1.30.1.tgz?cache=0&sync_timestamp=1566576473797&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-fns%2Fdownload%2Fdate-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw= + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/date-now/download/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8= + dependencies: + ms "2.0.0" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE= + dependencies: + ms "2.0.0" + +debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha1-6D0X3hbYp++3cX7b5fsQE17uYps= + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E= + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npm.taobao.org/dedent/download/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/deep-extend/download/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw= + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^1.5.2: + version "1.5.2" + resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1562601140019&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + integrity sha1-EEmdhohEza1P7ghC34x/bwyVp1M= + +deepmerge@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-2.2.1.tgz?cache=0&sync_timestamp=1562601140019&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" + integrity sha1-XT/yKgHAD2RUBaL7wX0HeKGAEXA= + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz?cache=0&sync_timestamp=1565763930901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs= + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +default-gateway@^5.0.2: + version "5.0.3" + resolved "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.3.tgz?cache=0&sync_timestamp=1565763930901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-5.0.3.tgz#18434c9430a18035a2861f7839bf7669b3436e6f" + integrity sha1-GENMlDChgDWihh94Ob92abNDbm8= + dependencies: + execa "^2.0.3" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE= + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha1-1Flono1lS6d+AqgX+HENcCyxbp0= + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/del/download/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha1-no8RciLqRKMf86FWwEm5kFKp8LQ= + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/des.js/download/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.npm.taobao.org/detect-libc/download/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha1-AU7o+PZpxcWAI9pkuBecCDooxGw= + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha1-QOjumPVaIUlgcUaSHGPhrl89KHU= + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0, dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ= + dependencies: + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo= + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha1-XNAfwQFiG0LEzX9dGmYkNxbT850= + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha1-rd6+rXKmV023g2OdyHoSF3OXOWE= + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g= + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.1" + resolved "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.1.tgz?cache=0&sync_timestamp=1564710970695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdom-serializer%2Fdownload%2Fdom-serializer-0.2.1.tgz#13650c850daffea35d8b626a4cfc4d3a17643fdb" + integrity sha1-E2UMhQ2v/qNdi2JqTPxNOhdkP9s= + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto= + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8= + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha1-H4vf6R9aeAYydOgDtL3O326U+U0= + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz?cache=0&sync_timestamp=1564708909977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha1-iAUJfpM9ZehVRvcm1g9euItE+AM= + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo= + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.1: + version "4.2.0" + resolved "https://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc= + dependencies: + is-obj "^1.0.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha1-P7rwIL/XlIhAcuomsel5HUWmKfA= + +dotenv@^7.0.0: + version "7.0.0" + resolved "https://registry.npm.taobao.org/dotenv/download/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha1-or481Sc2ZzIG6KhftSEO6ilijnw= + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk= + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +easy-stack@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.0.tgz#12c91b3085a37f0baa336e9486eac4bf94e3e788" + integrity sha1-EskbMIWjfwuqM26UhurEv5Tj54g= + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +echarts@^4.2.1: + version "4.2.1" + resolved "https://registry.npm.taobao.org/echarts/download/echarts-4.2.1.tgz#9a8ea3b03354f86f824d97625c334cf16965ef03" + integrity sha1-mo6jsDNU+G+CTZdiXDNM8Wll7wM= + dependencies: + zrender "4.0.7" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.1: + version "2.6.2" + resolved "https://registry.npm.taobao.org/ejs/download/ejs-2.6.2.tgz#3a32c63d1cd16d11266cd4703b14fec4e74ab4f6" + integrity sha1-OjLGPRzRbREmbNRwOxT+xOdKtPY= + +electron-to-chromium@^1.3.191: + version "1.3.241" + resolved "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.241.tgz#859dc49ab7f90773ed698767372d384190f60cb1" + integrity sha1-hZ3Emrf5B3PtaYdnNy04QZD2DLE= + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/elegant-spinner/download/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + +element-resize-detector@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/element-resize-detector/download/element-resize-detector-1.2.0.tgz#63344fd6f4e5ecff6f018d027e17b281fd4fa338" + integrity sha1-YzRP1vTl7P9vAY0Cfheygf1Pozg= + dependencies: + batch-processor "1.0.0" + +elliptic@^6.0.0: + version "6.5.0" + resolved "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" + integrity sha1-K47UyJG33jIA4UQSpbgkjHr1Bco= + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY= + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz?cache=0&sync_timestamp=1563088398038&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femojis-list%2Fdownload%2Femojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha1-7SljTRm6ukY7bOa4CjchPqtx7EM= + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha1-Qcfgv9/nSsH/4eV61qXGyfN0Kn8= + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz?cache=0&sync_timestamp=1563403393055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha1-vfpzUplmTfr9NFKe1PhSKidf6lY= + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz?cache=0&sync_timestamp=1563403393055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q= + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg= + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha1-tKxAZIEH/c3PriQvQovqihTU8b8= + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.0: + version "2.0.3" + resolved "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.3.tgz?cache=0&sync_timestamp=1565689172938&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ferror-stack-parser%2Fdownload%2Ferror-stack-parser-2.0.3.tgz#9d3c000fb9f5c461f7c4e63c1aa75373ac7aaa36" + integrity sha1-nTwAD7n1xGH3xOY8GqdTc6x6qjY= + dependencies: + stackframe "^1.0.4" + +es-abstract@^1.12.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.13.0" + resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha1-rIYUX91QmdjdSVWMy6Lq+biOJOk= + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha1-7fckeAM0VujdqO8J4ArZZQcH83c= + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-config-standard@^12.0.0: + version "12.0.0" + resolved "https://registry.npm.taobao.org/eslint-config-standard/download/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" + integrity sha1-Y4tMZdsL1aQTGflruh8V3a0hB9k= + +eslint-config-vue@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/eslint-config-vue/download/eslint-config-vue-2.0.2.tgz#a3ab1004899e49327a94c63e24d47a396b2f4848" + integrity sha1-o6sQBImeSTJ6lMY+JNR6OWsvSEg= + +eslint-friendly-formatter@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/eslint-friendly-formatter/download/eslint-friendly-formatter-4.0.1.tgz#27d504dc837f7caddbf201b2e84a4ee730ba3efa" + integrity sha1-J9UE3IN/fK3b8gGy6EpO5zC6Pvo= + dependencies: + chalk "^2.0.1" + coalescy "1.0.0" + extend "^3.0.0" + minimist "^1.2.0" + strip-ansi "^4.0.0" + text-table "^0.2.0" + +eslint-import-resolver-node@^0.3.2: + version "0.3.2" + resolved "https://registry.npm.taobao.org/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha1-WPFfuDm40FdsqYBBNHaqskcttmo= + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-loader@^2.1.2: + version "2.2.1" + resolved "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" + integrity sha1-KLnBLaVAV68IReKmEScBova/gzc= + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-module-utils@^2.4.0: + version "2.4.1" + resolved "https://registry.npm.taobao.org/eslint-module-utils/download/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" + integrity sha1-e0Z1h1v5aw2/GyGXdFblux9eAYw= + dependencies: + debug "^2.6.8" + pkg-dir "^2.0.0" + +eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/eslint-plugin-es/download/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" + integrity sha1-R19luyDJk/wQ6Mj+d9HWAGgHLaY= + dependencies: + eslint-utils "^1.3.0" + regexpp "^2.0.1" + +eslint-plugin-flow-vars@^0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/eslint-plugin-flow-vars/download/eslint-plugin-flow-vars-0.5.0.tgz#a7fb78fd873c86e0e5839df3b3c90d47bc68c6d2" + integrity sha1-p/t4/Yc8huDlg53zs8kNR7xoxtI= + +eslint-plugin-html@^5.0.5: + version "5.0.5" + resolved "https://registry.npm.taobao.org/eslint-plugin-html/download/eslint-plugin-html-5.0.5.tgz#e2388f813f75b2287cde884811eab287de8e0f56" + integrity sha1-4jiPgT91sih83ohIEeqyh96OD1Y= + dependencies: + htmlparser2 "^3.10.0" + +eslint-plugin-import@^2.14.0, eslint-plugin-import@^2.17.2: + version "2.18.2" + resolved "https://registry.npm.taobao.org/eslint-plugin-import/download/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" + integrity sha1-AvEYC5Cwd7M9RHoXojJs60AKzrY= + dependencies: + array-includes "^3.0.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.11.0" + +eslint-plugin-node@^8.0.0: + version "8.0.1" + resolved "https://registry.npm.taobao.org/eslint-plugin-node/download/eslint-plugin-node-8.0.1.tgz#55ae3560022863d141fa7a11799532340a685964" + integrity sha1-Va41YAIoY9FB+noReZUyNApoWWQ= + dependencies: + eslint-plugin-es "^1.3.1" + eslint-utils "^1.3.1" + ignore "^5.0.2" + minimatch "^3.0.4" + resolve "^1.8.1" + semver "^5.5.0" + +eslint-plugin-node@^9.0.1: + version "9.1.0" + resolved "https://registry.npm.taobao.org/eslint-plugin-node/download/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a" + integrity sha1-8v2IUJox7GnbbpYG122rxa3BuRo= + dependencies: + eslint-plugin-es "^1.4.0" + eslint-utils "^1.3.1" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^4.0.1, eslint-plugin-promise@^4.1.1: + version "4.2.1" + resolved "https://registry.npm.taobao.org/eslint-plugin-promise/download/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" + integrity sha1-hF/YsiYK2PglZMEiL85ErXHZQYo= + +eslint-plugin-standard@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/eslint-plugin-standard/download/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" + integrity sha1-/wUZ9/+v8RT3bRvXw5lu7w9uILQ= + +eslint-plugin-vue@^4.7.1: + version "4.7.1" + resolved "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-4.7.1.tgz#c829b9fc62582c1897b5a0b94afd44ecca511e63" + integrity sha1-yCm5/GJYLBiXtaC5Sv1E7MpRHmM= + dependencies: + vue-eslint-parser "^2.0.3" + +eslint-plugin-vue@^5.2.2: + version "5.2.3" + resolved "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-5.2.3.tgz#3ee7597d823b5478804b2feba9863b1b74273961" + integrity sha1-PudZfYI7VHiASy/rqYY7G3QnOWE= + dependencies: + vue-eslint-parser "^5.0.0" + +eslint-scope@^3.7.1: + version "3.7.3" + resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" + integrity sha1-u1ByANPRf2AkdjYWC0gmKEsQhTU= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0, eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha1-ygODMxD2iJoyZHgaqC5j65z+eEg= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.0, eslint-utils@^1.3.1: + version "1.4.2" + resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.2.tgz?cache=0&sync_timestamp=1566297129313&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-utils%2Fdownload%2Feslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" + integrity sha1-FmpRgO9qt+tGLxYv0ObyRj1zCas= + dependencies: + eslint-visitor-keys "^1.0.0" + +eslint-visitor-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz?cache=0&sync_timestamp=1565705483230&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI= + +eslint@^4.19.1: + version "4.19.1" + resolved "https://registry.npm.taobao.org/eslint/download/eslint-4.19.1.tgz?cache=0&sync_timestamp=1566614535578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + integrity sha1-MtHWU+HZBAiFS/spbwdux+GGowA= + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +eslint@^5.16.0: + version "5.16.0" + resolved "https://registry.npm.taobao.org/eslint/download/eslint-5.16.0.tgz?cache=0&sync_timestamp=1566614535578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha1-oeOsGq5KP72Clvz496tzFMu2q+o= + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.13.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + +espree@^3.5.2, espree@^3.5.4: + version "3.5.4" + resolved "https://registry.npm.taobao.org/espree/download/espree-3.5.4.tgz?cache=0&sync_timestamp=1566612152812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + integrity sha1-sPRHGHyKi+2US4FaZgvd9d610ac= + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +espree@^4.1.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/espree/download/espree-4.1.0.tgz?cache=0&sync_timestamp=1566612152812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" + integrity sha1-co1UUeD9FWwEOEp62J7VH/VOsl8= + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.npm.taobao.org/espree/download/espree-5.0.1.tgz?cache=0&sync_timestamp=1566612152812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha1-XWUm+k/H8HiKXPdbFfMDI+L4H3o= + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= + +esquery@^1.0.0, esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/esquery/download/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg= + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8= + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1565734335990&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0= + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q= + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-pubsub@4.3.0: + version "4.3.0" + resolved "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" + integrity sha1-9o2Ba8KfHsAsU53FjI3UDOcss24= + +eventemitter3@^3.0.0: + version "3.1.2" + resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha1-LT1I+cNGaY/Og6hdfWZOmFNd9uc= + +events@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/events/download/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha1-mgoN+vYok9krh1uPJpjKQRSXPog= + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA= + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI= + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg= + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^2.0.3: + version "2.0.4" + resolved "https://registry.npm.taobao.org/execa/download/execa-2.0.4.tgz#2f5cc589c81db316628627004ea4e37b93391d8e" + integrity sha1-L1zFicgdsxZihicATqTje5M5HY4= + dependencies: + cross-spawn "^6.0.5" + get-stream "^5.0.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^3.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +express@^4.16.3, express@^4.17.1: + version "4.17.1" + resolved "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ= + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo= + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha1-BFURz9jRM/OEZnPRBHwVTiFK09U= + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha1-ywP3QL764D6k0oPK7SdBqD8zVJU= + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM= + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz?cache=0&sync_timestamp=1562517919182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz?cache=0&sync_timestamp=1562517919182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha1-aVOFfDr6R1//ku5gFdUtpwpM050= + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.1: + version "1.1.2" + resolved "https://registry.npm.taobao.org/fastparse/download/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha1-kXKMWllC7O2FMSg8eUQe5BIsNak= + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha1-XA6aiWjokSwoZjn96XeosgnyUI4= + dependencies: + websocket-driver ">=0.5.1" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A= + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w= + dependencies: + flat-cache "^2.0.1" + +file-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/file-loader/download/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha1-+OC6C1mZGLUa3+RdZtHnca1WD6o= + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.npm.taobao.org/filesize/download/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc= + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0= + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-babel-config@^1.1.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/find-babel-config/download/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" + integrity sha1-qbezF+tbmGDNqdVHQKjIM3oig6I= + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc= + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha1-SRafHXmTQwZG2mHsxa41XCHJe3M= + dependencies: + locate-path "^3.0.0" + +flat-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.npm.taobao.org/flat-cache/download/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha1-LC73dSXMKSkAff/6HdMUqpyd7m8= + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA= + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/flatted/download/flatted-2.0.1.tgz?cache=0&sync_timestamp=1561466276595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha1-aeV8qo8OrLwoHS4stFjUb9tEngg= + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug= + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +fn-name@~2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/fn-name/download/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" + integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc= + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio= + dependencies: + debug "=3.1.0" + +follow-redirects@^1.0.0: + version "1.7.0" + resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" + integrity sha1-SJ68GY3A5/ZBZ70jsDxMGbV4THY= + dependencies: + debug "^3.2.6" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha1-3M5SwF9kTymManq5Nr1yTO/786Y= + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha1-TxicRKoSO4lfcigE9V6iPq3DSOk= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.6" + resolved "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha1-LFzDDe2BKCv+ig18fBhT3esQLAc= + dependencies: + minipass "^2.2.1" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha1-P17WZYPM1vQAtaANtvfoYTY+OI8= + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.npm.taobao.org/fstream/download/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU= + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +g-status@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/g-status/download/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97" + integrity sha1-Jw/TIRno/JSW8Gb+X+iOCmvHi5c= + dependencies: + arrify "^1.0.1" + matcher "^1.0.0" + simple-git "^1.85.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.npm.taobao.org/gaze/download/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko= + dependencies: + globule "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o= + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/get-own-enumerable-property-symbols/download/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" + integrity sha1-uHe0mlwWrvrDZV8u0upbaE340gM= + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha1-wbJVV189wh1Zv8ec09K0axw6VLU= + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha1-ASA83JJZf5uQkGfD5lbMH008Tck= + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: + version "7.1.4" + resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha1-qmCKL2xXetNX4a5aXCbZqNGWklU= + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.0.1, globals@^11.1.0, globals@^11.7.0: + version "11.12.0" + resolved "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4= + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha1-/QKacGxwPSm90XD0tts6P3p8tj0= + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +globule@^1.0.0: + version "1.2.1" + resolved "https://registry.npm.taobao.org/globule/download/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + integrity sha1-Xf+xsZHyLSB5epNptJ6rTpg5aW0= + dependencies: + glob "~7.1.1" + lodash "~4.17.10" + minimatch "~3.0.2" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.2" + resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha1-bwlSYF0BQMHP2xOO0AV3W5LWewI= + +gzip-size@^5.0.0: + version "5.1.1" + resolved "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ= + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha1-DgOWlf9QyT/CiFV9aW88HcZ3Z1Q= + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha1-HvievT5JllV2de7ZiTEQ3DUPoIA= + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I= + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x, he@^1.1.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8= + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4= + +highlight.js@^9.6.0: + version "9.15.10" + resolved "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.15.10.tgz#7b18ed75c90348c045eef9ed08ca1319a2219ad2" + integrity sha1-exjtdckDSMBF7vntCMoTGaIhmtI= + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha1-YJIH1mEQADOpqUAq096mdzgcGx0= + +hosted-git-info@^2.1.4: + version "2.8.4" + resolved "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" + integrity sha1-RBGauvS8ZGkqFqzjRwD+2cA+JUY= + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c= + +html-entities@^1.2.1: + version "1.2.1" + resolved "https://registry.npm.taobao.org/html-entities/download/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + +html-minifier@^3.2.3: + version "3.5.21" + resolved "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw= + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz?cache=0&sync_timestamp=1566122004262&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-tags%2Fdownload%2Fhtml-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= + +html-webpack-plugin@^3.2.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@^3.10.0, htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1564773692945&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha1-vWedw/WYl7ajS7EHSchVu1OpOS8= + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha1-bGGeT5xgMIw4UZSYwU+7EKrOuwY= + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-proxy-middleware@^0.19.1: + version "0.19.1" + resolved "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha1-GDx9xKoUeRUDBkmMIQza+WCApDo= + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.17.0" + resolved "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha1-etOElGWPhGBeL220Q230EPTlvpo= + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/icss-utils/download/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= + dependencies: + postcss "^6.0.1" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q= + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/ignore-walk/download/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha1-qD5i59JyrA47VRqqgoMaGbafgvg= + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.3, ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM= + +ignore@^4.0.3, ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw= + +ignore@^5.0.2, ignore@^5.1.1: + version "5.1.4" + resolved "https://registry.npm.taobao.org/ignore/download/ignore-5.1.4.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" + integrity sha1-bTP6Hc7235MPrgA0RvM0Fa+QURg= + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha1-VQcL44pZk88Y72236WH1vuXFoJ0= + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/indent-string/download/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finfer-owner%2Fdownload%2Finfer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha1-xM78qo5RBRwqQLos6KPScpWvlGc= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc= + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + integrity sha1-ndLyrXZdyrH/BEO0kUQqILoifck= + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^6.2.2: + version "6.5.2" + resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha1-rVCUI3XQNtMn/1KMCL1fqwiZKMo= + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc= + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY= + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/invert-kv/download/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI= + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.0: + version "1.9.0" + resolved "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha1-N9905DCg5HVQ/lSi3v4w2KzZX2U= + +ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha1-v/OFQ+64mEglB5/zoqjmy9RngbM= + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.0: + version "3.0.1" + resolved "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.1.tgz#e315cbdcbbc3d6789532d591954ac78a0e5049f6" + integrity sha1-4xXL3LvD1niVMtWRlUrHig5QSfY= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY= + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha1-RXSirlb3qyBolvtDHq7tBm/fjwM= + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha1-76ouqdqg16suoTqXsritUf776L4= + +is-buffer@^2.0.2: + version "2.0.3" + resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" + integrity sha1-Ts8/z3ScvR5HJonhCaxmJhol5yU= + +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU= + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw= + dependencies: + ci-info "^1.5.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc= + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco= + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw= + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ= + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw= + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0, is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-observable/download/is-observable-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-observable%2Fdownload%2Fis-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha1-s+mGyPRN6VCGfKtUA/WjRlAFl14= + dependencies: + symbol-observable "^1.1.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s= + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha1-WsSLNF72dTOb1sekipEhELJBz1I= + dependencies: + is-path-inside "^1.0.0" + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha1-v+Lcomxp85cmWkAJljYCk1oFOss= + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha1-fJgQWH1lmkDSe8201WFuqwWUlLI= + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc= + dependencies: + isobject "^3.0.1" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-promise%2Fdownload%2Fis-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-regexp/download/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg= + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha1-venDJoDW+uBBKdasnZIc54FfeOM= + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha1-kyHb0pwhLlypnE+peUxxS8r6L3U= + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha1-oFX2rlcZLK7jKeeoYBGLSXqVDzg= + dependencies: + has-symbols "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0= + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz?cache=0&sync_timestamp=1562592125418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +javascript-stringify@^1.6.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" + integrity sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM= + +js-base64@^2.1.8: + version "2.5.1" + resolved "https://registry.npm.taobao.org/js-base64/download/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" + integrity sha1-Hvo57yxfeYC7F4St5KivLeMpESE= + +js-calendar@^1.2.3: + version "1.2.3" + resolved "https://registry.npm.taobao.org/js-calendar/download/js-calendar-1.2.3.tgz#a583b0644b4e695ba394f344d103dbcc7a7a7d3e" + integrity sha1-pYOwZEtOaVujlPNE0QPbzHp6fT4= + +js-levenshtein@^1.1.3: + version "1.1.6" + resolved "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha1-xs7ljrNVA3LfjeuF+tXOZs4B1Z0= + +js-message@1.0.5: + version "1.0.5" + resolved "https://registry.npm.taobao.org/js-message/download/js-message-1.0.5.tgz#2300d24b1af08e89dd095bc1a4c9c9cfcb892d15" + integrity sha1-IwDSSxrwjondCVvBpMnJz8uJLRU= + +js-queue@2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.0.tgz#362213cf860f468f0125fc6c96abc1742531f948" + integrity sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug= + dependencies: + easy-stack "^1.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk= + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.9.1: + version "3.13.1" + resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc= + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q= + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk= + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA= + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E= + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4= + dependencies: + minimist "^1.2.0" + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/json5/download/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha1-56DGLEgoXGKNIKELhcibuAfDKFA= + dependencies: + minimist "^1.2.0" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI= + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha1-cpyR4thXt6QZofmqZWhcTDP1hF0= + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha1-ARRrNqYhjmTljzqNZt5df8b20FE= + +launch-editor-middleware@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157" + integrity sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc= + dependencies: + launch-editor "^2.2.1" + +launch-editor@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz#871b5a3ee39d6680fcc26d37930b6eeda89db0ca" + integrity sha1-hxtaPuOdZoD8wm03kwtu7aidsMo= + dependencies: + chalk "^2.3.0" + shell-quote "^1.6.1" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/lcid/download/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha1-bvXS32DlL4LrIopMNz6NHzlyU88= + dependencies: + invert-kv "^2.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@^8.1.5: + version "8.2.1" + resolved "https://registry.npm.taobao.org/lint-staged/download/lint-staged-8.2.1.tgz#752fcf222d9d28f323a3b80f1e668f3654ff221f" + integrity sha1-dS/PIi2dKPMjo7gPHmaPNlT/Ih8= + dependencies: + chalk "^2.3.1" + commander "^2.14.1" + cosmiconfig "^5.2.0" + debug "^3.1.0" + dedent "^0.7.0" + del "^3.0.0" + execa "^1.0.0" + g-status "^2.0.2" + is-glob "^4.0.0" + is-windows "^1.0.2" + listr "^0.14.2" + listr-update-renderer "^0.5.0" + lodash "^4.17.11" + log-symbols "^2.2.0" + micromatch "^3.1.8" + npm-which "^3.0.1" + p-map "^1.1.1" + path-is-inside "^1.0.2" + pify "^3.0.0" + please-upgrade-node "^3.0.2" + staged-git-files "1.1.2" + string-argv "^0.0.2" + stringify-object "^3.2.2" + yup "^0.27.0" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/listr-silent-renderer/download/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/listr-update-renderer/download/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha1-Tqg2hUinuK7LfgbYyVy0WuLt5qI= + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/listr-verbose-renderer/download/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha1-8RMhZ1NepMEmEQK58o2sfLoeA9s= + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.2: + version "0.14.3" + resolved "https://registry.npm.taobao.org/listr/download/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha1-L+qQlgTkNL5GTFC926DUlpKPpYY= + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/load-json-file/download/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" + integrity sha1-VM7fa3J+F3n9jwEgXwX26IcG8IY= + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.3.1, loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c= + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.2.3" + resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc= + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4= + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.defaultsdeep@^4.6.1: + version "4.6.1" + resolved "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" + integrity sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY= + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= + +lodash.mapvalues@^4.6.0: + version "4.6.0" + resolved "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/lodash.throttle/download/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash.transform@^4.6.0: + version "4.6.0" + resolved "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" + integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10: + version "4.17.15" + resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg= + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo= + dependencies: + chalk "^2.0.1" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/log-update/download/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + +loglevel@^1.6.3: + version "1.6.3" + resolved "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" + integrity sha1-d/LrZL5VpATJ/QStFtV8HW1rEoA= + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8= + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: + version "4.1.5" + resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80= + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA= + dependencies: + yallist "^3.0.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha1-ecEDO4BRW9bSTsmTPoYMp17ifww= + dependencies: + pify "^3.0.0" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU= + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.npm.taobao.org/mamacro/download/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha1-rSyVdhl8nxq/MI0Hh4Zb2XWj8+Q= + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo= + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +matcher@^1.0.0: + version "1.1.1" + resolved "https://registry.npm.taobao.org/matcher/download/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" + integrity sha1-UdgwHhOPhAmCszixFrsMCa9iwcI= + dependencies: + escape-string-regexp "^1.0.4" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8= + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz?cache=0&sync_timestamp=1562673334420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs= + +mdn-data@~1.1.0: + version "1.1.4" + resolved "https://registry.npm.taobao.org/mdn-data/download/mdn-data-1.1.4.tgz?cache=0&sync_timestamp=1562673334420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + integrity sha1-ULXU/8RXUnZXPE7tuHgIEqhBnwE= + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg= + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memory-fs@^0.4.0, memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.npm.taobao.org/meow/download/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha1-L93n5gIJOfcJBqaPLXrmheTIxkY= + dependencies: + source-map "^0.6.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A= + +merge2@^1.2.3: + version "1.2.4" + resolved "https://registry.npm.taobao.org/merge2/download/merge2-1.2.4.tgz?cache=0&sync_timestamp=1564568903369&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmerge2%2Fdownload%2Fmerge2-1.2.4.tgz#c9269589e6885a60cf80605d9522d4b67ca646e3" + integrity sha1-ySaVieaIWmDPgGBdlSLUtnymRuM= + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: + version "3.1.10" + resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha1-cIWbyVyYQJUvNZoGij/En57PrCM= + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha1-8IA1HIZbDcViqEYpZtqlNUPHik0= + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": + version "1.40.0" + resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI= + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.24" + resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha1-tvjQs+lR77d97eyhlM/20W9nb4E= + dependencies: + mime-db "1.40.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE= + +mime@^2.0.3, mime@^2.4.2: + version "2.4.4" + resolved "https://registry.npm.taobao.org/mime/download/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha1-vXuRE1/GsBzePpuuM9ZZtj2IV+U= + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI= + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs= + +mini-css-extract-plugin@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9" + integrity sha1-o/Ezctb83pEvPuTNA5ZlcEgB47k= + dependencies: + loader-utils "^1.1.0" + normalize-url "^2.0.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc= + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minipass@^2.2.1, minipass@^2.3.5: + version "2.4.0" + resolved "https://registry.npm.taobao.org/minipass/download/minipass-2.4.0.tgz#38f0af94f42fb6f34d3d7d82a90e2c99cd3ff485" + integrity sha1-OPCvlPQvtvNNPX2CqQ4smc0/9IU= + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.2.1" + resolved "https://registry.npm.taobao.org/minizlib/download/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha1-3SfqYTYkPHyIBoToZyuzpF/ZthQ= + dependencies: + minipass "^2.2.1" + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/mississippi/download/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha1-NEKlCPr8KFAEhv7qmUCWduTuWm8= + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha1-6goykfl+C16HdrNj1fChLZTGcCI= + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz?cache=0&sync_timestamp=1561436244196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmixin-deep%2Fdownload%2Fmixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY= + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha1-oOx72QVcQoL3kMPIL04o2zsxsik= + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI= + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@^2.12.1, nan@^2.13.2: + version "2.14.0" + resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw= + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk= + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.npm.taobao.org/needle/download/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha1-aDPnSXXERGQlkOFadQKIxfk5tXw= + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs= + +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha1-rCetpmFn+ohJpq3dg39rGJrSCBw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y= + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw= + dependencies: + lower-case "^1.1.1" + +node-forge@0.7.5: + version "0.7.5" + resolved "https://registry.npm.taobao.org/node-forge/download/node-forge-0.7.5.tgz?cache=0&sync_timestamp=1560906791252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + integrity sha1-bBUsNFzhHFL0ZcKr2VfoY5zWdN8= + +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.npm.taobao.org/node-gyp/download/node-gyp-3.8.0.tgz?cache=0&sync_timestamp=1563338026377&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-gyp%2Fdownload%2Fnode-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha1-VAMEJhwzDoDQ1e3OJTpoyzlkIYw= + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-ipc@^9.1.1: + version "9.1.1" + resolved "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.1.tgz#4e245ed6938e65100e595ebc5dc34b16e8dd5d69" + integrity sha1-TiRe1pOOZRAOWV68XcNLFujdXWk= + dependencies: + event-pubsub "4.3.0" + js-message "1.0.5" + js-queue "2.0.0" + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-libs-browser%2Fdownload%2Fnode-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU= + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.npm.taobao.org/node-pre-gyp/download/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha1-ObpLsUOdoDApX4meO1ILd4V2YUk= + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-releases@^1.1.25: + version "1.1.28" + resolved "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.28.tgz#503c3c70d0e4732b84e7aaa2925fbdde10482d4a" + integrity sha1-UDw8cNDkcyuE56qikl+93hBILUo= + dependencies: + semver "^5.3.0" + +node-sass@^4.9.0: + version "4.12.0" + resolved "https://registry.npm.taobao.org/node-sass/download/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" + integrity sha1-CRT1MZMjgBFKMMxfpPpjIzol8Bc= + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.11" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/nopt/download/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg= + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU= + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha1-g1qdoVUfom9w6SMpBpojqmV01+Y= + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha1-suHE3E98bVd0PfczpPWXjRhlBVk= + +normalize.css@^8.0.1: + version "8.0.1" + resolved "https://registry.npm.taobao.org/normalize.css/download/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" + integrity sha1-m5iiCHOLnMJjTKrLxC0THJdIe/M= + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.npm.taobao.org/npm-bundled/download/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha1-57qarc75YrthJI+RchzZMrP+a90= + +npm-packlist@^1.1.6: + version "1.4.4" + resolved "https://registry.npm.taobao.org/npm-packlist/download/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" + integrity sha1-hmIkIzhQrFNLY9Gm52BQCStdL0Q= + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-path@^2.0.2: + version "2.0.4" + resolved "https://registry.npm.taobao.org/npm-path/download/npm-path-2.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-path%2Fdownload%2Fnpm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" + integrity sha1-xkE0el/51qCeTZvOVYDE9QUnjmQ= + dependencies: + which "^1.2.10" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" + integrity sha1-f5G+MX9qRm7+08nymArYpO6LD6U= + dependencies: + path-key "^3.0.0" + +npm-which@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/npm-which/download/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo= + dependencies: + commander "^2.9.0" + npm-path "^2.0.2" + which "^1.2.10" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha1-CKfyqL9zRgR3mp76StXMcXq7lUs= + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw= + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU= + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.1.4: + version "1.3.1" + resolved "https://registry.npm.taobao.org/object-hash/download/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8= + +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha1-lovxEA15Vrs8oIbwBvhGs7xACNo= + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/object.values/download/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha1-v2gQ712j5TJXkOqqK+IT6oRiTak= + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4= + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8= + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha1-//DzyRYX/mK7UBiWNumayKbfe+U= + dependencies: + mimic-fn "^2.1.0" + +open@^6.3.0: + version "6.4.0" + resolved "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk= + dependencies: + is-wsl "^1.1.0" + +opener@^1.5.1: + version "1.5.1" + resolved "https://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0= + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w= + dependencies: + is-wsl "^1.1.0" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +ora@^3.4.0: + version "3.4.0" + resolved "https://registry.npm.taobao.org/ora/download/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha1-vwdSSRBZo+8+1MhQl1Md6f280xg= + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^2.0.0" + log-symbols "^2.2.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8= + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/os-locale/download/os-locale-1.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo= + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0, osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha1-hc36+uso6Gd/QW4odZK18/SepBA= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4= + +p-limit@^1.0.0, p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg= + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.2.1" + resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha1-qgeniMwxUck5tRMfY1cPDdIAlTc= + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ= + dependencies: + p-limit "^2.0.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.npm.taobao.org/p-map/download/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s= + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha1-MQko/u+cnsxltosXaTAYpmXOoXU= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha1-MWtMiJPiyNwc+okfQGxLQivr8yg= + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha1-yyhoVA4xPWHeWPr741zpAE1VQOY= + +pako@~1.0.5: + version "1.0.10" + resolved "https://registry.npm.taobao.org/pako/download/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" + integrity sha1-Qyi621CGpCaqkPVBl31JVdpclzI= + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI= + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0: + version "5.1.4" + resolved "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" + integrity sha1-N/Zij4I/vesic7TVQENKIvPvH8w= + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha1-c+URTJhtFD76NxLU6iTbmkJm9g8= + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse5@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/parse5/download/parse5-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha1-bXhlbj2o14tOwLkG98CO8d/j9gg= + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha1-5sTd1+06onxoogzE5Q4aTug7vEo= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/path-key/download/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3" + integrity sha1-maENhwqAO91e5vBHDljfzS+aVNM= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha1-1i27VnlAXXLEc37FhgDp3c8G0kw= + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/path-type/download/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha1-zvMdyOCho7sNEFwM2Xzzv0f0428= + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha1-l2wgZTBhexTrsyEUI597CTNuk6Y= + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM= + dependencies: + find-up "^3.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +please-upgrade-node@^3.0.2: + version "3.2.0" + resolved "https://registry.npm.taobao.org/please-upgrade-node/download/please-upgrade-node-3.2.0.tgz?cache=0&sync_timestamp=1565266069139&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fplease-upgrade-node%2Fdownload%2Fplease-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha1-rt3T+ZTJM+StmLmdmlVu+g4v6UI= + dependencies: + semver-compare "^1.0.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.npm.taobao.org/pluralize/download/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha1-KYuJ34uTsCIdv0Ia0rGx6iP8Z3c= + +popper.js@^1.14.6: + version "1.15.0" + resolved "https://registry.npm.taobao.org/popper.js/download/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2" + integrity sha1-VWC5m7rXZH6fqkdca4BWYh9aT/I= + +portfinder@^1.0.20, portfinder@^1.0.21: + version "1.0.23" + resolved "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.23.tgz?cache=0&sync_timestamp=1566246843633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fportfinder%2Fdownload%2Fportfinder-1.0.23.tgz#894db4bcc5daf02b6614517ce89cd21a38226b82" + integrity sha1-iU20vMXa8CtmFFF86JzSGjgia4I= + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-calc@^7.0.1: + version "7.0.1" + resolved "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" + integrity sha1-Ntd7qwI7Dsu5eJ2E3LI8SUEUVDY= + dependencies: + css-unit-converter "^1.1.1" + postcss "^7.0.5" + postcss-selector-parser "^5.0.0-rc.4" + postcss-value-parser "^3.3.1" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha1-rgYLzpPteUrHEmTwgTLVUJVr04E= + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8= + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha1-H7q9LCRr/2qq15l7KwkY9NevQDM= + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha1-P+EzzTyCKC5VD8myORdqkge3hOs= + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha1-yMlR6fc+2UKAGUWERKAq2Qu592U= + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha1-ZSrvipZybwKfXj4AFG7npOdV/1c= + dependencies: + postcss "^7.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-load-config%2Fdownload%2Fpostcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM= + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0= + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ= + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha1-NivqT/Wh+Y5AdacTxsslrv75plA= + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY= + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE= + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ= + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g= + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^1.2.0: + version "1.2.1" + resolved "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" + integrity sha1-3IfjQUjsfqtfeR981YSYMzdbdBo= + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@^1.3.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha1-izWt067oOhNrBHHg1ZvlilAoXdQ= + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha1-Db4EpM6QY9RmftK+R2u4MMglk1o= + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8= + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw= + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw= + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha1-jgCcoqOUnNr4rSPmtquZy159KNk= + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs= + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE= + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI= + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4= + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha1-f9QuvqXpyBRgljniwuhK4nC6SN8= + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha1-F++kBerMbge+NBSlyi0QdGgdTik= + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^3.0.0: + version "3.1.1" + resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha1-JJBENWaXsztk8aj3yAki3d7nGVw= + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha1-F7mXvHEbMzurFDqu07jT1uPTglg= + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w= + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha1-n/giVH4okyE88cMO+lGsX9G6goE= + +postcss-value-parser@^4.0.0: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha1-SCKCwJpCcG0fyaBptz9E7Ag5Hck= + +postcss@^6.0.1, postcss@^6.0.23: + version "6.0.23" + resolved "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ= + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.5: + version "7.0.17" + resolved "https://registry.npm.taobao.org/postcss/download/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" + integrity sha1-TaG9/1Mi1KCsqrTYfz54JDa60x8= + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/prepend-http/download/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier@1.16.3: + version "1.16.3" + resolved "https://registry.npm.taobao.org/prettier/download/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" + integrity sha1-jGIWhFO63vcC80tFtu6JlXSmpl0= + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +private@^0.1.6: + version "0.1.8" + resolved "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I= + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha1-foz42PW48jnBvGi+tOt4Vn1XLvg= + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +property-expr@^1.5.0: + version "1.5.1" + resolved "https://registry.npm.taobao.org/property-expr/download/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f" + integrity sha1-IuhwaJSgyOKNWHNYBPa6OjZzMU8= + +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha1-NMvWSi2B9LH9IedvnwbIpFKZ7jQ= + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24, psl@^1.1.28: + version "1.3.0" + resolved "https://registry.npm.taobao.org/psl/download/psl-1.3.0.tgz#e1ebf6a3b5564fa8376f3da2275da76d875ca1bd" + integrity sha1-4ev2o7VWT6g3bz2iJ12nbYdcob0= + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA= + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk= + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ= + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4= + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew= + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1566009952956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha1-QdwaAV49WB8WIXdr4xr7KHapsbw= + +qs@^6.7.0: + version "6.8.0" + resolved "https://registry.npm.taobao.org/qs/download/qs-6.8.0.tgz?cache=0&sync_timestamp=1566009952956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.8.0.tgz#87b763f0d37ca54200334cd57bb2ef8f68a1d081" + integrity sha1-h7dj8NN8pUIAM0zVe7Lvj2ih0IE= + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1566009952956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha1-yzroBuh0BERYTvFUzo7pjUA/PjY= + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.npm.taobao.org/query-string/download/query-string-5.1.1.tgz?cache=0&sync_timestamp=1564173124567&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquery-string%2Fdownload%2Fquery-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha1-p4wBK3HBfgXy4/ojGd0zBoLvs8s= + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha1-YOWl/WSn+L+k0qsu1v30yFutFU4= + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo= + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha1-ySGW/IarQr6YPxvzF3giSTHWFFg= + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE= + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha1-oc5vucm8NWylLoklarWQWeE9AzI= + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.npm.taobao.org/rc/download/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0= + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^5.0.0: + version "5.2.0" + resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w= + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1: + version "3.4.0" + resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha1-pRwmdUZY4KPCHb9ZFjvUW6b0R/w= + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha1-DodiKjMlqjPokihcr4tOhGUppSU= + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regenerate-unicode-properties@^8.1.0: + version "8.1.0" + resolved "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha1-71Hg8OpK1CS3e/fLQfPgFccKPw4= + dependencies: + regenerate "^1.4.0" + +regenerate@^1.2.1, regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha1-SoVuxLVuQHfFV1icroXnpMiGmhE= + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk= + +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha1-fPanfY9cb2Drc8X8GVWyzrAea/U= + +regenerator-transform@^0.14.0: + version "0.14.1" + resolved "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" + integrity sha1-Oy/OThq3cywI9mXf2zFHScfd0vs= + dependencies: + private "^0.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw= + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp-tree@^0.1.6: + version "0.1.12" + resolved "https://registry.npm.taobao.org/regexp-tree/download/regexp-tree-0.1.12.tgz?cache=0&sync_timestamp=1566791066831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp-tree%2Fdownload%2Fregexp-tree-0.1.12.tgz#28eaaa6e66eeb3527c15108a3ff740d9e574e420" + integrity sha1-KOqqbmbus1J8FRCKP/dA2eV05CA= + +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + integrity sha1-DjUW3Qt5BPQT0tQZPc5GGMOmias= + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8= + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^4.5.4: + version "4.5.5" + resolved "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.5.5.tgz#aaffe61c2af58269b3e516b61a73790376326411" + integrity sha1-qv/mHCr1gmmz5Ra2GnN5A3YyZBE= + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.1.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha1-p2NNwI+JIJwgSa3aNSVxH7lyZd0= + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha1-8eaui32iuulsmTmbhozWyTOiupw= + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk= + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4= + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/repeating/download/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha1-M59qq6vK/bMceZ/xWHADNjAdM0Y= + dependencies: + lodash "^4.17.11" + +request-promise-native@^1.0.7: + version "1.0.7" + resolved "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha1-pJhopiS96lBp8SUdCoNuDYmqLFk= + dependencies: + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0, request@^2.88.0: + version "2.88.0" + resolved "https://registry.npm.taobao.org/request/download/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha1-nC/KT301tZLv5Xx/ClXoEFIST+8= + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs= + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/require-uncached/download/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +reselect@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/reselect/download/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" + integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: + version "1.12.0" + resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.12.0.tgz?cache=0&sync_timestamp=1564641434608&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY= + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w= + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w= + dependencies: + glob "^7.1.3" + +rimraf@2.6.3, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha1-stEE/g2Psnz54KHNqCYt04M8bKs= + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw= + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.npm.taobao.org/rx-lite-aggregates/download/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + +rxjs@^6.3.3, rxjs@^6.4.0: + version "6.5.2" + resolved "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" + integrity sha1-LjXOgVzUbYTQKiCftOWSHgUdvsc= + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0= + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk= + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafer-buffer%2Fdownload%2Fsafer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= + +sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.npm.taobao.org/sass-graph/download/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + +sass-loader@^7.1.0: + version "7.3.1" + resolved "https://registry.npm.taobao.org/sass-loader/download/sass-loader-7.3.1.tgz?cache=0&sync_timestamp=1566309979922&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-loader%2Fdownload%2Fsass-loader-7.3.1.tgz#a5bf68a04bcea1c13ff842d747150f7ab7d0d23f" + integrity sha1-pb9ooEvOocE/+ELXRxUPerfQ0j8= + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.0.1" + neo-async "^2.5.0" + pify "^4.0.1" + semver "^6.3.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk= + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A= + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.npm.taobao.org/scss-tokenizer/download/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.4: + version "1.10.4" + resolved "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" + integrity sha1-zdfsz8pO12NdR6CL8tXTB0CS4s0= + dependencies: + node-forge "0.7.5" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/semver-compare/download/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= + +semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0= + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.npm.taobao.org/semver/download/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +send@0.17.1: + version "0.17.1" + resolved "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg= + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^1.4.0, serialize-javascript@^1.7.0: + version "1.8.0" + resolved "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-1.8.0.tgz?cache=0&sync_timestamp=1566305537093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-1.8.0.tgz#9515fc687232e2321aea1ca7a529476eb34bb480" + integrity sha1-lRX8aHIy4jIa6hynpSlHbrNLtIA= + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk= + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha1-oY1AUw5vB95CKMfe/kInr4ytAFs= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM= + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha1-jymBrZJTH1UDWwH7IwdppA4C76M= + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@^1.6.1: + version "1.7.1" + resolved "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.1.tgz?cache=0&sync_timestamp=1565703322893&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fshell-quote%2Fdownload%2Fshell-quote-1.7.1.tgz#3161d969886fb14f9140c65245a5dd19b6f0b06b" + integrity sha1-MWHZaYhvsU+RQMZSRaXdGbbwsGs= + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-git@^1.85.0: + version "1.124.0" + resolved "https://registry.npm.taobao.org/simple-git/download/simple-git-1.124.0.tgz#10a73cc1af303832b5c11720d4256e134fba35ca" + integrity sha1-EKc8wa8wODK1wRcg1CVuE0+6Nco= + dependencies: + debug "^4.0.1" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q= + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00= + dependencies: + is-fullwidth-code-point "^2.0.0" + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY= + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha1-bBdfhv8UvbByRWPo88GwIaKGhTs= + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI= + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0= + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.3.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" + integrity sha1-EvydbLZj2lc509xftuhofalcsXc= + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0= + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/sort-keys/download/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ= + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk= + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.12: + version "0.5.13" + resolved "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.13.tgz?cache=0&sync_timestamp=1564565500102&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha1-MbJKnC5zwt6FBmwP631Edn7VKTI= + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ= + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc= + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha1-meEZt6XaAOBUkcn6M4t5BII7QdA= + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ= + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha1-ANSGOmQArXXfkzYaFghgXl3NzzE= + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/spdy/download/spdy-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdy%2Fdownload%2Fspdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" + integrity sha1-bxLtHF236k8k67i4m6WMh8CCV/I= + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha1-fLCd2jqGWFcFxks5pkZgOGguj+I= + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha1-+2YcC+8ps520B2nuOfpwCT1vaHc= + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.npm.taobao.org/ssri/download/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + integrity sha1-ujhyycbTOgcEp9cf8EXl7EiZnQY= + dependencies: + safe-buffer "^5.1.1" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg= + dependencies: + figgy-pudding "^3.5.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88= + +stackframe@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/stackframe/download/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" + integrity sha1-NXskqZL5Qny6a1RdlqFO0svKGHs= + +staged-git-files@1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/staged-git-files/download/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b" + integrity sha1-QybTOIbcns+immGTv1EbqQpGRUs= + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.npm.taobao.org/stdout-stream/download/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha1-WsF0zdXNcmEEqgwLK9g4FdjVNd4= + dependencies: + readable-stream "^2.0.1" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs= + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha1-6+J6DDibBPvMIzZClS4Qcxr6m64= + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw= + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-argv@^0.0.2: + version "0.0.2" + resolved "https://registry.npm.taobao.org/string-argv/download/string-argv-0.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-argv%2Fdownload%2Fstring-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" + integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4= + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha1-InZ74htirxCBV0MG9prFG2IgOWE= + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.padend@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/string.prototype.padend/download/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" + integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + +string.prototype.padstart@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/string.prototype.padstart/download/string.prototype.padstart-3.0.0.tgz#5bcfad39f4649bb2d031292e19bcf0b510d4b242" + integrity sha1-W8+tOfRkm7LQMSkuGbzwtRDUskI= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4= + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g= + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.2.2: + version "3.3.0" + resolved "https://registry.npm.taobao.org/stringify-object/download/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha1-cDBlrvyhkwDTzoivT1s5VtdVZik= + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0= + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/strip-indent/download/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU= + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha1-B2Srxpxj1ayELdSGfo0CXogN+PM= + dependencies: + has-flag "^3.0.0" + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + +svgo@^1.0.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/svgo/download/svgo-1.3.0.tgz#bae51ba95ded9a33a36b7c46ce9c359ae9154313" + integrity sha1-uuUbqV3tmjOja3xGzpw1mukVQxM= + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.33" + csso "^3.5.1" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ= + +synchronous-promise@^2.0.6: + version "2.0.9" + resolved "https://registry.npm.taobao.org/synchronous-promise/download/synchronous-promise-2.0.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsynchronous-promise%2Fdownload%2Fsynchronous-promise-2.0.9.tgz#b83db98e9e7ae826bf9c8261fd8ac859126c780a" + integrity sha1-uD25jp566Ca/nIJh/YrIWRJseAo= + +table@4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/table/download/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + integrity sha1-ozRHN1OR52atNNNIbm4q7chNLjY= + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha1-EpLRlQDOP4YFOwXw6Ofko7shB54= + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha1-ofzMBrWNth/XpF2i2kT186Pme6I= + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.npm.taobao.org/tar/download/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha1-DKiEhWLHKZuLRG/2pNYM27I+3EA= + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^4: + version "4.4.10" + resolved "https://registry.npm.taobao.org/tar/download/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha1-lGsoELml4LJhQM94vqawsNaJ66E= + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.5" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +terser-webpack-plugin@^1.2.3, terser-webpack-plugin@^1.4.1: + version "1.4.1" + resolved "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.1.tgz?cache=0&sync_timestamp=1564575178544&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" + integrity sha1-YbGOQOruW+l+dxzbsQ7RKAiIwrQ= + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^1.7.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.2.1" + resolved "https://registry.npm.taobao.org/terser/download/terser-4.2.1.tgz#1052cfe17576c66e7bc70fcc7119f22b155bdac1" + integrity sha1-EFLP4XV2xm57xw/McRnyKxVb2sE= + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-table@^0.2.0, text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + +thread-loader@^2.1.2: + version "2.1.3" + resolved "https://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda" + integrity sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo= + dependencies: + loader-runner "^2.3.1" + loader-utils "^1.1.0" + neo-async "^2.6.0" + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0= + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.0.3" + resolved "https://registry.npm.taobao.org/thunky/download/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + integrity sha1-9d9zJFNAewkZHa5z4qjMc/OBqCY= + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8= + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tinycolor2@^1.4.1: + version "1.4.1" + resolved "https://registry.npm.taobao.org/tinycolor2/download/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" + integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha1-bTQzWIl2jSGyvNoKonfO07G/rfk= + dependencies: + os-tmpdir "~1.0.2" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4= + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM= + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/toposort/download/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= + +tough-cookie@^2.3.3: + version "2.5.0" + resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha1-zZ+yoKodWhK0c72fuW+j3P9lreI= + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha1-U/Nto/R3g7CSWvoG/587FlKA94E= + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/trim-right/download/trim-right-1.0.1.tgz?cache=0&sync_timestamp=1562845044600&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftrim-right%2Fdownload%2Ftrim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.npm.taobao.org/true-case-path/download/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha1-+BO1qMhrQNpZYGcisUTjIleZ9H0= + dependencies: + glob "^7.1.2" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha1-8shUBoALmw90yfdGW4HqrSQSUvg= + +tslib@^1.9.0: + version "1.10.0" + resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo= + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.6.0.tgz?cache=0&sync_timestamp=1564840459932&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha1-jSojcNPfiG61yQraHFv2GIrPg4s= + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE= + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1563943388956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha1-mtlWPY6zrN+404WX0q8dgV9qdV8= + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha1-JhmADEyCWADv3YNDr33Zkzy+KBg= + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw= + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha1-W0tCbgjROoA2Xg1lesemwexGonc= + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.5" + resolved "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" + integrity sha1-qcxsx85joKMCP8meNBuUQx1AWlc= + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.0, unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA= + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha1-uqvOkQg/xk6UWw861hPiZPfNTmw= + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY= + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.1.2" + resolved "https://registry.npm.taobao.org/upath/download/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" + integrity sha1-PbZYYA7a7sy+bbXmhNZ+6MKs0Gg= + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha1-lMVA4f93KVbiKZUHwBCupsiDjrA= + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/url-loader/download/url-loader-1.1.2.tgz?cache=0&sync_timestamp=1563455134437&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-loader%2Fdownload%2Furl-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" + integrity sha1-uXHRkbg69pPF4/6kBkvp4fLX+Ng= + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha1-qKg1NejACjFuQDpdtKwbm4U64ng= + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8= + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0, util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA= + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE= + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.1, uuid@^3.3.2: + version "3.3.3" + resolved "https://registry.npm.taobao.org/uuid/download/uuid-3.3.3.tgz?cache=0&sync_timestamp=1566221268624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha1-RWjwIW54dg7h2/Ok0s9T4iQRKGY= + +v-click-outside-x@^3.7.1: + version "3.7.1" + resolved "https://registry.npm.taobao.org/v-click-outside-x/download/v-click-outside-x-3.7.1.tgz#aa03eaa0e41e44cb5207dcf86c2d9f0dd64084c1" + integrity sha1-qgPqoOQeRMtSB9z4bC2fDdZAhME= + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha1-/JH2uce6FchX9MssXe/uw51PQQo= + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.3" + resolved "https://registry.npm.taobao.org/vendors/download/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" + integrity sha1-pkZ3gavTZiF8BQ+CAuflDMnu+MA= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +view-design@^4.0.0: + version "4.0.2" + resolved "https://registry.npm.taobao.org/view-design/download/view-design-4.0.2.tgz#983450fb4fd0a56642dc13ebc7e585c0aae64fc8" + integrity sha1-mDRQ+0/QpWZC3BPrx+WFwKrmT8g= + dependencies: + async-validator "^1.10.0" + deepmerge "^2.2.1" + element-resize-detector "^1.2.0" + js-calendar "^1.2.3" + lodash.throttle "^4.1.1" + popper.js "^1.14.6" + tinycolor2 "^1.4.1" + v-click-outside-x "^3.7.1" + +vm-browserify@^1.0.1: + version "1.1.0" + resolved "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha1-vXbWojMj4sqP+hICjcBFWcdfkBk= + +vue-eslint-parser@^2.0.3: + version "2.0.3" + resolved "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" + integrity sha1-wmjJbG2Uz+PZOKX3WTlZsMozYNE= + dependencies: + debug "^3.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.2" + esquery "^1.0.0" + lodash "^4.17.4" + +vue-eslint-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-5.0.0.tgz#00f4e4da94ec974b821a26ff0ed0f7a78402b8a1" + integrity sha1-APTk2pTsl0uCGib/DtD3p4QCuKE= + dependencies: + debug "^4.1.0" + eslint-scope "^4.0.0" + eslint-visitor-keys "^1.0.0" + espree "^4.1.0" + esquery "^1.0.1" + lodash "^4.17.11" + +vue-hot-reload-api@^2.3.0: + version "2.3.3" + resolved "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf" + integrity sha1-J1b0bLMlgFTF9HI96K5+hzAqHM8= + +vue-loader@^15.7.0: + version "15.7.1" + resolved "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.7.1.tgz#6ccacd4122aa80f69baaac08ff295a62e3aefcfd" + integrity sha1-bMrNQSKqgPabqqwI/ylaYuOu/P0= + dependencies: + "@vue/component-compiler-utils" "^3.0.0" + hash-sum "^1.0.2" + loader-utils "^1.1.0" + vue-hot-reload-api "^2.3.0" + vue-style-loader "^4.1.0" + +vue-meditor@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/vue-meditor/download/vue-meditor-2.0.2.tgz#3b08663556b1362f5536d54169ed27c57deef6b8" + integrity sha1-OwhmNVaxNi9VNtVBae0nxX3u9rg= + +vue-router@^3.0.3: + version "3.1.2" + resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.1.2.tgz#2e0904703545dabdd42b2b7a2e617f02f99a1969" + integrity sha1-LgkEcDVF2r3UKyt6LmF/AvmaGWk= + +vue-style-loader@^4.1.0: + version "4.1.2" + resolved "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8" + integrity sha1-3t80mAbyXOtOZPOtfApE+6c1/Pg= + dependencies: + hash-sum "^1.0.2" + loader-utils "^1.0.2" + +vue-template-compiler@^2.5.21: + version "2.6.10" + resolved "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc" + integrity sha1-MjtPNJXwT6o1AzN6gvXWUHeZycw= + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + +vue-template-es2015-compiler@^1.9.0: + version "1.9.1" + resolved "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" + integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU= + +vue@^2.6.10: + version "2.6.10" + resolved "https://registry.npm.taobao.org/vue/download/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637" + integrity sha1-pysaQqTYKnIepDjRtr9V5mGVxjc= + +watchpack@^1.6.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha1-S8EsLr6KonenHx0/FNaFx7RGzQA= + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha1-wdjRSTFtPqhShIiVy2oL/oh7h98= + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webpack-bundle-analyzer@^3.3.0: + version "3.4.1" + resolved "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.4.1.tgz#430544c7ba1631baccf673475ca8300cb74a3c47" + integrity sha1-QwVEx7oWMbrM9nNHXKgwDLdKPEc= + dependencies: + acorn "^6.0.7" + acorn-walk "^6.1.1" + bfj "^6.1.1" + chalk "^2.4.1" + commander "^2.18.0" + ejs "^2.6.1" + express "^4.16.3" + filesize "^3.6.1" + gzip-size "^5.0.0" + lodash "^4.17.15" + mkdirp "^0.5.1" + opener "^1.5.1" + ws "^6.0.0" + +webpack-chain@^4.11.0: + version "4.12.1" + resolved "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-4.12.1.tgz#6c8439bbb2ab550952d60e1ea9319141906c02a6" + integrity sha1-bIQ5u7KrVQlS1g4eqTGRQZBsAqY= + dependencies: + deepmerge "^1.5.2" + javascript-stringify "^1.6.0" + +webpack-dev-middleware@^3.7.0: + version "3.7.0" + resolved "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" + integrity sha1-73UdJfTppcijXaYAxf2jWCtcbP8= + dependencies: + memory-fs "^0.4.1" + mime "^2.4.2" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.4.1: + version "3.8.0" + resolved "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.8.0.tgz?cache=0&sync_timestamp=1565370754455&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.8.0.tgz#06cc4fc2f440428508d0e9770da1fef10e5ef28d" + integrity sha1-BsxPwvRAQoUI0Ol3DaH+8Q5e8o0= + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.6" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "^0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.0" + killable "^1.0.1" + loglevel "^1.6.3" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.21" + schema-utils "^1.0.0" + selfsigned "^1.10.4" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.19" + sockjs-client "1.3.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.0" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "12.0.5" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz?cache=0&sync_timestamp=1564684394562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-log%2Fdownload%2Fwebpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8= + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@^4.2.1: + version "4.2.1" + resolved "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" + integrity sha1-XpI8+ALqKs5P1a8dMkc2imM0ibQ= + dependencies: + lodash "^4.17.5" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha1-7t2OwLko+/HL/plOItLYkPMwqTM= + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.0.0: + version "4.39.2" + resolved "https://registry.npm.taobao.org/webpack/download/webpack-4.39.2.tgz#c9aa5c1776d7c309d1b3911764f0288c8c2816aa" + integrity sha1-yapcF3bXwwnRs5EXZPAojIwoFqo= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.1" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha1-otTg1PTxFvHmKX66WLBdQwEA6fk= + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk= + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/which-module/download/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@1, which@^1.2.10, which@^1.2.9: + version "1.3.1" + resolved "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo= + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha1-rgdOa9wMFKQx6ATmJFScYzsABFc= + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag= + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha1-H9H2cjXVttD+54EFYAG/tpTAOwk= + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM= + dependencies: + mkdirp "^0.5.1" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/write/download/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + +ws@^6.0.0, ws@^6.2.1: + version "6.2.1" + resolved "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha1-RC/fCkftZPWbal2P8TD0dI7VJPs= + dependencies: + async-limiter "~1.0.0" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q= + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha1-le+U+F7MgdAHwmThkKEg8KPIVms= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: + version "3.0.3" + resolved "https://registry.npm.taobao.org/yallist/download/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha1-tLBJ4xS+VF486AIjbWzSLNkcPek= + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ= + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.1: + version "13.1.1" + resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha1-0mBYUyqgbTZf4JH2ofwGsvfl7KA= + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + +yargs@12.0.5: + version "12.0.5" + resolved "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM= + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.0.0: + version "13.3.0" + resolved "https://registry.npm.taobao.org/yargs/download/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha1-TGV6VeB+Xyz5R/ijZlZ8BKDe3IM= + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" + +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.npm.taobao.org/yargs/download/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yorkie@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" + integrity sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k= + dependencies: + execa "^0.8.0" + is-ci "^1.0.10" + normalize-path "^1.0.0" + strip-indent "^2.0.0" + +yup@^0.27.0: + version "0.27.0" + resolved "https://registry.npm.taobao.org/yup/download/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7" + integrity sha1-+MsZjI590hJL7dwkV1cTKQlrBuc= + dependencies: + "@babel/runtime" "^7.0.0" + fn-name "~2.0.1" + lodash "^4.17.11" + property-expr "^1.5.0" + synchronous-promise "^2.0.6" + toposort "^2.0.2" + +zrender@4.0.7: + version "4.0.7" + resolved "https://registry.npm.taobao.org/zrender/download/zrender-4.0.7.tgz#15ae960822f5efed410995d37e5107fe3de10e6d" + integrity sha1-Fa6WCCL17+1BCZXTflEH/j3hDm0= diff --git a/webAdmin/README.md b/webAdmin/README.md new file mode 100644 index 0000000..e28ed09 --- /dev/null +++ b/webAdmin/README.md @@ -0,0 +1,29 @@ +# vue-startup + +## Project setup +``` +yarn install +``` + +### Compiles and hot-reloads for development +``` +yarn run serve +``` + +### Compiles and minifies for production +``` +yarn run build +``` + +### Run your tests +``` +yarn run test +``` + +### Lints and fixes files +``` +yarn run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/webAdmin/babel.config.js b/webAdmin/babel.config.js new file mode 100644 index 0000000..ba17966 --- /dev/null +++ b/webAdmin/babel.config.js @@ -0,0 +1,5 @@ +module.exports = { + presets: [ + '@vue/app' + ] +} diff --git a/webAdmin/package.json b/webAdmin/package.json new file mode 100644 index 0000000..2e1054a --- /dev/null +++ b/webAdmin/package.json @@ -0,0 +1,87 @@ +{ + "name": "vue-startup", + "version": "0.1.0", + "private": true, + "scripts": { + "serve": "vue-cli-service serve", + "build": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "dependencies": { + "axios": "^0.18.0", + "babel-polyfill": "^6.26.0", + "core-js": "^2.6.5", + "echarts": "^4.2.1", + "lodash": "^4.17.11", + "normalize.css": "^8.0.1", + "qs": "^6.7.0", + "uuid": "^3.3.2", + "view-design": "^4.0.0", + "vue": "^2.6.10", + "vue-meditor": "^2.0.2", + "vue-router": "^3.0.3" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "^3.6.0", + "@vue/cli-plugin-eslint": "^3.6.0", + "@vue/cli-service": "^3.6.0", + "@vue/eslint-config-standard": "^4.0.0", + "babel-eslint": "^10.0.1", + "eslint": "^5.16.0", + "eslint-config-standard": "^12.0.0", + "eslint-config-vue": "^2.0.2", + "eslint-friendly-formatter": "^4.0.1", + "eslint-loader": "^2.1.2", + "eslint-plugin-flow-vars": "^0.5.0", + "eslint-plugin-html": "^5.0.5", + "eslint-plugin-import": "^2.17.2", + "eslint-plugin-node": "^9.0.1", + "eslint-plugin-promise": "^4.1.1", + "eslint-plugin-standard": "^4.0.0", + "eslint-plugin-vue": "^5.2.2", + "lint-staged": "^8.1.5", + "node-sass": "^4.9.0", + "sass-loader": "^7.1.0", + "vue-template-compiler": "^2.5.21" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "extends": [ + "plugin:vue/essential", + "@vue/standard" + ], + "rules": { + "vue/no-parsing-error": [ + 2, + { + "x-invalid-end-tag": false + } + ] + }, + "parserOptions": { + "parser": "babel-eslint" + } + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ], + "gitHooks": { + "pre-commit": "lint-staged" + }, + "lint-staged": { + "*.{js,vue}": [ + "vue-cli-service lint", + "git add" + ] + } +} diff --git a/webAdmin/public/favicon.ico b/webAdmin/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..74ea9a80738e52af3ec1dcb96e9fd07027006c14 GIT binary patch literal 2054 zcmV+h2>JJkP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2b)PmK~#8N?OJI} zR96(X`}U(hnpCUSYEu(a6PGA1bs1%55a!LmFz*d&Y~ya#)TrQ&;!;dYi;C8LN266+ z5VS_ERxJkC+Cm<4f-S&+7PDXyXSEP^=HY7;w}Os3b_*IsT! z2(hiv*hDn=2O51~5hSP$@$+}^^BGpV%i(srUt`UAV6wRzggg4wXa9Wh(5~IEH_&un zG;l=C+;h_=T||Cmwn-z+Ht`aFAOF6JuL*$(3K^(uQRFBTRw#=PU|hdANSZMi<}Vx% zYtxe1|#aP{_YkJu|(f+%N=_eV1+!G*Wi#WZBKQczq!3DVQ2L2>aF z=IZ%ST`?P~%Ir{a!vSkoIl<->J?$nXx!_Kr10LLTz=AZV91kbYb4*h3V6nL0$CBUe z6Cpulj0DS;O@Vv&%9xb^R2RaNN4fCi{${AIT!@^DX1|B(dyBE-x8naD@w`@*IXwyB zynfLE#}7us<5J&ylmtOh37sVA9VShGm?C2vu4hOCQSDeF4p1z>j7R!DI4@{HXZ`-C|4=+JsFB z*}R7~(ZwX{3k)=e2c@3R-a66K+XNcZYGUI>-sINoS`|pZ+S7sy#fVFG$CEz_AG~@0c%(_9UUYA_f0;_zBdT zFxjnlGMaQ?*@`=ytEF@W!(<*iJ9Rd|c`)f8vib+A0&U zm`SfY=;;c_zkG~!@zje^{x{Bcmdz7Wrt6ddtIgG&Hyq;@{T@X_$rC%9`6XcHWW^8= z#P68=x&wQE1aEl4q!(lSms~XYnI}#h+eJ*ToD!0JMEGAn!SfgBBcmN?*f`_-%h3dhIA}but z{#eyG@%Qx&Ax88ajAHrsV6wFXowMV_QqF_WNvxV!tyzA}0!OkMs~YE=I=+)^9``F} zQ0^;U)fxi>Wbr_$srqk*Xs3553?9|jGw%I4{6j!D%AbRLL-uJC~K)3mRG${P`ox3{^f;Xo!$=qQ`V z(!XyJT+NwO{b04Z2k@YD6QtFNFzxLN^1^V3_w17AoI9(H!aUOEp2Q^T3$r~oOd0sl ze*c4!%3?daBd9%#&vk)g+ncBwRpZ=Qt-)&d-2ouCqcnXczCd8G`8@C#`9j3Yy*pz( z_XLB7iEy{**_H9|mJP0*>Hx>Lf1+wqjr%v&4=8(D@}whH>zD5_dHMr)S=l`Jo*n+Z zpE%Vw8y`MUbD5;m+gthF;CyaN$o;i;rOx>aKIjY_5FxiuB=csc^8+R=I8Z(mtzO}K zCa5fSfY`?;?&MKl0`6Q5hqF1K*Lr*_xqDqhm=ym7&NqG~Pt2m9+A&$dgK`q2Ux1{q zaYD}CXy`x0Cy;)#b3NZX1j;V=!2SEPmoqie`cCEUa4CQK;^}odmrOt@!5Q;`Fq!(l zjZ4mXr6@Jhc9}Ly+3Uk#-$wNZ7$s><-?I2qNS)EvZ*5l+hu=Z^ts#>VI#?Z2Ga7$t zBGnib + + + + + + + super-bbs + + + +
+ + + diff --git a/webAdmin/src/App.vue b/webAdmin/src/App.vue new file mode 100644 index 0000000..98240ae --- /dev/null +++ b/webAdmin/src/App.vue @@ -0,0 +1,3 @@ + diff --git a/webAdmin/src/api/account.js b/webAdmin/src/api/account.js new file mode 100644 index 0000000..cbdfd02 --- /dev/null +++ b/webAdmin/src/api/account.js @@ -0,0 +1,20 @@ +import api from '@/common/api' + +const check = () => api.get('account/check', { t: new Date().getTime() }) + +const profile = () => { + return api.get(`account/profile`, { timestamp: new Date().getTime() }) +} + +const login = params => api.post(`account/login`, params) + +const logout = () => { + return api.post(`account/logout`) +} + +export default { + check, + profile, + login, + logout +} diff --git a/webAdmin/src/api/comment.js b/webAdmin/src/api/comment.js new file mode 100644 index 0000000..7e087ad --- /dev/null +++ b/webAdmin/src/api/comment.js @@ -0,0 +1,13 @@ +import api from '@/common/api' + +const list = params => api.get(`comment`, params) +const create = params => api.post(`comment`, params) +const edit = params => api.put(`comment`, params) +const _delete = params => api._delete(`comment`, params) + +export default { + list, + create, + edit, + _delete +} diff --git a/webAdmin/src/api/sub_tab.js b/webAdmin/src/api/sub_tab.js new file mode 100644 index 0000000..79f7f74 --- /dev/null +++ b/webAdmin/src/api/sub_tab.js @@ -0,0 +1,13 @@ +import api from '@/common/api' + +const list = params => api.get(`sub_tab`, params) +const create = params => api.post(`sub_tab`, params) +const edit = params => api.put(`sub_tab`, params) +const _delete = params => api._delete(`sub_tab`, params) + +export default { + list, + create, + edit, + _delete +} diff --git a/webAdmin/src/api/tab.js b/webAdmin/src/api/tab.js new file mode 100644 index 0000000..5431f43 --- /dev/null +++ b/webAdmin/src/api/tab.js @@ -0,0 +1,13 @@ +import api from '@/common/api' + +const list = params => api.get(`tab`, params) +const create = params => api.post(`tab`, params) +const edit = params => api.put(`tab`, params) +const _delete = params => api._delete(`tab`, params) + +export default { + list, + create, + edit, + _delete +} diff --git a/webAdmin/src/api/topic.js b/webAdmin/src/api/topic.js new file mode 100644 index 0000000..b2392c4 --- /dev/null +++ b/webAdmin/src/api/topic.js @@ -0,0 +1,13 @@ +import api from '@/common/api' + +const list = params => api.get(`topic`, params) +const create = params => api.post(`topic`, params) +const edit = params => api.put(`topic`, params) +const _delete = params => api._delete(`topic`, params) + +export default { + list, + create, + edit, + _delete +} diff --git a/webAdmin/src/api/user.js b/webAdmin/src/api/user.js new file mode 100644 index 0000000..0a125f3 --- /dev/null +++ b/webAdmin/src/api/user.js @@ -0,0 +1,13 @@ +import api from '@/common/api' + +const list = params => api.get(`user`, params) +const create = params => api.post(`user`, params) +const edit = params => api.put(`user`, params) +const _delete = params => api._delete(`user`, params) + +export default { + list, + create, + edit, + _delete +} diff --git a/webAdmin/src/assets/bg-img.png b/webAdmin/src/assets/bg-img.png new file mode 100644 index 0000000000000000000000000000000000000000..310e8868d9d510f0aad29b0ff9081d42d13bf8b0 GIT binary patch literal 21967 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 { + if (!res.data || res.data.code !== 1000) { + console.error( + res.config.method, + res.config.url, + res.config.params, + res.config.data + ) + throw res.data || res + } + return res.data.data +} + +class Api { + constructor (baseUrl) { + this.baseUrl = baseUrl + } + + _getUrl (url) { + return `/${this.baseUrl}/${url}` + } + + async get (url, data) { + let res = await http.get(this._getUrl(url), data) + return handleResponse(res) + } + + async post (url, data) { + let res = await http.post(this._getUrl(url), data) + return handleResponse(res) + } + + async put (url, data) { + let res = await http.put(this._getUrl(url), data) + return handleResponse(res) + } + + async _delete (url, data) { + let res = await http._delete(this._getUrl(url), data) + return handleResponse(res) + } + + async postForm (url, data) { + let res = await http.postForm(this._getUrl(url), data) + return handleResponse(res) + } +} + +const api = new Api('api/admin') + +export default api diff --git a/webAdmin/src/common/date.js b/webAdmin/src/common/date.js new file mode 100644 index 0000000..0c25f05 --- /dev/null +++ b/webAdmin/src/common/date.js @@ -0,0 +1,43 @@ +import dateFormatter from './dateFormatter' + +export const getThisWeek = () => { + let date = new Date() + let day = date.getDay() || 7 + date.setDate(date.getDate() - day) + return date +} + +export const getThisMonth = () => { + let date = new Date() + date.setDate(1) + return date +} + +export const getThisYear = () => { + let date = new Date() + return date.getFullYear() +} + +export const getToday = () => { + let date = new Date() + date.setHours(0) + date.setMinutes(0) + date.setSeconds(0) + date.setMilliseconds(0) + return date +} + +export const getMonthStart = date => { + let startTime = new Date(date) + startTime.setDate(1) + startTime.setHours(0, 0, 0, 0) + return dateFormatter(startTime, 'yyyy-MM-dd hh:mm:ss') +} + +export const getMonthEnd = date => { + let endTime = new Date(date) + endTime.setMonth(endTime.getMonth() + 1) + endTime.setDate(1) + endTime.setHours(0, 0, 0, 0) + return dateFormatter(endTime, 'yyyy-MM-dd hh:mm:ss') +} diff --git a/webAdmin/src/common/dateFormatter.js b/webAdmin/src/common/dateFormatter.js new file mode 100644 index 0000000..b3512f4 --- /dev/null +++ b/webAdmin/src/common/dateFormatter.js @@ -0,0 +1,22 @@ +export default (date, format) => { + const o = { + 'M+': date.getMonth() + 1, + 'd+': date.getDate(), + 'h+': date.getHours(), + 'm+': date.getMinutes(), + 's+': date.getSeconds(), + 'q+': Math.floor((date.getMonth() + 3) / 3), + 'S+': date.getMilliseconds() + } + format = format.replace(/y+/, match => + (date.getFullYear() + '').substr(4 - match.length) + ) + for (let k in o) { + format = format.replace(new RegExp(k), match => { + return match.length === 1 + ? o[k] + : ('00' + o[k]).substr(('' + o[k]).length) + }) + } + return format +} diff --git a/webAdmin/src/common/http.js b/webAdmin/src/common/http.js new file mode 100644 index 0000000..af5cf02 --- /dev/null +++ b/webAdmin/src/common/http.js @@ -0,0 +1,36 @@ +import axios from 'axios' +import qs from 'qs' + +export const get = (url, params) => { + return axios.get(url, { + params, + paramsSerializer (params) { + return qs.stringify(params, { arrayFormat: 'repeat' }) + } + }) +} + +export const post = (url, params) => { + return axios.post(url, params) +} + +export const put = (url, params) => { + return axios.put(url, params) +} + +export const _delete = (url, params) => { + return axios.delete(url, { + params, + paramsSerializer (params) { + return qs.stringify(params, { arrayFormat: 'repeat' }) + } + }) +} + +export const postForm = (url, params) => { + let formData = new FormData() + Object.keys(params).forEach(key => { + formData.append(key, params[key]) + }) + return axios.post(url, formData) +} diff --git a/webAdmin/src/common/sleep.js b/webAdmin/src/common/sleep.js new file mode 100644 index 0000000..e5e2a1b --- /dev/null +++ b/webAdmin/src/common/sleep.js @@ -0,0 +1,8 @@ +/** + * 延迟 timeout + * 延迟10ms:sleep(10);延迟 20ms 后返回 1:sleep(20, 1) + * @param timeout + * @param data + */ +export default (timeout, data) => + new Promise(resolve => setTimeout(() => resolve(data), timeout)) diff --git a/webAdmin/src/components/comment/detail-modal.vue b/webAdmin/src/components/comment/detail-modal.vue new file mode 100644 index 0000000..ddaf272 --- /dev/null +++ b/webAdmin/src/components/comment/detail-modal.vue @@ -0,0 +1,77 @@ + + + diff --git a/webAdmin/src/components/comment/edit-modal.vue b/webAdmin/src/components/comment/edit-modal.vue new file mode 100644 index 0000000..b4a6531 --- /dev/null +++ b/webAdmin/src/components/comment/edit-modal.vue @@ -0,0 +1,103 @@ + + + diff --git a/webAdmin/src/components/content-header/index.vue b/webAdmin/src/components/content-header/index.vue new file mode 100644 index 0000000..3b95a2d --- /dev/null +++ b/webAdmin/src/components/content-header/index.vue @@ -0,0 +1,61 @@ + + + diff --git a/webAdmin/src/components/copyright/index.vue b/webAdmin/src/components/copyright/index.vue new file mode 100644 index 0000000..e4dbba9 --- /dev/null +++ b/webAdmin/src/components/copyright/index.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/webAdmin/src/components/loading-spin/index.vue b/webAdmin/src/components/loading-spin/index.vue new file mode 100644 index 0000000..20e65ce --- /dev/null +++ b/webAdmin/src/components/loading-spin/index.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/webAdmin/src/components/sub-tab/add-modal.vue b/webAdmin/src/components/sub-tab/add-modal.vue new file mode 100644 index 0000000..7129070 --- /dev/null +++ b/webAdmin/src/components/sub-tab/add-modal.vue @@ -0,0 +1,112 @@ + + + diff --git a/webAdmin/src/components/sub-tab/detail-modal.vue b/webAdmin/src/components/sub-tab/detail-modal.vue new file mode 100644 index 0000000..b5ecfd1 --- /dev/null +++ b/webAdmin/src/components/sub-tab/detail-modal.vue @@ -0,0 +1,74 @@ + + + diff --git a/webAdmin/src/components/sub-tab/edit-modal.vue b/webAdmin/src/components/sub-tab/edit-modal.vue new file mode 100644 index 0000000..f09f262 --- /dev/null +++ b/webAdmin/src/components/sub-tab/edit-modal.vue @@ -0,0 +1,121 @@ + + + diff --git a/webAdmin/src/components/tab/add-modal.vue b/webAdmin/src/components/tab/add-modal.vue new file mode 100644 index 0000000..0fed5c1 --- /dev/null +++ b/webAdmin/src/components/tab/add-modal.vue @@ -0,0 +1,98 @@ + + + diff --git a/webAdmin/src/components/tab/detail-modal.vue b/webAdmin/src/components/tab/detail-modal.vue new file mode 100644 index 0000000..57365b3 --- /dev/null +++ b/webAdmin/src/components/tab/detail-modal.vue @@ -0,0 +1,67 @@ + + + diff --git a/webAdmin/src/components/tab/edit-modal.vue b/webAdmin/src/components/tab/edit-modal.vue new file mode 100644 index 0000000..90b4a0d --- /dev/null +++ b/webAdmin/src/components/tab/edit-modal.vue @@ -0,0 +1,107 @@ + + + diff --git a/webAdmin/src/components/topic/detail-modal.vue b/webAdmin/src/components/topic/detail-modal.vue new file mode 100644 index 0000000..82fde6e --- /dev/null +++ b/webAdmin/src/components/topic/detail-modal.vue @@ -0,0 +1,105 @@ + + + diff --git a/webAdmin/src/components/topic/edit-modal.vue b/webAdmin/src/components/topic/edit-modal.vue new file mode 100644 index 0000000..7921445 --- /dev/null +++ b/webAdmin/src/components/topic/edit-modal.vue @@ -0,0 +1,150 @@ + + + diff --git a/webAdmin/src/components/user/add-modal.vue b/webAdmin/src/components/user/add-modal.vue new file mode 100644 index 0000000..663ca42 --- /dev/null +++ b/webAdmin/src/components/user/add-modal.vue @@ -0,0 +1,116 @@ + + + diff --git a/webAdmin/src/components/user/detail-modal.vue b/webAdmin/src/components/user/detail-modal.vue new file mode 100644 index 0000000..aa31001 --- /dev/null +++ b/webAdmin/src/components/user/detail-modal.vue @@ -0,0 +1,83 @@ + + + diff --git a/webAdmin/src/components/user/edit-modal.vue b/webAdmin/src/components/user/edit-modal.vue new file mode 100644 index 0000000..6740dcf --- /dev/null +++ b/webAdmin/src/components/user/edit-modal.vue @@ -0,0 +1,118 @@ + + + diff --git a/webAdmin/src/main.js b/webAdmin/src/main.js new file mode 100644 index 0000000..ca7116c --- /dev/null +++ b/webAdmin/src/main.js @@ -0,0 +1,45 @@ +import Vue from 'vue' +import 'babel-polyfill' +import App from '@/App.vue' +import router from '@/routers' +import ViewUI from 'view-design' +import 'view-design/dist/styles/iview.css' +import 'normalize.css' +import _ from 'lodash' +import * as qs from 'qs' +import sleep from '@/common/sleep' +import * as date from '@/common/date' +import api from '@/common/api' +import session from '@/api/account' +import { + goBack, + setItem, + getItem, + getUuid, + removeItem, + removeAll, + diffObj, + sortArray +} from '@/utils' + +Vue.config.productionTip = false +Vue.use(ViewUI) +Vue.prototype.$_ = _ +Vue.prototype.$api = api +Vue.prototype.$qs = qs +Vue.prototype.$date = date +Vue.prototype.$sleep = sleep +Vue.prototype.$goBack = goBack +Vue.prototype.$setItem = setItem +Vue.prototype.$getItem = getItem +Vue.prototype.$removeItem = removeItem +Vue.prototype.$removeAll = removeAll +Vue.prototype.$diffObj = diffObj +Vue.prototype.$getUuid = getUuid +Vue.prototype.$session = session +Vue.prototype.$sortArray = sortArray + +new Vue({ + router, + render: h => h(App) +}).$mount('#app') diff --git a/webAdmin/src/routers/index.js b/webAdmin/src/routers/index.js new file mode 100644 index 0000000..2893f9b --- /dev/null +++ b/webAdmin/src/routers/index.js @@ -0,0 +1,135 @@ +import Vue from 'vue' +import Router from 'vue-router' +import ViewUI from 'view-design' +import 'view-design/dist/styles/iview.css' +import accountAPI from '@/api/account' + +Vue.use(Router) + +const _import = file => () => import('@/views/' + file + '.vue') + +let router = new Router({ + routes: [ + { + path: '/', + name: '/', + meta: {}, + component: _import('Layer'), + redirect: '/index', + children: [ + { + path: 'index', + name: 'index', + component: _import('Index'), + meta: { + auth: true, + title: '首页' + } + }, + { + path: '/user', + name: 'user', + component: _import('User'), + menu: true, + meta: { + auth: true, + icon: 'ios-contacts', + title: '用户管理' + } + }, + { + path: '/tab', + name: 'tab', + component: _import('Tab'), + menu: true, + meta: { + auth: true, + icon: 'ios-contacts', + title: '类别管理' + } + }, + { + path: '/sub_tab', + name: 'sub_tab', + component: _import('SubTab'), + menu: true, + meta: { + auth: true, + icon: 'ios-contacts', + title: '子类别管理' + } + }, + { + path: '/topic', + name: 'topic', + component: _import('Topic'), + menu: true, + meta: { + auth: true, + icon: 'ios-contacts', + title: '主题管理' + } + }, + { + path: '/comment', + name: 'comment', + component: _import('Comment'), + menu: true, + meta: { + auth: true, + icon: 'ios-contacts', + title: '评论管理' + } + } + ] + }, + { + path: '/account/login', + name: 'login', + meta: { + auth: false + }, + component: _import('Login') + }, + { + path: '*', + name: 'default', + redirect: '/index' + } + ] +}) + +// 路由拦截器 +router.beforeEach(async function (to, from, next) { + ViewUI.LoadingBar.start() + window.scrollTo(0, 0) + try { + // 组件实例添加用户对象 $user + if (to.fullPath !== from.fullPath) { + Vue.prototype.$user = await accountAPI.check() + if (to.meta.auth && !Vue.prototype.$user) { + ViewUI.Message.error('登录后才可以操作哦') + next({ + path: '/account/login' + }) + } else { + next() + } + } + } catch (e) { + console.log(e) + if (e.msg) { + ViewUI.Message.error(e.msg) + } else { + console.log(e) + ViewUI.Message.error('服务器出了点小差') + } + ViewUI.LoadingBar.error() + } +}) + +router.afterEach(() => { + ViewUI.LoadingBar.finish() +}) + +export default router diff --git a/webAdmin/src/utils/index.js b/webAdmin/src/utils/index.js new file mode 100644 index 0000000..27a709a --- /dev/null +++ b/webAdmin/src/utils/index.js @@ -0,0 +1,80 @@ +import uuidv4 from 'uuid/v4' +import router from '@/routers' +import _ from 'lodash' + +export function goBack () { + router.go(-1) +} + +export function setItem (name, value) { + sessionStorage.setItem(name, value) +} + +export function getItem (name) { + return sessionStorage.getItem(name) +} + +export function removeItem (name) { + sessionStorage.removeItem(name) +} + +export function diffObj (oldObj, newObj, ignoreKeys) { + let dif = {} + for (let k in newObj) { + if (Array.isArray(ignoreKeys)) { + if (!ignoreKeys.includes(k)) { + if (!_.isEqual(newObj[k], oldObj[k])) { + dif[k] = newObj[k] + } + } + } else { + if (!_.isEqual(newObj[k], oldObj[k])) { + dif[k] = newObj[k] + } + } + } + return dif +} + +export function removeAll () { + sessionStorage.clear() +} + +export function getUuid () { + return uuidv4() +} + +export function isValidIP (params) { + const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ + return reg.test(params) +} + +export function sortArray (prop) { + return function (obj1, obj2) { + let val1 = obj1[prop] + let val2 = obj2[prop] + if (!isNaN(Number(val1)) && !isNaN(Number(val2))) { + val1 = Number(val1) + val2 = Number(val2) + } + if (val1 < val2) { + return -1 + } else if (val1 > val2) { + return 1 + } else { + return 0 + } + } +} + +export default { + goBack, + setItem, + getItem, + getUuid, + removeItem, + removeAll, + diffObj, + isValidIP, + sortArray +} diff --git a/webAdmin/src/views/Comment.vue b/webAdmin/src/views/Comment.vue new file mode 100644 index 0000000..afac8ea --- /dev/null +++ b/webAdmin/src/views/Comment.vue @@ -0,0 +1,219 @@ + + + diff --git a/webAdmin/src/views/Index.vue b/webAdmin/src/views/Index.vue new file mode 100644 index 0000000..d4c0902 --- /dev/null +++ b/webAdmin/src/views/Index.vue @@ -0,0 +1,64 @@ + + diff --git a/webAdmin/src/views/Layer.vue b/webAdmin/src/views/Layer.vue new file mode 100644 index 0000000..26eec3d --- /dev/null +++ b/webAdmin/src/views/Layer.vue @@ -0,0 +1,134 @@ + + + diff --git a/webAdmin/src/views/Login.vue b/webAdmin/src/views/Login.vue new file mode 100644 index 0000000..a873e52 --- /dev/null +++ b/webAdmin/src/views/Login.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/webAdmin/src/views/SubTab.vue b/webAdmin/src/views/SubTab.vue new file mode 100644 index 0000000..500d9eb --- /dev/null +++ b/webAdmin/src/views/SubTab.vue @@ -0,0 +1,226 @@ + + + diff --git a/webAdmin/src/views/Tab.vue b/webAdmin/src/views/Tab.vue new file mode 100644 index 0000000..d9dc011 --- /dev/null +++ b/webAdmin/src/views/Tab.vue @@ -0,0 +1,221 @@ + + + diff --git a/webAdmin/src/views/Topic.vue b/webAdmin/src/views/Topic.vue new file mode 100644 index 0000000..b70f5f5 --- /dev/null +++ b/webAdmin/src/views/Topic.vue @@ -0,0 +1,240 @@ + + + diff --git a/webAdmin/src/views/User.vue b/webAdmin/src/views/User.vue new file mode 100644 index 0000000..76e9e00 --- /dev/null +++ b/webAdmin/src/views/User.vue @@ -0,0 +1,201 @@ + + diff --git a/webAdmin/vue.config.js b/webAdmin/vue.config.js new file mode 100644 index 0000000..4da436a --- /dev/null +++ b/webAdmin/vue.config.js @@ -0,0 +1,35 @@ +const path = require('path') + +const resolve = dir => path.join(__dirname, dir) + +let assetsDir = (() => { + return 'static/' +})() + +module.exports = { + baseUrl: process.env.BASE_URL, + devServer: { + hot: true, + host: '0.0.0.0', + port: 80, + open: false, + disableHostCheck: true, + https: false, + hotOnly: false, + proxy: { + '/api': { + target: 'http://172.17.76.64:5000', + changeOrigin: true + } + } + }, + configureWebpack: { + resolve: { + alias: { + '@': resolve('src') + } + } + }, + assetsDir: assetsDir, + productionSourceMap: false +} diff --git a/webAdmin/yarn.lock b/webAdmin/yarn.lock new file mode 100644 index 0000000..8c9b307 --- /dev/null +++ b/webAdmin/yarn.lock @@ -0,0 +1,9311 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/code-frame/download/@babel/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha1-vAeC9tafe31JUxIZaZuYj2aaj50= + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/core@^7.0.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/core/download/@babel/core-7.5.5.tgz#17b2686ef0d6bc58f963dddd68ab669755582c30" + integrity sha1-F7JobvDWvFj5Y93daKtml1VYLDA= + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.5.5" + "@babel/helpers" "^7.5.5" + "@babel/parser" "^7.5.5" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.5" + "@babel/types" "^7.5.5" + convert-source-map "^1.1.0" + debug "^4.1.0" + json5 "^2.1.0" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/generator/download/@babel/generator-7.5.5.tgz#873a7f936a3c89491b43536d12245b626664e3cf" + integrity sha1-hzp/k2o8iUkbQ1NtEiRbYmZk488= + dependencies: + "@babel/types" "^7.5.5" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + trim-right "^1.0.1" + +"@babel/helper-annotate-as-pure@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-annotate-as-pure/download/@babel/helper-annotate-as-pure-7.0.0.tgz#323d39dd0b50e10c7c06ca7d7638e6864d8c5c32" + integrity sha1-Mj053QtQ4Qx8Bsp9djjmhk2MXDI= + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-builder-binary-assignment-operator-visitor/download/@babel/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz#6b69628dfe4087798e0c4ed98e3d4a6b2fbd2f5f" + integrity sha1-a2lijf5Ah3mODE7Zjj1Kay+9L18= + dependencies: + "@babel/helper-explode-assignable-expression" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-call-delegate@^7.4.4": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/helper-call-delegate/download/@babel/helper-call-delegate-7.4.4.tgz#87c1f8ca19ad552a736a7a27b1c1fcf8b1ff1f43" + integrity sha1-h8H4yhmtVSpzanonscH8+LH/H0M= + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/helper-create-class-features-plugin@^7.4.4", "@babel/helper-create-class-features-plugin@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-create-class-features-plugin/download/@babel/helper-create-class-features-plugin-7.5.5.tgz#401f302c8ddbc0edd36f7c6b2887d8fa1122e5a4" + integrity sha1-QB8wLI3bwO3Tb3xrKIfY+hEi5aQ= + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-member-expression-to-functions" "^7.5.5" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.5.5" + "@babel/helper-split-export-declaration" "^7.4.4" + +"@babel/helper-define-map@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-define-map/download/@babel/helper-define-map-7.5.5.tgz#3dec32c2046f37e09b28c93eb0b103fd2a25d369" + integrity sha1-PewywgRvN+CbKMk+sLED/Sol02k= + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/types" "^7.5.5" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-explode-assignable-expression/download/@babel/helper-explode-assignable-expression-7.1.0.tgz#537fa13f6f1674df745b0c00ec8fe4e99681c8f6" + integrity sha1-U3+hP28WdN90WwwA7I/k6ZaByPY= + dependencies: + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-function-name@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-function-name/download/@babel/helper-function-name-7.1.0.tgz#a0ceb01685f73355d4360c1247f582bfafc8ff53" + integrity sha1-oM6wFoX3M1XUNgwSR/WCv6/I/1M= + dependencies: + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-get-function-arity@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.0.0.tgz#83572d4320e2a4657263734113c42868b64e49c3" + integrity sha1-g1ctQyDipGVyY3NBE8QoaLZOScM= + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-hoist-variables@^7.4.4": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.4.4.tgz#0298b5f25c8c09c53102d52ac4a98f773eb2850a" + integrity sha1-Api18lyMCcUxAtUqxKmPdz6yhQo= + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-member-expression-to-functions@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.5.5.tgz#1fb5b8ec4453a93c439ee9fe3aeea4a84b76b590" + integrity sha1-H7W47ERTqTxDnun+Ou6kqEt2tZA= + dependencies: + "@babel/types" "^7.5.5" + +"@babel/helper-module-imports@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-module-imports/download/@babel/helper-module-imports-7.0.0.tgz#96081b7111e486da4d2cd971ad1a4fe216cc2e3d" + integrity sha1-lggbcRHkhtpNLNlxrRpP4hbMLj0= + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-module-transforms@^7.1.0", "@babel/helper-module-transforms@^7.4.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.5.5.tgz#f84ff8a09038dcbca1fd4355661a500937165b4a" + integrity sha1-+E/4oJA43Lyh/UNVZhpQCTcWW0o= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/types" "^7.5.5" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.0.0.tgz#a2920c5702b073c15de51106200aa8cad20497d5" + integrity sha1-opIMVwKwc8Fd5REGIAqoytIEl9U= + dependencies: + "@babel/types" "^7.0.0" + +"@babel/helper-plugin-utils@^7.0.0": + version "7.0.0" + resolved "https://registry.npm.taobao.org/@babel/helper-plugin-utils/download/@babel/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" + integrity sha1-u7P77phmHFaQNCN8wDlnupm08lA= + +"@babel/helper-regex@^7.0.0", "@babel/helper-regex@^7.4.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-regex/download/@babel/helper-regex-7.5.5.tgz#0aa6824f7100a2e0e89c1527c23936c152cab351" + integrity sha1-CqaCT3EAouDonBUnwjk2wVLKs1E= + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-remap-async-to-generator/download/@babel/helper-remap-async-to-generator-7.1.0.tgz#361d80821b6f38da75bd3f0785ece20a88c5fe7f" + integrity sha1-Nh2AghtvONp1vT8HheziCojF/n8= + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-wrap-function" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-replace-supers@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fhelper-replace-supers%2Fdownload%2F%40babel%2Fhelper-replace-supers-7.5.5.tgz#f84ce43df031222d2bad068d2626cb5799c34bc2" + integrity sha1-+EzkPfAxIi0rrQaNJibLV5nDS8I= + dependencies: + "@babel/helper-member-expression-to-functions" "^7.5.5" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/traverse" "^7.5.5" + "@babel/types" "^7.5.5" + +"@babel/helper-simple-access@^7.1.0": + version "7.1.0" + resolved "https://registry.npm.taobao.org/@babel/helper-simple-access/download/@babel/helper-simple-access-7.1.0.tgz#65eeb954c8c245beaa4e859da6188f39d71e585c" + integrity sha1-Ze65VMjCRb6qToWdphiPOdceWFw= + dependencies: + "@babel/template" "^7.1.0" + "@babel/types" "^7.0.0" + +"@babel/helper-split-export-declaration@^7.4.4": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.4.4.tgz#ff94894a340be78f53f06af038b205c49d993677" + integrity sha1-/5SJSjQL549T8GrwOLIFxJ2ZNnc= + dependencies: + "@babel/types" "^7.4.4" + +"@babel/helper-wrap-function@^7.1.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/helper-wrap-function/download/@babel/helper-wrap-function-7.2.0.tgz#c4e0012445769e2815b55296ead43a958549f6fa" + integrity sha1-xOABJEV2nigVtVKW6tQ6lYVJ9vo= + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/template" "^7.1.0" + "@babel/traverse" "^7.1.0" + "@babel/types" "^7.2.0" + +"@babel/helpers@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/helpers/download/@babel/helpers-7.5.5.tgz#63908d2a73942229d1e6685bc2a0e730dde3b75e" + integrity sha1-Y5CNKnOUIinR5mhbwqDnMN3jt14= + dependencies: + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.5.5" + "@babel/types" "^7.5.5" + +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/highlight/download/@babel/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha1-VtETEr2SSPphlZHQJHK+boyzJUA= + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.0.0", "@babel/parser@^7.4.4", "@babel/parser@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/parser/download/@babel/parser-7.5.5.tgz#02f077ac8817d3df4a832ef59de67565e71cca4b" + integrity sha1-AvB3rIgX099Kgy71neZ1Zeccyks= + +"@babel/plugin-proposal-async-generator-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-async-generator-functions/download/@babel/plugin-proposal-async-generator-functions-7.2.0.tgz#b289b306669dce4ad20b0252889a15768c9d417e" + integrity sha1-somzBmadzkrSCwJSiJoVdoydQX4= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-class-properties/download/@babel/plugin-proposal-class-properties-7.5.5.tgz#a974cfae1e37c3110e71f3c6a2e48b8e71958cd4" + integrity sha1-qXTPrh43wxEOcfPGouSLjnGVjNQ= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.5.5" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-proposal-decorators@^7.1.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-decorators/download/@babel/plugin-proposal-decorators-7.4.4.tgz#de9b2a1a8ab0196f378e2a82f10b6e2a36f21cc0" + integrity sha1-3psqGoqwGW83jiqC8QtuKjbyHMA= + dependencies: + "@babel/helper-create-class-features-plugin" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-decorators" "^7.2.0" + +"@babel/plugin-proposal-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-json-strings/download/@babel/plugin-proposal-json-strings-7.2.0.tgz#568ecc446c6148ae6b267f02551130891e29f317" + integrity sha1-Vo7MRGxhSK5rJn8CVREwiR4p8xc= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + +"@babel/plugin-proposal-object-rest-spread@^7.3.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-object-rest-spread/download/@babel/plugin-proposal-object-rest-spread-7.5.5.tgz#61939744f71ba76a3ae46b5eea18a54c16d22e58" + integrity sha1-YZOXRPcbp2o65Gte6hilTBbSLlg= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-optional-catch-binding/download/@babel/plugin-proposal-optional-catch-binding-7.2.0.tgz#135d81edb68a081e55e56ec48541ece8065c38f5" + integrity sha1-E12B7baKCB5V5W7EhUHs6AZcOPU= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-proposal-unicode-property-regex/download/@babel/plugin-proposal-unicode-property-regex-7.4.4.tgz#501ffd9826c0b91da22690720722ac7cb1ca9c78" + integrity sha1-UB/9mCbAuR2iJpByByKsfLHKnHg= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-syntax-async-generators@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-async-generators/download/@babel/plugin-syntax-async-generators-7.2.0.tgz#69e1f0db34c6f5a0cf7e2b3323bf159a76c8cb7f" + integrity sha1-aeHw2zTG9aDPfiszI78VmnbIy38= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-decorators@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-decorators/download/@babel/plugin-syntax-decorators-7.2.0.tgz#c50b1b957dcc69e4b1127b65e1c33eef61570c1b" + integrity sha1-xQsblX3MaeSxEntl4cM+72FXDBs= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-dynamic-import@^7.0.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-dynamic-import/download/@babel/plugin-syntax-dynamic-import-7.2.0.tgz#69c159ffaf4998122161ad8ebc5e6d1f55df8612" + integrity sha1-acFZ/69JmBIhYa2OvF5tH1XfhhI= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-json-strings@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-json-strings/download/@babel/plugin-syntax-json-strings-7.2.0.tgz#72bd13f6ffe1d25938129d2a186b11fd62951470" + integrity sha1-cr0T9v/h0lk4Ep0qGGsR/WKVFHA= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-jsx/download/@babel/plugin-syntax-jsx-7.2.0.tgz#0b85a3b4bc7cdf4cc4b8bf236335b907ca22e7c7" + integrity sha1-C4WjtLx830zEuL8jYzW5B8oi58c= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-object-rest-spread@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-object-rest-spread/download/@babel/plugin-syntax-object-rest-spread-7.2.0.tgz#3b7a3e733510c57e820b9142a6579ac8b0dfad2e" + integrity sha1-O3o+czUQxX6CC5FCpleayLDfrS4= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-syntax-optional-catch-binding/download/@babel/plugin-syntax-optional-catch-binding-7.2.0.tgz#a94013d6eda8908dfe6a477e7f9eda85656ecf5c" + integrity sha1-qUAT1u2okI3+akd+f57ahWVuz1w= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-arrow-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-arrow-functions/download/@babel/plugin-transform-arrow-functions-7.2.0.tgz#9aeafbe4d6ffc6563bf8f8372091628f00779550" + integrity sha1-mur75Nb/xlY7+Pg3IJFijwB3lVA= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-async-to-generator@^7.3.4": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-async-to-generator/download/@babel/plugin-transform-async-to-generator-7.5.0.tgz#89a3848a0166623b5bc481164b5936ab947e887e" + integrity sha1-iaOEigFmYjtbxIEWS1k2q5R+iH4= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-remap-async-to-generator" "^7.1.0" + +"@babel/plugin-transform-block-scoped-functions@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoped-functions/download/@babel/plugin-transform-block-scoped-functions-7.2.0.tgz#5d3cc11e8d5ddd752aa64c9148d0db6cb79fd190" + integrity sha1-XTzBHo1d3XUqpkyRSNDbbLef0ZA= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-block-scoping@^7.3.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-block-scoping/download/@babel/plugin-transform-block-scoping-7.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Fplugin-transform-block-scoping%2Fdownload%2F%40babel%2Fplugin-transform-block-scoping-7.5.5.tgz#a35f395e5402822f10d2119f6f8e045e3639a2ce" + integrity sha1-o185XlQCgi8Q0hGfb44EXjY5os4= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.3.4": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-classes/download/@babel/plugin-transform-classes-7.5.5.tgz#d094299d9bd680a14a2a0edae38305ad60fb4de9" + integrity sha1-0JQpnZvWgKFKKg7a44MFrWD7Tek= + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-define-map" "^7.5.5" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-optimise-call-expression" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.5.5" + "@babel/helper-split-export-declaration" "^7.4.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-computed-properties/download/@babel/plugin-transform-computed-properties-7.2.0.tgz#83a7df6a658865b1c8f641d510c6f3af220216da" + integrity sha1-g6ffamWIZbHI9kHVEMbzryICFto= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-destructuring@^7.2.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-destructuring/download/@babel/plugin-transform-destructuring-7.5.0.tgz#f6c09fdfe3f94516ff074fe877db7bc9ef05855a" + integrity sha1-9sCf3+P5RRb/B0/od9t7ye8FhVo= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-dotall-regex@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-dotall-regex/download/@babel/plugin-transform-dotall-regex-7.4.4.tgz#361a148bc951444312c69446d76ed1ea8e4450c3" + integrity sha1-NhoUi8lRREMSxpRG127R6o5EUMM= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/plugin-transform-duplicate-keys@^7.2.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-duplicate-keys/download/@babel/plugin-transform-duplicate-keys-7.5.0.tgz#c5dbf5106bf84cdf691222c0974c12b1df931853" + integrity sha1-xdv1EGv4TN9pEiLAl0wSsd+TGFM= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-exponentiation-operator@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-exponentiation-operator/download/@babel/plugin-transform-exponentiation-operator-7.2.0.tgz#a63868289e5b4007f7054d46491af51435766008" + integrity sha1-pjhoKJ5bQAf3BU1GSRr1FDV2YAg= + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-for-of@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-for-of/download/@babel/plugin-transform-for-of-7.4.4.tgz#0267fc735e24c808ba173866c6c4d1440fc3c556" + integrity sha1-Amf8c14kyAi6FzhmxsTRRA/DxVY= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-function-name@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-function-name/download/@babel/plugin-transform-function-name-7.4.4.tgz#e1436116abb0610c2259094848754ac5230922ad" + integrity sha1-4UNhFquwYQwiWQlISHVKxSMJIq0= + dependencies: + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-literals@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-literals/download/@babel/plugin-transform-literals-7.2.0.tgz#690353e81f9267dad4fd8cfd77eafa86aba53ea1" + integrity sha1-aQNT6B+SZ9rU/Yz9d+r6hqulPqE= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-modules-amd@^7.2.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-amd/download/@babel/plugin-transform-modules-amd-7.5.0.tgz#ef00435d46da0a5961aa728a1d2ecff063e4fb91" + integrity sha1-7wBDXUbaCllhqnKKHS7P8GPk+5E= + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.2.0": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-commonjs/download/@babel/plugin-transform-modules-commonjs-7.5.0.tgz#425127e6045231360858eeaa47a71d75eded7a74" + integrity sha1-QlEn5gRSMTYIWO6qR6cdde3tenQ= + dependencies: + "@babel/helper-module-transforms" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-simple-access" "^7.1.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.3.4": + version "7.5.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-systemjs/download/@babel/plugin-transform-modules-systemjs-7.5.0.tgz#e75266a13ef94202db2a0620977756f51d52d249" + integrity sha1-51JmoT75QgLbKgYgl3dW9R1S0kk= + dependencies: + "@babel/helper-hoist-variables" "^7.4.4" + "@babel/helper-plugin-utils" "^7.0.0" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-modules-umd/download/@babel/plugin-transform-modules-umd-7.2.0.tgz#7678ce75169f0877b8eb2235538c074268dd01ae" + integrity sha1-dnjOdRafCHe46yI1U4wHQmjdAa4= + dependencies: + "@babel/helper-module-transforms" "^7.1.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.3.0": + version "7.4.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-named-capturing-groups-regex/download/@babel/plugin-transform-named-capturing-groups-regex-7.4.5.tgz#9d269fd28a370258199b4294736813a60bbdd106" + integrity sha1-nSaf0oo3AlgZm0KUc2gTpgu90QY= + dependencies: + regexp-tree "^0.1.6" + +"@babel/plugin-transform-new-target@^7.0.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-new-target/download/@babel/plugin-transform-new-target-7.4.4.tgz#18d120438b0cc9ee95a47f2c72bc9768fbed60a5" + integrity sha1-GNEgQ4sMye6VpH8scryXaPvtYKU= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-object-super@^7.2.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-object-super/download/@babel/plugin-transform-object-super-7.5.5.tgz#c70021df834073c65eb613b8679cc4a381d1a9f9" + integrity sha1-xwAh34NAc8ZethO4Z5zEo4HRqfk= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-replace-supers" "^7.5.5" + +"@babel/plugin-transform-parameters@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-parameters/download/@babel/plugin-transform-parameters-7.4.4.tgz#7556cf03f318bd2719fe4c922d2d808be5571e16" + integrity sha1-dVbPA/MYvScZ/kySLS2Ai+VXHhY= + dependencies: + "@babel/helper-call-delegate" "^7.4.4" + "@babel/helper-get-function-arity" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-regenerator@^7.3.4": + version "7.4.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-regenerator/download/@babel/plugin-transform-regenerator-7.4.5.tgz#629dc82512c55cee01341fb27bdfcb210354680f" + integrity sha1-Yp3IJRLFXO4BNB+ye9/LIQNUaA8= + dependencies: + regenerator-transform "^0.14.0" + +"@babel/plugin-transform-runtime@^7.4.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-runtime/download/@babel/plugin-transform-runtime-7.5.5.tgz#a6331afbfc59189d2135b2e09474457a8e3d28bc" + integrity sha1-pjMa+/xZGJ0hNbLglHRFeo49KLw= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-shorthand-properties/download/@babel/plugin-transform-shorthand-properties-7.2.0.tgz#6333aee2f8d6ee7e28615457298934a3b46198f0" + integrity sha1-YzOu4vjW7n4oYVRXKYk0o7RhmPA= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-spread@^7.2.0": + version "7.2.2" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-spread/download/@babel/plugin-transform-spread-7.2.2.tgz#3103a9abe22f742b6d406ecd3cd49b774919b406" + integrity sha1-MQOpq+IvdCttQG7NPNSbd0kZtAY= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-sticky-regex@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-sticky-regex/download/@babel/plugin-transform-sticky-regex-7.2.0.tgz#a1e454b5995560a9c1e0d537dfc15061fd2687e1" + integrity sha1-oeRUtZlVYKnB4NU338FQYf0mh+E= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.0.0" + +"@babel/plugin-transform-template-literals@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-template-literals/download/@babel/plugin-transform-template-literals-7.4.4.tgz#9d28fea7bbce637fb7612a0750989d8321d4bcb0" + integrity sha1-nSj+p7vOY3+3YSoHUJidgyHUvLA= + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-typeof-symbol@^7.2.0": + version "7.2.0" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-typeof-symbol/download/@babel/plugin-transform-typeof-symbol-7.2.0.tgz#117d2bcec2fbf64b4b59d1f9819894682d29f2b2" + integrity sha1-EX0rzsL79ktLWdH5gZiUaC0p8rI= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + +"@babel/plugin-transform-unicode-regex@^7.2.0": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/plugin-transform-unicode-regex/download/@babel/plugin-transform-unicode-regex-7.4.4.tgz#ab4634bb4f14d36728bf5978322b35587787970f" + integrity sha1-q0Y0u08U02cov1l4Mis1WHeHlw8= + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/helper-regex" "^7.4.4" + regexpu-core "^4.5.4" + +"@babel/preset-env@^7.0.0 < 7.4.0": + version "7.3.4" + resolved "https://registry.npm.taobao.org/@babel/preset-env/download/@babel/preset-env-7.3.4.tgz#887cf38b6d23c82f19b5135298bdb160062e33e1" + integrity sha1-iHzzi20jyC8ZtRNSmL2xYAYuM+E= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-async-generator-functions" "^7.2.0" + "@babel/plugin-proposal-json-strings" "^7.2.0" + "@babel/plugin-proposal-object-rest-spread" "^7.3.4" + "@babel/plugin-proposal-optional-catch-binding" "^7.2.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.2.0" + "@babel/plugin-syntax-async-generators" "^7.2.0" + "@babel/plugin-syntax-json-strings" "^7.2.0" + "@babel/plugin-syntax-object-rest-spread" "^7.2.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.2.0" + "@babel/plugin-transform-arrow-functions" "^7.2.0" + "@babel/plugin-transform-async-to-generator" "^7.3.4" + "@babel/plugin-transform-block-scoped-functions" "^7.2.0" + "@babel/plugin-transform-block-scoping" "^7.3.4" + "@babel/plugin-transform-classes" "^7.3.4" + "@babel/plugin-transform-computed-properties" "^7.2.0" + "@babel/plugin-transform-destructuring" "^7.2.0" + "@babel/plugin-transform-dotall-regex" "^7.2.0" + "@babel/plugin-transform-duplicate-keys" "^7.2.0" + "@babel/plugin-transform-exponentiation-operator" "^7.2.0" + "@babel/plugin-transform-for-of" "^7.2.0" + "@babel/plugin-transform-function-name" "^7.2.0" + "@babel/plugin-transform-literals" "^7.2.0" + "@babel/plugin-transform-modules-amd" "^7.2.0" + "@babel/plugin-transform-modules-commonjs" "^7.2.0" + "@babel/plugin-transform-modules-systemjs" "^7.3.4" + "@babel/plugin-transform-modules-umd" "^7.2.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.3.0" + "@babel/plugin-transform-new-target" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.2.0" + "@babel/plugin-transform-parameters" "^7.2.0" + "@babel/plugin-transform-regenerator" "^7.3.4" + "@babel/plugin-transform-shorthand-properties" "^7.2.0" + "@babel/plugin-transform-spread" "^7.2.0" + "@babel/plugin-transform-sticky-regex" "^7.2.0" + "@babel/plugin-transform-template-literals" "^7.2.0" + "@babel/plugin-transform-typeof-symbol" "^7.2.0" + "@babel/plugin-transform-unicode-regex" "^7.2.0" + browserslist "^4.3.4" + invariant "^2.2.2" + js-levenshtein "^1.1.3" + semver "^5.3.0" + +"@babel/runtime-corejs2@^7.2.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/runtime-corejs2/download/@babel/runtime-corejs2-7.5.5.tgz#c3214c08ef20341af4187f1c9fbdc357fbec96b2" + integrity sha1-wyFMCO8gNBr0GH8cn73DV/vslrI= + dependencies: + core-js "^2.6.5" + regenerator-runtime "^0.13.2" + +"@babel/runtime@^7.0.0": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/runtime/download/@babel/runtime-7.5.5.tgz#74fba56d35efbeca444091c7850ccd494fd2f132" + integrity sha1-dPulbTXvvspEQJHHhQzNSU/S8TI= + dependencies: + regenerator-runtime "^0.13.2" + +"@babel/template@^7.1.0", "@babel/template@^7.4.4": + version "7.4.4" + resolved "https://registry.npm.taobao.org/@babel/template/download/@babel/template-7.4.4.tgz#f4b88d1225689a08f5bc3a17483545be9e4ed237" + integrity sha1-9LiNEiVomgj1vDoXSDVFvp5O0jc= + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.4.4" + "@babel/types" "^7.4.4" + +"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.5.tgz?cache=0&sync_timestamp=1563399350354&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.5.5.tgz#f664f8f368ed32988cd648da9f72d5ca70f165bb" + integrity sha1-9mT482jtMpiM1kjan3LVynDxZbs= + dependencies: + "@babel/code-frame" "^7.5.5" + "@babel/generator" "^7.5.5" + "@babel/helper-function-name" "^7.1.0" + "@babel/helper-split-export-declaration" "^7.4.4" + "@babel/parser" "^7.5.5" + "@babel/types" "^7.5.5" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.0.0", "@babel/types@^7.2.0", "@babel/types@^7.4.4", "@babel/types@^7.5.5": + version "7.5.5" + resolved "https://registry.npm.taobao.org/@babel/types/download/@babel/types-7.5.5.tgz#97b9f728e182785909aa4ab56264f090a028d18a" + integrity sha1-l7n3KOGCeFkJqkq1YmTwkKAo0Yo= + dependencies: + esutils "^2.0.2" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@hapi/address@2.x.x": + version "2.0.0" + resolved "https://registry.npm.taobao.org/@hapi/address/download/@hapi/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a" + integrity sha1-nwVGnIjLL9Pc1iR3a1TulcMSEmo= + +"@hapi/bourne@1.x.x": + version "1.3.2" + resolved "https://registry.npm.taobao.org/@hapi/bourne/download/@hapi/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" + integrity sha1-CnCVreoGckPOMoPhtWuKj0U7JCo= + +"@hapi/hoek@8.x.x": + version "8.2.1" + resolved "https://registry.npm.taobao.org/@hapi/hoek/download/@hapi/hoek-8.2.1.tgz?cache=0&sync_timestamp=1565854121942&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fhoek%2Fdownload%2F%40hapi%2Fhoek-8.2.1.tgz#924af04cbb22e17359c620d2a9c946e63f58eb77" + integrity sha1-kkrwTLsi4XNZxiDSqclG5j9Y63c= + +"@hapi/joi@^15.0.1": + version "15.1.1" + resolved "https://registry.npm.taobao.org/@hapi/joi/download/@hapi/joi-15.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Fjoi%2Fdownload%2F%40hapi%2Fjoi-15.1.1.tgz#c675b8a71296f02833f8d6d243b34c57b8ce19d7" + integrity sha1-xnW4pxKW8Cgz+NbSQ7NMV7jOGdc= + dependencies: + "@hapi/address" "2.x.x" + "@hapi/bourne" "1.x.x" + "@hapi/hoek" "8.x.x" + "@hapi/topo" "3.x.x" + +"@hapi/topo@3.x.x": + version "3.1.3" + resolved "https://registry.npm.taobao.org/@hapi/topo/download/@hapi/topo-3.1.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40hapi%2Ftopo%2Fdownload%2F%40hapi%2Ftopo-3.1.3.tgz#c7a02e0d936596d29f184e6d7fdc07e8b5efce11" + integrity sha1-x6AuDZNlltKfGE5tf9wH6LXvzhE= + dependencies: + "@hapi/hoek" "8.x.x" + +"@intervolga/optimize-cssnano-plugin@^1.0.5": + version "1.0.6" + resolved "https://registry.npm.taobao.org/@intervolga/optimize-cssnano-plugin/download/@intervolga/optimize-cssnano-plugin-1.0.6.tgz#be7c7846128b88f6a9b1d1261a0ad06eb5c0fdf8" + integrity sha1-vnx4RhKLiPapsdEmGgrQbrXA/fg= + dependencies: + cssnano "^4.0.0" + cssnano-preset-default "^4.0.0" + postcss "^7.0.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.npm.taobao.org/@mrmlnc/readdir-enhanced/download/@mrmlnc/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha1-UkryQNGjYFJ7cwR17PoTRKpUDd4= + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.npm.taobao.org/@nodelib/fs.stat/download/@nodelib/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha1-K1o6s/kYzKSKjHVMCBaOPwPrphs= + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.0" + resolved "https://registry.npm.taobao.org/@samverschueren/stream-to-observable/download/@samverschueren/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha1-7N9I1TLFjqR3rPyrgDSEJPjQZi8= + dependencies: + any-observable "^0.3.0" + +"@soda/friendly-errors-webpack-plugin@^1.7.1": + version "1.7.1" + resolved "https://registry.npm.taobao.org/@soda/friendly-errors-webpack-plugin/download/@soda/friendly-errors-webpack-plugin-1.7.1.tgz#706f64bcb4a8b9642b48ae3ace444c70334d615d" + integrity sha1-cG9kvLSouWQrSK46zkRMcDNNYV0= + dependencies: + chalk "^1.1.3" + error-stack-parser "^2.0.0" + string-width "^2.0.0" + +"@types/events@*": + version "3.0.0" + resolved "https://registry.npm.taobao.org/@types/events/download/@types/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha1-KGLz9Yqaf3w+eNefEw3U1xwlwqc= + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.npm.taobao.org/@types/glob/download/@types/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha1-qlmhxuP7xCHgfM0xqUTDDrpSFXU= + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.npm.taobao.org/@types/minimatch/download/@types/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha1-PcoOPzOyAPx9ETnAzZbBJoyt/Z0= + +"@types/node@*": + version "12.7.2" + resolved "https://registry.npm.taobao.org/@types/node/download/@types/node-12.7.2.tgz#c4e63af5e8823ce9cc3f0b34f7b998c2171f0c44" + integrity sha1-xOY69eiCPOnMPws097mYwhcfDEQ= + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.npm.taobao.org/@types/normalize-package-data/download/@types/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha1-5IbQ2XOW15vu3QpuM/RTT/a0lz4= + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.npm.taobao.org/@types/q/download/@types/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha1-aQoUdbhPKohP0HzXl8APXzE1bqg= + +"@vue/babel-helper-vue-jsx-merge-props@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-helper-vue-jsx-merge-props/download/@vue/babel-helper-vue-jsx-merge-props-1.0.0.tgz#048fe579958da408fb7a8b2a3ec050b50a661040" + integrity sha1-BI/leZWNpAj7eosqPsBQtQpmEEA= + +"@vue/babel-plugin-transform-vue-jsx@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-plugin-transform-vue-jsx/download/@vue/babel-plugin-transform-vue-jsx-1.0.0.tgz#ebcbf39c312c94114c8c4f407ee4f6c97aa45432" + integrity sha1-68vznDEslBFMjE9AfuT2yXqkVDI= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + html-tags "^2.0.0" + lodash.kebabcase "^4.1.1" + svg-tags "^1.0.0" + +"@vue/babel-preset-app@^3.11.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/babel-preset-app/download/@vue/babel-preset-app-3.11.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fbabel-preset-app%2Fdownload%2F%40vue%2Fbabel-preset-app-3.11.0.tgz#52bf79c15560a304a13f4770e3e5530e01dd6173" + integrity sha1-Ur95wVVgowShP0dw4+VTDgHdYXM= + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-decorators" "^7.1.0" + "@babel/plugin-syntax-dynamic-import" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.4.0" + "@babel/preset-env" "^7.0.0 < 7.4.0" + "@babel/runtime" "^7.0.0" + "@babel/runtime-corejs2" "^7.2.0" + "@vue/babel-preset-jsx" "^1.0.0" + babel-plugin-dynamic-import-node "^2.2.0" + babel-plugin-module-resolver "3.2.0" + core-js "^2.6.5" + +"@vue/babel-preset-jsx@^1.0.0": + version "1.1.0" + resolved "https://registry.npm.taobao.org/@vue/babel-preset-jsx/download/@vue/babel-preset-jsx-1.1.0.tgz#c8001329f5b372297a3111a251eb4f9e956c1266" + integrity sha1-yAATKfWzcil6MRGiUetPnpVsEmY= + dependencies: + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" + "@vue/babel-sugar-functional-vue" "^1.0.0" + "@vue/babel-sugar-inject-h" "^1.0.0" + "@vue/babel-sugar-v-model" "^1.0.0" + "@vue/babel-sugar-v-on" "^1.1.0" + +"@vue/babel-sugar-functional-vue@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-sugar-functional-vue/download/@vue/babel-sugar-functional-vue-1.0.0.tgz#17e2c4ca27b74b244da3b923240ec91d10048cb3" + integrity sha1-F+LEyie3SyRNo7kjJA7JHRAEjLM= + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-inject-h@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-sugar-inject-h/download/@vue/babel-sugar-inject-h-1.0.0.tgz#e5efb6c5b5b7988dc03831af6d133bf7bcde6347" + integrity sha1-5e+2xbW3mI3AODGvbRM797zeY0c= + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + +"@vue/babel-sugar-v-model@^1.0.0": + version "1.0.0" + resolved "https://registry.npm.taobao.org/@vue/babel-sugar-v-model/download/@vue/babel-sugar-v-model-1.0.0.tgz#f4da56aa67f65a349bd2c269a95e72e601af4613" + integrity sha1-9NpWqmf2WjSb0sJpqV5y5gGvRhM= + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-helper-vue-jsx-merge-props" "^1.0.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" + camelcase "^5.0.0" + html-tags "^2.0.0" + svg-tags "^1.0.0" + +"@vue/babel-sugar-v-on@^1.1.0": + version "1.1.0" + resolved "https://registry.npm.taobao.org/@vue/babel-sugar-v-on/download/@vue/babel-sugar-v-on-1.1.0.tgz#1f2b35eeeabb87eaf8925931f4d34fd8e6404a45" + integrity sha1-Hys17uq7h+r4klkx9NNP2OZASkU= + dependencies: + "@babel/plugin-syntax-jsx" "^7.2.0" + "@vue/babel-plugin-transform-vue-jsx" "^1.0.0" + camelcase "^5.0.0" + +"@vue/cli-overlay@^3.11.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-overlay/download/@vue/cli-overlay-3.11.0.tgz?cache=0&sync_timestamp=1566403603544&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-overlay%2Fdownload%2F%40vue%2Fcli-overlay-3.11.0.tgz#88d49060095c9c5168ac6014d4c4eb66e7dd4874" + integrity sha1-iNSQYAlcnFForGAU1MTrZufdSHQ= + +"@vue/cli-plugin-babel@^3.6.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-plugin-babel/download/@vue/cli-plugin-babel-3.11.0.tgz?cache=0&sync_timestamp=1566403613583&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-plugin-babel%2Fdownload%2F%40vue%2Fcli-plugin-babel-3.11.0.tgz#247a7233100a33ea0fd9f7d30bdf2b9b554e9e88" + integrity sha1-JHpyMxAKM+oP2ffTC98rm1VOnog= + dependencies: + "@babel/core" "^7.0.0" + "@vue/babel-preset-app" "^3.11.0" + "@vue/cli-shared-utils" "^3.11.0" + babel-loader "^8.0.5" + webpack "^4.0.0" + +"@vue/cli-plugin-eslint@^3.6.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-plugin-eslint/download/@vue/cli-plugin-eslint-3.11.0.tgz#99b14a9d4ab05d96fc707d958db9de4856133329" + integrity sha1-mbFKnUqwXZb8cH2VjbneSFYTMyk= + dependencies: + "@vue/cli-shared-utils" "^3.11.0" + babel-eslint "^10.0.1" + eslint-loader "^2.1.2" + globby "^9.2.0" + webpack "^4.0.0" + yorkie "^2.0.0" + optionalDependencies: + eslint "^4.19.1" + eslint-plugin-vue "^4.7.1" + +"@vue/cli-service@^3.6.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-service/download/@vue/cli-service-3.11.0.tgz#356526e9100a7a0a258e3c4a13ff421de29eadde" + integrity sha1-NWUm6RAKegoljjxKE/9CHeKerd4= + dependencies: + "@intervolga/optimize-cssnano-plugin" "^1.0.5" + "@soda/friendly-errors-webpack-plugin" "^1.7.1" + "@vue/cli-overlay" "^3.11.0" + "@vue/cli-shared-utils" "^3.11.0" + "@vue/component-compiler-utils" "^3.0.0" + "@vue/preload-webpack-plugin" "^1.1.0" + "@vue/web-component-wrapper" "^1.2.0" + acorn "^6.1.1" + acorn-walk "^6.1.1" + address "^1.0.3" + autoprefixer "^9.5.1" + browserslist "^4.5.4" + cache-loader "^2.0.1" + case-sensitive-paths-webpack-plugin "^2.2.0" + chalk "^2.4.2" + cli-highlight "^2.1.0" + clipboardy "^2.0.0" + cliui "^5.0.0" + copy-webpack-plugin "^4.6.0" + css-loader "^1.0.1" + cssnano "^4.1.10" + current-script-polyfill "^1.0.0" + debug "^4.1.1" + default-gateway "^5.0.2" + dotenv "^7.0.0" + dotenv-expand "^5.1.0" + escape-string-regexp "^1.0.5" + file-loader "^3.0.1" + fs-extra "^7.0.1" + globby "^9.2.0" + hash-sum "^1.0.2" + html-webpack-plugin "^3.2.0" + launch-editor-middleware "^2.2.1" + lodash.defaultsdeep "^4.6.1" + lodash.mapvalues "^4.6.0" + lodash.transform "^4.6.0" + mini-css-extract-plugin "^0.6.0" + minimist "^1.2.0" + ora "^3.4.0" + portfinder "^1.0.20" + postcss-loader "^3.0.0" + read-pkg "^5.0.0" + semver "^6.0.0" + slash "^2.0.0" + source-map-url "^0.4.0" + ssri "^6.0.1" + string.prototype.padend "^3.0.0" + terser-webpack-plugin "^1.2.3" + thread-loader "^2.1.2" + url-loader "^1.1.2" + vue-loader "^15.7.0" + webpack "^4.0.0" + webpack-bundle-analyzer "^3.3.0" + webpack-chain "^4.11.0" + webpack-dev-server "^3.4.1" + webpack-merge "^4.2.1" + +"@vue/cli-shared-utils@^3.11.0": + version "3.11.0" + resolved "https://registry.npm.taobao.org/@vue/cli-shared-utils/download/@vue/cli-shared-utils-3.11.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fcli-shared-utils%2Fdownload%2F%40vue%2Fcli-shared-utils-3.11.0.tgz#a3d6f809b0dfb367e626b71405f85dea0631310b" + integrity sha1-o9b4CbDfs2fmJrcUBfhd6gYxMQs= + dependencies: + "@hapi/joi" "^15.0.1" + chalk "^2.4.1" + execa "^1.0.0" + launch-editor "^2.2.1" + lru-cache "^5.1.1" + node-ipc "^9.1.1" + open "^6.3.0" + ora "^3.4.0" + request "^2.87.0" + request-promise-native "^1.0.7" + semver "^6.0.0" + string.prototype.padstart "^3.0.0" + +"@vue/component-compiler-utils@^3.0.0": + version "3.0.0" + resolved "https://registry.npm.taobao.org/@vue/component-compiler-utils/download/@vue/component-compiler-utils-3.0.0.tgz#d16fa26b836c06df5baaeb45f3d80afc47e35634" + integrity sha1-0W+ia4NsBt9bqutF89gK/EfjVjQ= + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.14" + postcss-selector-parser "^5.0.0" + prettier "1.16.3" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + +"@vue/eslint-config-standard@^4.0.0": + version "4.0.0" + resolved "https://registry.npm.taobao.org/@vue/eslint-config-standard/download/@vue/eslint-config-standard-4.0.0.tgz#6be447ee674e3b0f733c584098fd9a22e6d76fcd" + integrity sha1-a+RH7mdOOw9zPFhAmP2aIubXb80= + dependencies: + eslint-config-standard "^12.0.0" + eslint-plugin-import "^2.14.0" + eslint-plugin-node "^8.0.0" + eslint-plugin-promise "^4.0.1" + eslint-plugin-standard "^4.0.0" + +"@vue/preload-webpack-plugin@^1.1.0": + version "1.1.1" + resolved "https://registry.npm.taobao.org/@vue/preload-webpack-plugin/download/@vue/preload-webpack-plugin-1.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vue%2Fpreload-webpack-plugin%2Fdownload%2F%40vue%2Fpreload-webpack-plugin-1.1.1.tgz#18723530d304f443021da2292d6ec9502826104a" + integrity sha1-GHI1MNME9EMCHaIpLW7JUCgmEEo= + +"@vue/web-component-wrapper@^1.2.0": + version "1.2.0" + resolved "https://registry.npm.taobao.org/@vue/web-component-wrapper/download/@vue/web-component-wrapper-1.2.0.tgz#bb0e46f1585a7e289b4ee6067dcc5a6ae62f1dd1" + integrity sha1-uw5G8VhafiibTuYGfcxaauYvHdE= + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/ast/download/@webassemblyjs/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha1-UbHF/mV2o0lTv0slPfnw1JDZ41k= + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/floating-point-hex-parser/download/@webassemblyjs/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha1-G6kmopI2E+3OSW/VsC6M6KX0lyE= + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-api-error/download/@webassemblyjs/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha1-xJ2tIvZFInxe22EL25aX8aq3Ifc= + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-buffer/download/@webassemblyjs/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha1-/qk+Qphj3V5DOFVfQikjhaZT8gQ= + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-code-frame/download/@webassemblyjs/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha1-mnQP9I4/qjAisd/1RCPfmqKTwl4= + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-fsm/download/@webassemblyjs/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha1-ugt9Oz9+RzPaYFnJMyJ12GBwJFI= + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-module-context/download/@webassemblyjs/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha1-3vS5knsBAdyMu9jR7bW3ucguskU= + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-bytecode/download/@webassemblyjs/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha1-U3p1Dt31weky83RCBlUckcG5PmE= + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/helper-wasm-section/download/@webassemblyjs/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha1-dMpqa8vhnlCjtrRihH5pUD5r/L8= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/ieee754/download/@webassemblyjs/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha1-cSMp2+8kDza/V70ve4+5v0FUQh4= + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/leb128/download/@webassemblyjs/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha1-BE7es06mefPgTNT9mCTV41dnrhA= + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/utf8/download/@webassemblyjs/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha1-qL87XY/+mGx8Hjc8y9wqCRXwztw= + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-edit/download/@webassemblyjs/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha1-li2hKqWswcExyBxCMpkcgs5W4Bo= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-gen/download/@webassemblyjs/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha1-VIQHZsLBAC62TtGr5yCt7XFPmLw= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-opt/download/@webassemblyjs/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha1-sk2fa6UDlK8TSfUQr6j/y4pj0mQ= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wasm-parser/download/@webassemblyjs/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha1-IVdvDsiLkUJzV7hTY4NmjvfGa40= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wast-parser/download/@webassemblyjs/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha1-4Q7s1ULQ5705T2gnxJ899tTu+4w= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.npm.taobao.org/@webassemblyjs/wast-printer/download/@webassemblyjs/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha1-EUu8SB/RDKDiOzVg+oEnSLC65bw= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.npm.taobao.org/@xtuc/ieee754/download/@xtuc/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A= + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.npm.taobao.org/@xtuc/long/download/@xtuc/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0= + +abbrev@1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg= + +accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: + version "1.3.7" + resolved "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha1-UxvHJlF6OytB+FACHGzBXqq1B80= + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-jsx@^3.0.0: + version "3.0.1" + resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-3.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" + integrity sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s= + dependencies: + acorn "^3.0.4" + +acorn-jsx@^5.0.0: + version "5.0.2" + resolved "https://registry.npm.taobao.org/acorn-jsx/download/acorn-jsx-5.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-jsx%2Fdownload%2Facorn-jsx-5.0.2.tgz#84b68ea44b373c4f8686023a551f61a21b7c4a4f" + integrity sha1-hLaOpEs3PE+GhgI6VR9hoht8Sk8= + +acorn-walk@^6.1.1: + version "6.2.0" + resolved "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha1-Ejy487hMIXHx9/slJhWxx4prGow= + +acorn@^3.0.4: + version "3.3.0" + resolved "https://registry.npm.taobao.org/acorn/download/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= + +acorn@^5.5.0: + version "5.7.3" + resolved "https://registry.npm.taobao.org/acorn/download/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" + integrity sha1-Z6ojG/iBKXS4UjWpZ3Hra9B+onk= + +acorn@^6.0.2, acorn@^6.0.7, acorn@^6.1.1, acorn@^6.2.1: + version "6.3.0" + resolved "https://registry.npm.taobao.org/acorn/download/acorn-6.3.0.tgz#0087509119ffa4fc0a0041d1e93a417e68cb856e" + integrity sha1-AIdQkRn/pPwKAEHR6TpBfmjLhW4= + +address@^1.0.3: + version "1.1.1" + resolved "https://registry.npm.taobao.org/address/download/address-1.1.1.tgz#9483d6464788dee73e9a0f9f5d57bedf429b2a70" + integrity sha1-lIPWRkeI3uc+mg+fXVe+30KbKnA= + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/ajv-errors/download/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha1-81mGrOuRr63sQQL72FAUlQzvpk0= + +ajv-keywords@^2.1.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-2.1.1.tgz#617997fc5f60576894c435f940d819e135b80762" + integrity sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I= + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha1-75FuJxxkrBIXH9g4TqrmsjRYVNo= + +ajv@^5.2.3, ajv@^5.3.0: + version "5.5.2" + resolved "https://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" + integrity sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU= + dependencies: + co "^4.6.0" + fast-deep-equal "^1.0.0" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.3.0" + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5, ajv@^6.9.1: + version "6.10.2" + resolved "https://registry.npm.taobao.org/ajv/download/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" + integrity sha1-086gTWsBeyiUrWkED+yLYj60vVI= + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/alphanum-sort/download/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.npm.taobao.org/amdefine/download/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-colors@^3.0.0: + version "3.2.4" + resolved "https://registry.npm.taobao.org/ansi-colors/download/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf" + integrity sha1-46PaS/uubIapwoViXeEkojQCb78= + +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s= + +ansi-html@0.0.7: + version "0.0.7" + resolved "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz#813584021962a9e9e6fd039f940d12f56ca7859e" + integrity sha1-gTWEAhliqenm/QOflA0S9WynhZ4= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc= + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1566430679283&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1566430679283&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0= + dependencies: + color-convert "^1.9.0" + +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/any-observable/download/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha1-r5M0deWAamfQ198JDdXovvZdEZs= + +any-promise@^1.0.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/any-promise/download/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/anymatch/download/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha1-vLJLTzeTTZqnrBe0ra+J58du8us= + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.0.3, aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha1-aALmJk79GMeQobDVF/DyYnvyyUo= + +arch@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/arch/download/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" + integrity sha1-j1wnMao1owkpIhuwZA7tZRdeyE4= + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha1-SzXClE8GKov82mZBB2A1D+nd/CE= + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE= + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/arr-diff/download/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/arr-flatten/download/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha1-NgSLv/TntH4TZkQxbJlmnqWukfE= + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/arr-union/download/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.npm.taobao.org/array-find-index/download/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-flatten@^2.1.0: + version "2.1.2" + resolved "https://registry.npm.taobao.org/array-flatten/download/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk= + +array-includes@^3.0.3: + version "3.0.3" + resolved "https://registry.npm.taobao.org/array-includes/download/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" + integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.7.0" + +array-union@^1.0.1, array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npm.taobao.org/array-unique/download/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farrify%2Fdownload%2Farrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.npm.taobao.org/asn1.js/download/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA= + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.npm.taobao.org/asn1/download/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha1-jSR136tVO7M+d7VOWeiAu4ziMTY= + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npm.taobao.org/assert/download/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs= + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/assign-symbols/download/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/astral-regex/download/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k= + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.npm.taobao.org/async-each/download/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha1-tyfb+H12UWAvBvTUrDh/R9kbDL8= + +async-foreach@^0.1.3: + version "0.1.3" + resolved "https://registry.npm.taobao.org/async-foreach/download/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" + integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/async-limiter/download/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha1-3TeelPDbgxCwgpH51kwyCXZmF/0= + +async-validator@^1.10.0: + version "1.12.2" + resolved "https://registry.npm.taobao.org/async-validator/download/async-validator-1.12.2.tgz#beae671e7174d2938b7b4b69d2fb7e722b7fd72c" + integrity sha1-vq5nHnF00pOLe0tp0vt+cit/1yw= + +async@^1.5.2: + version "1.5.2" + resolved "https://registry.npm.taobao.org/async/download/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.1: + version "2.1.2" + resolved "https://registry.npm.taobao.org/atob/download/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k= + +autoprefixer@^9.5.1: + version "9.6.1" + resolved "https://registry.npm.taobao.org/autoprefixer/download/autoprefixer-9.6.1.tgz#51967a02d2d2300bb01866c1611ec8348d355a47" + integrity sha1-UZZ6AtLSMAuwGGbBYR7INI01Wkc= + dependencies: + browserslist "^4.6.3" + caniuse-lite "^1.0.30000980" + chalk "^2.4.2" + normalize-range "^0.1.2" + num2fraction "^1.2.2" + postcss "^7.0.17" + postcss-value-parser "^4.0.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.8.0" + resolved "https://registry.npm.taobao.org/aws4/download/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" + integrity sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8= + +axios@^0.18.0: + version "0.18.1" + resolved "https://registry.npm.taobao.org/axios/download/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + integrity sha1-/z8N4ue10YDnV62YAA8Qgbh7zqM= + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.npm.taobao.org/babel-code-frame/download/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-eslint@^10.0.1: + version "10.0.3" + resolved "https://registry.npm.taobao.org/babel-eslint/download/babel-eslint-10.0.3.tgz#81a2c669be0f205e19462fed2482d33e4687a88a" + integrity sha1-gaLGab4PIF4ZRi/tJILTPkaHqIo= + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-loader@^8.0.5: + version "8.0.6" + resolved "https://registry.npm.taobao.org/babel-loader/download/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha1-4zvbbzYrA/S7FBoMIauHxQG3Dfs= + dependencies: + find-cache-dir "^2.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + pify "^4.0.1" + +babel-plugin-dynamic-import-node@^2.2.0, babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/babel-plugin-dynamic-import-node/download/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha1-8A9Qe9qjw+P/bn5emNkKesq5b38= + dependencies: + object.assign "^4.1.0" + +babel-plugin-module-resolver@3.2.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/babel-plugin-module-resolver/download/babel-plugin-module-resolver-3.2.0.tgz#ddfa5e301e3b9aa12d852a9979f18b37881ff5a7" + integrity sha1-3fpeMB47mqEthSqZefGLN4gf9ac= + dependencies: + find-babel-config "^1.1.0" + glob "^7.1.2" + pkg-up "^2.0.0" + reselect "^3.0.1" + resolve "^1.4.0" + +babel-polyfill@^6.26.0: + version "6.26.0" + resolved "https://registry.npm.taobao.org/babel-polyfill/download/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153" + integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM= + dependencies: + babel-runtime "^6.26.0" + core-js "^2.5.0" + regenerator-runtime "^0.10.5" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.npm.taobao.org/babel-runtime/download/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.npm.taobao.org/base64-js/download/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha1-WOzoy3XdB+ce0IxzarxfrE2/jfE= + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npm.taobao.org/base/download/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha1-e95c7RRbbVUakNuH+DxVi060io8= + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +batch-processor@1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/batch-processor/download/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8" + integrity sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg= + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY= + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +bfj@^6.1.1: + version "6.1.2" + resolved "https://registry.npm.taobao.org/bfj/download/bfj-6.1.2.tgz#325c861a822bcb358a41c78a33b8e6e2086dde7f" + integrity sha1-MlyGGoIryzWKQceKM7jm4ght3n8= + dependencies: + bluebird "^3.5.5" + check-types "^8.0.3" + hoopy "^0.1.4" + tryer "^1.0.1" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4= + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npm.taobao.org/big.js/download/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg= + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.npm.taobao.org/binary-extensions/download/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha1-WYr+VHVbKGilMw0q/51Ou1Mgm2U= + +block-stream@*: + version "0.0.9" + resolved "https://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= + dependencies: + inherits "~2.0.0" + +bluebird@^3.1.1, bluebird@^3.5.1, bluebird@^3.5.5: + version "3.5.5" + resolved "https://registry.npm.taobao.org/bluebird/download/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" + integrity sha1-qNCv1zJR7/u9X+OEp31zADwXpx8= + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.npm.taobao.org/bn.js/download/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha1-LN4J617jQfSEdGuwMJsyU7GxRC8= + +body-parser@1.19.0: + version "1.19.0" + resolved "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io= + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + +bonjour@^3.5.0: + version "3.5.0" + resolved "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz#8e890a183d8ee9a2393b3844c691a42bcf7bc9f5" + integrity sha1-jokKGD2O6aI5OzhExpGkK897yfU= + dependencies: + array-flatten "^2.1.0" + deep-equal "^1.0.1" + dns-equal "^1.0.0" + dns-txt "^2.0.2" + multicast-dns "^6.0.1" + multicast-dns-service-types "^1.1.0" + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/boolbase/download/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npm.taobao.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.npm.taobao.org/braces/download/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha1-WXn9PxTNUxVl5fot8av/8d+u5yk= + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.npm.taobao.org/brorand/download/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npm.taobao.org/browserify-aes/download/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha1-Mmc0ZC9APavDADIJhTu3CtQo70g= + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/browserify-cipher/download/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha1-jWR0wbhwv9q807z8wZNKEOlPFfA= + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/browserify-des/download/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw= + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/browserify-rsa/download/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.npm.taobao.org/browserify-sign/download/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/browserify-zlib/download/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha1-KGlFnZqjviRf6P4sofRuLn9U1z8= + dependencies: + pako "~1.0.5" + +browserslist@^4.0.0, browserslist@^4.3.4, browserslist@^4.5.4, browserslist@^4.6.3: + version "4.6.6" + resolved "https://registry.npm.taobao.org/browserslist/download/browserslist-4.6.6.tgz#6e4bf467cde520bc9dbdf3747dafa03531cec453" + integrity sha1-bkv0Z83lILydvfN0fa+gNTHOxFM= + dependencies: + caniuse-lite "^1.0.30000984" + electron-to-chromium "^1.3.191" + node-releases "^1.1.25" + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.npm.taobao.org/buffer-from/download/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8= + +buffer-indexof@^1.0.0: + version "1.1.1" + resolved "https://registry.npm.taobao.org/buffer-indexof/download/buffer-indexof-1.1.1.tgz#52fabcc6a606d1a00302802648ef68f639da268c" + integrity sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow= + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/buffer-xor/download/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.1" + resolved "https://registry.npm.taobao.org/buffer/download/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" + integrity sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg= + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/builtin-status-codes/download/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" + integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY= + +cacache@^10.0.4: + version "10.0.4" + resolved "https://registry.npm.taobao.org/cacache/download/cacache-10.0.4.tgz#6452367999eff9d4188aefd9a14e9d7c6a263460" + integrity sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA= + dependencies: + bluebird "^3.5.1" + chownr "^1.0.1" + glob "^7.1.2" + graceful-fs "^4.1.11" + lru-cache "^4.1.1" + mississippi "^2.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.2" + ssri "^5.2.4" + unique-filename "^1.1.0" + y18n "^4.0.0" + +cacache@^12.0.2: + version "12.0.3" + resolved "https://registry.npm.taobao.org/cacache/download/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" + integrity sha1-vpmruk4b9d9GHNWiwQcfxDJXM5A= + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/cache-base/download/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha1-Cn9GQWgxyLZi7jb+TnxZ129marI= + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cache-loader@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/cache-loader/download/cache-loader-2.0.1.tgz#5758f41a62d7c23941e3c3c7016e6faeb03acb07" + integrity sha1-V1j0GmLXwjlB48PHAW5vrrA6ywc= + dependencies: + loader-utils "^1.1.0" + mkdirp "^0.5.1" + neo-async "^2.6.0" + normalize-path "^3.0.0" + schema-utils "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/caller-callsite/download/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/caller-path/download/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + dependencies: + callsites "^0.2.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/caller-path/download/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/callsites/download/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/callsites/download/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M= + +camel-case@3.0.x: + version "3.0.0" + resolved "https://registry.npm.taobao.org/camel-case/download/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/camelcase-keys/download/camelcase-keys-2.1.0.tgz?cache=0&sync_timestamp=1564587881114&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcamelcase-keys%2Fdownload%2Fcamelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA= + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha1-Xk2Q4idJYdRikZl99Znj7QCO5MA= + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000980, caniuse-lite@^1.0.30000984: + version "1.0.30000989" + resolved "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30000989.tgz#b9193e293ccf7e4426c5245134b8f2a56c0ac4b9" + integrity sha1-uRk+KTzPfkQmxSRRNLjypWwKxLk= + +case-sensitive-paths-webpack-plugin@^2.2.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/case-sensitive-paths-webpack-plugin/download/case-sensitive-paths-webpack-plugin-2.2.0.tgz#3371ef6365ef9c25fa4b81c16ace0e9c7dc58c3e" + integrity sha1-M3HvY2XvnCX6S4HBas4OnH3FjD4= + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/chalk/download/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.npm.taobao.org/chardet/download/chardet-0.4.2.tgz?cache=0&sync_timestamp=1562887878067&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npm.taobao.org/chardet/download/chardet-0.7.0.tgz?cache=0&sync_timestamp=1562887878067&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchardet%2Fdownload%2Fchardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha1-kAlISfCTfy7twkJdDSip5fDLrZ4= + +check-types@^8.0.3: + version "8.0.3" + resolved "https://registry.npm.taobao.org/check-types/download/check-types-8.0.3.tgz?cache=0&sync_timestamp=1566113968138&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcheck-types%2Fdownload%2Fcheck-types-8.0.3.tgz#3356cca19c889544f2d7a95ed49ce508a0ecf552" + integrity sha1-M1bMoZyIlUTy16le1JzlCKDs9VI= + +chokidar@^2.0.2, chokidar@^2.1.6: + version "2.1.8" + resolved "https://registry.npm.taobao.org/chokidar/download/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha1-gEs6e2qZNYw8XGHnHYco8EHP+Rc= + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.0.1, chownr@^1.1.1: + version "1.1.2" + resolved "https://registry.npm.taobao.org/chownr/download/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" + integrity sha1-oY8eCyacimpdPIbrKYvrFMPde/Y= + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/chrome-trace-event/download/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha1-I0CQ7pfH1K0aLEvq4nUF3v/GCKQ= + dependencies: + tslib "^1.9.0" + +ci-info@^1.5.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/ci-info/download/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" + integrity sha1-LKINu5zrMtRSSmgzAzE/AwSx5Jc= + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npm.taobao.org/cipher-base/download/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY= + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npm.taobao.org/class-utils/download/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha1-+TNprouafOAv1B+q0MqDAzGQxGM= + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@4.2.x: + version "4.2.1" + resolved "https://registry.npm.taobao.org/clean-css/download/clean-css-4.2.1.tgz#2d411ef76b8569b6d0c84068dabe85b0aa5e5c17" + integrity sha1-LUEe92uFabbQyEBo2r6FsKpeXBc= + dependencies: + source-map "~0.6.0" + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/cli-cursor/download/cli-cursor-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-cursor%2Fdownload%2Fcli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-highlight@^2.1.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/cli-highlight/download/cli-highlight-2.1.1.tgz#2180223d51618b112f4509cf96e4a6c750b07e97" + integrity sha1-IYAiPVFhixEvRQnPluSmx1Cwfpc= + dependencies: + chalk "^2.3.0" + highlight.js "^9.6.0" + mz "^2.4.0" + parse5 "^4.0.0" + yargs "^13.0.0" + +cli-spinners@^2.0.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/cli-spinners/download/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" + integrity sha1-6LmI2SBsaSMC2O6DTnqFwBRNj3c= + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/cli-truncate/download/cli-truncate-0.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcli-truncate%2Fdownload%2Fcli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + +cli-width@^2.0.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/cli-width/download/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +clipboardy@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/clipboardy/download/clipboardy-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fclipboardy%2Fdownload%2Fclipboardy-2.1.0.tgz#0123a0c8fac92f256dc56335e0bb8be97a4909a5" + integrity sha1-ASOgyPrJLyVtxWM14LuL6XpJCaU= + dependencies: + arch "^2.1.1" + execa "^1.0.0" + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/cliui/download/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/cliui/download/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha1-NIQi2+gtgAswIu709qwQvy5NG0k= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/cliui/download/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U= + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/clone-deep/download/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c= + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npm.taobao.org/clone/download/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.npm.taobao.org/co/download/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/coa/download/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha1-Q/bCEVG07yv1cYfbDXPeIp4+fsM= + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +coalescy@1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/coalescy/download/coalescy-1.0.0.tgz#4b065846b836361ada6c4b4a4abf4bc1cac31bf1" + integrity sha1-SwZYRrg2NhrabEtKSr9LwcrDG/E= + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.npm.taobao.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg= + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0: + version "1.1.4" + resolved "https://registry.npm.taobao.org/color-name/download/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI= + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.npm.taobao.org/color-string/download/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw= + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.npm.taobao.org/color/download/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha1-aBSOf4XUGtdknF+oyBBvCY0inhA= + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha1-w9RaizT9cwYxoRCoolIGgrMdWn8= + dependencies: + delayed-stream "~1.0.0" + +commander@2.17.x: + version "2.17.1" + resolved "https://registry.npm.taobao.org/commander/download/commander-2.17.1.tgz?cache=0&sync_timestamp=1565398176321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" + integrity sha1-vXerfebelCBc6sxy8XFtKfIKd78= + +commander@^2.14.1, commander@^2.18.0, commander@^2.20.0, commander@^2.9.0: + version "2.20.0" + resolved "https://registry.npm.taobao.org/commander/download/commander-2.20.0.tgz?cache=0&sync_timestamp=1565398176321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha1-1YuytcHuj4ew00ACfp6U4iLFpCI= + +commander@~2.19.0: + version "2.19.0" + resolved "https://registry.npm.taobao.org/commander/download/commander-2.19.0.tgz?cache=0&sync_timestamp=1565398176321&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-2.19.0.tgz#f6198aa84e5b83c46054b94ddedbfed5ee9ff12a" + integrity sha1-9hmKqE5bg8RgVLlN3tv+1e6f8So= + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/commondir/download/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npm.taobao.org/component-emitter/download/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A= + +compressible@~2.0.16: + version "2.0.17" + resolved "https://registry.npm.taobao.org/compressible/download/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" + integrity sha1-bowQihatWDhKl386SCyiC/8vOME= + dependencies: + mime-db ">= 1.40.0 < 2" + +compression@^1.7.4: + version "1.7.4" + resolved "https://registry.npm.taobao.org/compression/download/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" + integrity sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48= + dependencies: + accepts "~1.3.5" + bytes "3.0.0" + compressible "~2.0.16" + debug "2.6.9" + on-headers "~1.0.2" + safe-buffer "5.1.2" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npm.taobao.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0, concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.npm.taobao.org/concat-stream/download/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ= + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +connect-history-api-fallback@^1.6.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" + integrity sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w= + +console-browserify@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/console-browserify/download/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= + dependencies: + date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/console-control-strings/download/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.npm.taobao.org/consolidate/download/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha1-IasEMjXHGgfUXZqtmFk7DbpWurc= + dependencies: + bluebird "^3.1.1" + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/constants-browserify/download/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/contains-path/download/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.3: + version "0.5.3" + resolved "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70= + dependencies: + safe-buffer "5.1.2" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js= + +convert-source-map@^1.1.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/convert-source-map/download/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" + integrity sha1-UbU3qMQ+DwTewZk7/83VBOdYrCA= + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.4.0: + version "0.4.0" + resolved "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" + integrity sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo= + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.npm.taobao.org/copy-concurrently/download/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha1-kilzmMrjSTf8r9bsgTnBgFHwteA= + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npm.taobao.org/copy-descriptor/download/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-webpack-plugin@^4.6.0: + version "4.6.0" + resolved "https://registry.npm.taobao.org/copy-webpack-plugin/download/copy-webpack-plugin-4.6.0.tgz#e7f40dd8a68477d405dd1b7a854aae324b158bae" + integrity sha1-5/QN2KaEd9QF3Rt6hUquMksVi64= + dependencies: + cacache "^10.0.4" + find-cache-dir "^1.0.0" + globby "^7.1.1" + is-glob "^4.0.0" + loader-utils "^1.1.0" + minimatch "^3.0.4" + p-limit "^1.0.0" + serialize-javascript "^1.4.0" + +core-js@^2.4.0, core-js@^2.5.0, core-js@^2.6.5: + version "2.6.9" + resolved "https://registry.npm.taobao.org/core-js/download/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha1-a0shRiDINBUuF5Mjcn/Bl0GwhPI= + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/core-util-is/download/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0, cosmiconfig@^5.2.0: + version "5.2.1" + resolved "https://registry.npm.taobao.org/cosmiconfig/download/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha1-BA9yaAnFked6F8CjYmykW08Wixo= + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8= + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.npm.taobao.org/create-hash/download/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY= + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.npm.taobao.org/create-hmac/download/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8= + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^3.0.0: + version "3.0.1" + resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" + integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1, cross-spawn@^5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npm.taobao.org/crypto-browserify/download/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha1-OWz58xN/A+S45TLFj2mCVOAPgOw= + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/css-declaration-sorter/download/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha1-wZiUD2OnbX42wecQGLABchBUyyI= + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/css-loader/download/css-loader-1.0.1.tgz#6885bb5233b35ec47b006057da01cc640b6b79fe" + integrity sha1-aIW7UjOzXsR7AGBX2gHMZAtref4= + dependencies: + babel-code-frame "^6.26.0" + css-selector-tokenizer "^0.7.0" + icss-utils "^2.1.0" + loader-utils "^1.0.2" + lodash "^4.17.11" + postcss "^6.0.23" + postcss-modules-extract-imports "^1.2.0" + postcss-modules-local-by-default "^1.2.0" + postcss-modules-scope "^1.1.0" + postcss-modules-values "^1.3.0" + postcss-value-parser "^3.3.0" + source-list-map "^2.0.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/css-select-base-adapter/download/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha1-Oy/0lyzDYquIVhUHqVQIoUMhNdc= + +css-select@^1.1.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/css-select/download/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-select@^2.0.0: + version "2.0.2" + resolved "https://registry.npm.taobao.org/css-select/download/css-select-2.0.2.tgz#ab4386cec9e1f668855564b17c3733b43b2a5ede" + integrity sha1-q0OGzsnh9miFVWSxfDcztDsqXt4= + dependencies: + boolbase "^1.0.0" + css-what "^2.1.2" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.0: + version "0.7.1" + resolved "https://registry.npm.taobao.org/css-selector-tokenizer/download/css-selector-tokenizer-0.7.1.tgz#a177271a8bca5019172f4f891fc6eed9cbf68d5d" + integrity sha1-oXcnGovKUBkXL0+JH8bu2cv2jV0= + dependencies: + cssesc "^0.1.0" + fastparse "^1.1.1" + regexpu-core "^1.0.0" + +css-tree@1.0.0-alpha.29: + version "1.0.0-alpha.29" + resolved "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.29.tgz#3fa9d4ef3142cbd1c301e7664c1f352bd82f5a39" + integrity sha1-P6nU7zFCy9HDAedmTB81K9gvWjk= + dependencies: + mdn-data "~1.1.0" + source-map "^0.5.3" + +css-tree@1.0.0-alpha.33: + version "1.0.0-alpha.33" + resolved "https://registry.npm.taobao.org/css-tree/download/css-tree-1.0.0-alpha.33.tgz#970e20e5a91f7a378ddd0fc58d0b6c8d4f3be93e" + integrity sha1-lw4g5akfejeN3Q/FjQtsjU876T4= + dependencies: + mdn-data "2.0.4" + source-map "^0.5.3" + +css-unit-converter@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/css-unit-converter/download/css-unit-converter-1.1.1.tgz#d9b9281adcfd8ced935bdbaba83786897f64e996" + integrity sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY= + +css-what@2.1, css-what@^2.1.2: + version "2.1.3" + resolved "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz?cache=0&sync_timestamp=1564773794818&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcss-what%2Fdownload%2Fcss-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha1-ptdgRXM2X+dGhsPzEcVlE9iChfI= + +cssesc@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/cssesc/download/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4" + integrity sha1-yBSQPkViM3GgR3tAEJqq++6t27Q= + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/cssesc/download/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha1-OxO9G7HLNuG8taTc0n9UxdyzVwM= + +cssnano-preset-default@^4.0.0, cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.npm.taobao.org/cssnano-preset-default/download/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha1-UexmLM/KD4izltzZZ5zbkxvhf3Y= + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/cssnano-util-get-arguments/download/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/cssnano-util-get-match/download/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/cssnano-util-raw-cache/download/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha1-sm1f1fcqEd/np4RvtMZyYPlr8oI= + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/cssnano-util-same-parent/download/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha1-V0CC+yhZ0ttDOFWDXZqEVuoYu/M= + +cssnano@^4.0.0, cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.npm.taobao.org/cssnano/download/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha1-CsQfCxPRPUZUh+ERt3jULaYxuLI= + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^3.5.1: + version "3.5.1" + resolved "https://registry.npm.taobao.org/csso/download/csso-3.5.1.tgz#7b9eb8be61628973c1b261e169d2f024008e758b" + integrity sha1-e564vmFiiXPBsmHhadLwJACOdYs= + dependencies: + css-tree "1.0.0-alpha.29" + +current-script-polyfill@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/current-script-polyfill/download/current-script-polyfill-1.0.0.tgz#f31cf7e4f3e218b0726e738ca92a02d3488ef615" + integrity sha1-8xz35PPiGLBybnOMqSoC00iO9hU= + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +cyclist@~0.2.2: + version "0.2.2" + resolved "https://registry.npm.taobao.org/cyclist/download/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" + integrity sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.npm.taobao.org/date-fns/download/date-fns-1.30.1.tgz?cache=0&sync_timestamp=1566576473797&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdate-fns%2Fdownload%2Fdate-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw= + +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/date-now/download/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/de-indent/download/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8= + dependencies: + ms "2.0.0" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE= + dependencies: + ms "2.0.0" + +debug@^3.1.0, debug@^3.2.5, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.npm.taobao.org/debug/download/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha1-6D0X3hbYp++3cX7b5fsQE17uYps= + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E= + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/decode-uri-component/download/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.npm.taobao.org/dedent/download/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-equal@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha1-9dJgKStmDghO/0zbyfCK0yR0SLU= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/deep-extend/download/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw= + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@^1.5.2: + version "1.5.2" + resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-1.5.2.tgz?cache=0&sync_timestamp=1562601140019&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-1.5.2.tgz#10499d868844cdad4fee0842df8c7f6f0c95a753" + integrity sha1-EEmdhohEza1P7ghC34x/bwyVp1M= + +deepmerge@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/deepmerge/download/deepmerge-2.2.1.tgz?cache=0&sync_timestamp=1562601140019&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdeepmerge%2Fdownload%2Fdeepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" + integrity sha1-XT/yKgHAD2RUBaL7wX0HeKGAEXA= + +default-gateway@^4.2.0: + version "4.2.0" + resolved "https://registry.npm.taobao.org/default-gateway/download/default-gateway-4.2.0.tgz?cache=0&sync_timestamp=1565763930901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" + integrity sha1-FnEEx1AMIRX23WmwpTa7jtcgVSs= + dependencies: + execa "^1.0.0" + ip-regex "^2.1.0" + +default-gateway@^5.0.2: + version "5.0.3" + resolved "https://registry.npm.taobao.org/default-gateway/download/default-gateway-5.0.3.tgz?cache=0&sync_timestamp=1565763930901&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdefault-gateway%2Fdownload%2Fdefault-gateway-5.0.3.tgz#18434c9430a18035a2861f7839bf7669b3436e6f" + integrity sha1-GENMlDChgDWihh94Ob92abNDbm8= + dependencies: + execa "^2.0.3" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/defaults/download/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/define-properties/download/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE= + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npm.taobao.org/define-property/download/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/define-property/download/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/define-property/download/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha1-1Flono1lS6d+AqgX+HENcCyxbp0= + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +del@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/del/download/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" + integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= + dependencies: + globby "^6.1.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + p-map "^1.1.1" + pify "^3.0.0" + rimraf "^2.2.8" + +del@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/del/download/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" + integrity sha1-no8RciLqRKMf86FWwEm5kFKp8LQ= + dependencies: + "@types/glob" "^7.1.1" + globby "^6.1.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + pify "^4.0.1" + rimraf "^2.6.3" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/delegates/download/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/des.js/download/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" + integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.npm.taobao.org/detect-libc/download/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-node@^2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/detect-node/download/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha1-AU7o+PZpxcWAI9pkuBecCDooxGw= + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npm.taobao.org/diffie-hellman/download/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha1-QOjumPVaIUlgcUaSHGPhrl89KHU= + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^2.0.0, dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.npm.taobao.org/dir-glob/download/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ= + dependencies: + path-type "^3.0.0" + +dns-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d" + integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0= + +dns-packet@^1.3.1: + version "1.3.1" + resolved "https://registry.npm.taobao.org/dns-packet/download/dns-packet-1.3.1.tgz#12aa426981075be500b910eedcd0b47dd7deda5a" + integrity sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo= + dependencies: + ip "^1.1.0" + safe-buffer "^5.0.1" + +dns-txt@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz#b91d806f5d27188e4ab3e7d107d881a1cc4642b6" + integrity sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY= + dependencies: + buffer-indexof "^1.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha1-XNAfwQFiG0LEzX9dGmYkNxbT850= + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha1-rd6+rXKmV023g2OdyHoSF3OXOWE= + dependencies: + esutils "^2.0.2" + +dom-converter@^0.2: + version "0.2.0" + resolved "https://registry.npm.taobao.org/dom-converter/download/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" + integrity sha1-ZyGp2u4uKTaClVtq/kFncWJ7t2g= + dependencies: + utila "~0.4" + +dom-serializer@0: + version "0.2.1" + resolved "https://registry.npm.taobao.org/dom-serializer/download/dom-serializer-0.2.1.tgz?cache=0&sync_timestamp=1564710970695&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdom-serializer%2Fdownload%2Fdom-serializer-0.2.1.tgz#13650c850daffea35d8b626a4cfc4d3a17643fdb" + integrity sha1-E2UMhQ2v/qNdi2JqTPxNOhdkP9s= + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npm.taobao.org/domain-browser/download/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto= + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.npm.taobao.org/domelementtype/download/domelementtype-1.3.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8= + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/domelementtype/download/domelementtype-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomelementtype%2Fdownload%2Fdomelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha1-H4vf6R9aeAYydOgDtL3O326U+U0= + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.npm.taobao.org/domhandler/download/domhandler-2.4.2.tgz?cache=0&sync_timestamp=1564708909977&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha1-iAUJfpM9ZehVRvcm1g9euItE+AM= + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.npm.taobao.org/domutils/download/domutils-1.5.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.npm.taobao.org/domutils/download/domutils-1.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomutils%2Fdownload%2Fdomutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo= + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^4.1.1: + version "4.2.0" + resolved "https://registry.npm.taobao.org/dot-prop/download/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" + integrity sha1-HxngwuGqDjJ5fEl5nyg3rGr2nFc= + dependencies: + is-obj "^1.0.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/dotenv-expand/download/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha1-P7rwIL/XlIhAcuomsel5HUWmKfA= + +dotenv@^7.0.0: + version "7.0.0" + resolved "https://registry.npm.taobao.org/dotenv/download/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" + integrity sha1-or481Sc2ZzIG6KhftSEO6ilijnw= + +duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.npm.taobao.org/duplexify/download/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha1-Kk31MX9sz9kfhtb9JdjYoQO4gwk= + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +easy-stack@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/easy-stack/download/easy-stack-1.0.0.tgz#12c91b3085a37f0baa336e9486eac4bf94e3e788" + integrity sha1-EskbMIWjfwuqM26UhurEv5Tj54g= + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +echarts@^4.2.1: + version "4.2.1" + resolved "https://registry.npm.taobao.org/echarts/download/echarts-4.2.1.tgz#9a8ea3b03354f86f824d97625c334cf16965ef03" + integrity sha1-mo6jsDNU+G+CTZdiXDNM8Wll7wM= + dependencies: + zrender "4.0.7" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +ejs@^2.6.1: + version "2.6.2" + resolved "https://registry.npm.taobao.org/ejs/download/ejs-2.6.2.tgz#3a32c63d1cd16d11266cd4703b14fec4e74ab4f6" + integrity sha1-OjLGPRzRbREmbNRwOxT+xOdKtPY= + +electron-to-chromium@^1.3.191: + version "1.3.241" + resolved "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.241.tgz#859dc49ab7f90773ed698767372d384190f60cb1" + integrity sha1-hZ3Emrf5B3PtaYdnNy04QZD2DLE= + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/elegant-spinner/download/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + +element-resize-detector@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/element-resize-detector/download/element-resize-detector-1.2.0.tgz#63344fd6f4e5ecff6f018d027e17b281fd4fa338" + integrity sha1-YzRP1vTl7P9vAY0Cfheygf1Pozg= + dependencies: + batch-processor "1.0.0" + +elliptic@^6.0.0: + version "6.5.0" + resolved "https://registry.npm.taobao.org/elliptic/download/elliptic-6.5.0.tgz#2b8ed4c891b7de3200e14412a5b8248c7af505ca" + integrity sha1-K47UyJG33jIA4UQSpbgkjHr1Bco= + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.npm.taobao.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY= + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/emojis-list/download/emojis-list-2.1.0.tgz?cache=0&sync_timestamp=1563088398038&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Femojis-list%2Fdownload%2Femojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.npm.taobao.org/end-of-stream/download/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha1-7SljTRm6ukY7bOa4CjchPqtx7EM= + dependencies: + once "^1.4.0" + +enhanced-resolve@^4.1.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/enhanced-resolve/download/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha1-Qcfgv9/nSsH/4eV61qXGyfN0Kn8= + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +entities@^1.1.1: + version "1.1.2" + resolved "https://registry.npm.taobao.org/entities/download/entities-1.1.2.tgz?cache=0&sync_timestamp=1563403393055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha1-vfpzUplmTfr9NFKe1PhSKidf6lY= + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/entities/download/entities-2.0.0.tgz?cache=0&sync_timestamp=1563403393055&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fentities%2Fdownload%2Fentities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha1-aNYITKsbB5dnVA2A5Wo5tCPkq/Q= + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.npm.taobao.org/errno/download/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg= + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npm.taobao.org/error-ex/download/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha1-tKxAZIEH/c3PriQvQovqihTU8b8= + dependencies: + is-arrayish "^0.2.1" + +error-stack-parser@^2.0.0: + version "2.0.3" + resolved "https://registry.npm.taobao.org/error-stack-parser/download/error-stack-parser-2.0.3.tgz?cache=0&sync_timestamp=1565689172938&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ferror-stack-parser%2Fdownload%2Ferror-stack-parser-2.0.3.tgz#9d3c000fb9f5c461f7c4e63c1aa75373ac7aaa36" + integrity sha1-nTwAD7n1xGH3xOY8GqdTc6x6qjY= + dependencies: + stackframe "^1.0.4" + +es-abstract@^1.12.0, es-abstract@^1.4.3, es-abstract@^1.5.1, es-abstract@^1.7.0: + version "1.13.0" + resolved "https://registry.npm.taobao.org/es-abstract/download/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" + integrity sha1-rIYUX91QmdjdSVWMy6Lq+biOJOk= + dependencies: + es-to-primitive "^1.2.0" + function-bind "^1.1.1" + has "^1.0.3" + is-callable "^1.1.4" + is-regex "^1.0.4" + object-keys "^1.0.12" + +es-to-primitive@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" + integrity sha1-7fckeAM0VujdqO8J4ArZZQcH83c= + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npm.taobao.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-config-standard@^12.0.0: + version "12.0.0" + resolved "https://registry.npm.taobao.org/eslint-config-standard/download/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" + integrity sha1-Y4tMZdsL1aQTGflruh8V3a0hB9k= + +eslint-config-vue@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/eslint-config-vue/download/eslint-config-vue-2.0.2.tgz#a3ab1004899e49327a94c63e24d47a396b2f4848" + integrity sha1-o6sQBImeSTJ6lMY+JNR6OWsvSEg= + +eslint-friendly-formatter@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/eslint-friendly-formatter/download/eslint-friendly-formatter-4.0.1.tgz#27d504dc837f7caddbf201b2e84a4ee730ba3efa" + integrity sha1-J9UE3IN/fK3b8gGy6EpO5zC6Pvo= + dependencies: + chalk "^2.0.1" + coalescy "1.0.0" + extend "^3.0.0" + minimist "^1.2.0" + strip-ansi "^4.0.0" + text-table "^0.2.0" + +eslint-import-resolver-node@^0.3.2: + version "0.3.2" + resolved "https://registry.npm.taobao.org/eslint-import-resolver-node/download/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" + integrity sha1-WPFfuDm40FdsqYBBNHaqskcttmo= + dependencies: + debug "^2.6.9" + resolve "^1.5.0" + +eslint-loader@^2.1.2: + version "2.2.1" + resolved "https://registry.npm.taobao.org/eslint-loader/download/eslint-loader-2.2.1.tgz#28b9c12da54057af0845e2a6112701a2f6bf8337" + integrity sha1-KLnBLaVAV68IReKmEScBova/gzc= + dependencies: + loader-fs-cache "^1.0.0" + loader-utils "^1.0.2" + object-assign "^4.0.1" + object-hash "^1.1.4" + rimraf "^2.6.1" + +eslint-module-utils@^2.4.0: + version "2.4.1" + resolved "https://registry.npm.taobao.org/eslint-module-utils/download/eslint-module-utils-2.4.1.tgz#7b4675875bf96b0dbf1b21977456e5bb1f5e018c" + integrity sha1-e0Z1h1v5aw2/GyGXdFblux9eAYw= + dependencies: + debug "^2.6.8" + pkg-dir "^2.0.0" + +eslint-plugin-es@^1.3.1, eslint-plugin-es@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/eslint-plugin-es/download/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" + integrity sha1-R19luyDJk/wQ6Mj+d9HWAGgHLaY= + dependencies: + eslint-utils "^1.3.0" + regexpp "^2.0.1" + +eslint-plugin-flow-vars@^0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/eslint-plugin-flow-vars/download/eslint-plugin-flow-vars-0.5.0.tgz#a7fb78fd873c86e0e5839df3b3c90d47bc68c6d2" + integrity sha1-p/t4/Yc8huDlg53zs8kNR7xoxtI= + +eslint-plugin-html@^5.0.5: + version "5.0.5" + resolved "https://registry.npm.taobao.org/eslint-plugin-html/download/eslint-plugin-html-5.0.5.tgz#e2388f813f75b2287cde884811eab287de8e0f56" + integrity sha1-4jiPgT91sih83ohIEeqyh96OD1Y= + dependencies: + htmlparser2 "^3.10.0" + +eslint-plugin-import@^2.14.0, eslint-plugin-import@^2.17.2: + version "2.18.2" + resolved "https://registry.npm.taobao.org/eslint-plugin-import/download/eslint-plugin-import-2.18.2.tgz#02f1180b90b077b33d447a17a2326ceb400aceb6" + integrity sha1-AvEYC5Cwd7M9RHoXojJs60AKzrY= + dependencies: + array-includes "^3.0.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.2" + eslint-module-utils "^2.4.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.0" + read-pkg-up "^2.0.0" + resolve "^1.11.0" + +eslint-plugin-node@^8.0.0: + version "8.0.1" + resolved "https://registry.npm.taobao.org/eslint-plugin-node/download/eslint-plugin-node-8.0.1.tgz#55ae3560022863d141fa7a11799532340a685964" + integrity sha1-Va41YAIoY9FB+noReZUyNApoWWQ= + dependencies: + eslint-plugin-es "^1.3.1" + eslint-utils "^1.3.1" + ignore "^5.0.2" + minimatch "^3.0.4" + resolve "^1.8.1" + semver "^5.5.0" + +eslint-plugin-node@^9.0.1: + version "9.1.0" + resolved "https://registry.npm.taobao.org/eslint-plugin-node/download/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a" + integrity sha1-8v2IUJox7GnbbpYG122rxa3BuRo= + dependencies: + eslint-plugin-es "^1.4.0" + eslint-utils "^1.3.1" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^4.0.1, eslint-plugin-promise@^4.1.1: + version "4.2.1" + resolved "https://registry.npm.taobao.org/eslint-plugin-promise/download/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" + integrity sha1-hF/YsiYK2PglZMEiL85ErXHZQYo= + +eslint-plugin-standard@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/eslint-plugin-standard/download/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" + integrity sha1-/wUZ9/+v8RT3bRvXw5lu7w9uILQ= + +eslint-plugin-vue@^4.7.1: + version "4.7.1" + resolved "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-4.7.1.tgz#c829b9fc62582c1897b5a0b94afd44ecca511e63" + integrity sha1-yCm5/GJYLBiXtaC5Sv1E7MpRHmM= + dependencies: + vue-eslint-parser "^2.0.3" + +eslint-plugin-vue@^5.2.2: + version "5.2.3" + resolved "https://registry.npm.taobao.org/eslint-plugin-vue/download/eslint-plugin-vue-5.2.3.tgz#3ee7597d823b5478804b2feba9863b1b74273961" + integrity sha1-PudZfYI7VHiASy/rqYY7G3QnOWE= + dependencies: + vue-eslint-parser "^5.0.0" + +eslint-scope@^3.7.1: + version "3.7.3" + resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-3.7.3.tgz#bb507200d3d17f60247636160b4826284b108535" + integrity sha1-u1ByANPRf2AkdjYWC0gmKEsQhTU= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0, eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.npm.taobao.org/eslint-scope/download/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha1-ygODMxD2iJoyZHgaqC5j65z+eEg= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.0, eslint-utils@^1.3.1: + version "1.4.2" + resolved "https://registry.npm.taobao.org/eslint-utils/download/eslint-utils-1.4.2.tgz?cache=0&sync_timestamp=1566297129313&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-utils%2Fdownload%2Feslint-utils-1.4.2.tgz#166a5180ef6ab7eb462f162fd0e6f2463d7309ab" + integrity sha1-FmpRgO9qt+tGLxYv0ObyRj1zCas= + dependencies: + eslint-visitor-keys "^1.0.0" + +eslint-visitor-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/eslint-visitor-keys/download/eslint-visitor-keys-1.1.0.tgz?cache=0&sync_timestamp=1565705483230&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.1.0.tgz#e2a82cea84ff246ad6fb57f9bde5b46621459ec2" + integrity sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI= + +eslint@^4.19.1: + version "4.19.1" + resolved "https://registry.npm.taobao.org/eslint/download/eslint-4.19.1.tgz?cache=0&sync_timestamp=1566614535578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-4.19.1.tgz#32d1d653e1d90408854bfb296f076ec7e186a300" + integrity sha1-MtHWU+HZBAiFS/spbwdux+GGowA= + dependencies: + ajv "^5.3.0" + babel-code-frame "^6.22.0" + chalk "^2.1.0" + concat-stream "^1.6.0" + cross-spawn "^5.1.0" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.4" + esquery "^1.0.0" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.0.1" + ignore "^3.3.3" + imurmurhash "^0.1.4" + inquirer "^3.0.6" + is-resolvable "^1.0.0" + js-yaml "^3.9.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.4" + minimatch "^3.0.2" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^1.0.1" + require-uncached "^1.0.3" + semver "^5.3.0" + strip-ansi "^4.0.0" + strip-json-comments "~2.0.1" + table "4.0.2" + text-table "~0.2.0" + +eslint@^5.16.0: + version "5.16.0" + resolved "https://registry.npm.taobao.org/eslint/download/eslint-5.16.0.tgz?cache=0&sync_timestamp=1566614535578&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Feslint%2Fdownload%2Feslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" + integrity sha1-oeOsGq5KP72Clvz496tzFMu2q+o= + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.9.1" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^5.0.1" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^6.2.2" + js-yaml "^3.13.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.11" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + +espree@^3.5.2, espree@^3.5.4: + version "3.5.4" + resolved "https://registry.npm.taobao.org/espree/download/espree-3.5.4.tgz?cache=0&sync_timestamp=1566612152812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-3.5.4.tgz#b0f447187c8a8bed944b815a660bddf5deb5d1a7" + integrity sha1-sPRHGHyKi+2US4FaZgvd9d610ac= + dependencies: + acorn "^5.5.0" + acorn-jsx "^3.0.0" + +espree@^4.1.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/espree/download/espree-4.1.0.tgz?cache=0&sync_timestamp=1566612152812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" + integrity sha1-co1UUeD9FWwEOEp62J7VH/VOsl8= + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.npm.taobao.org/espree/download/espree-5.0.1.tgz?cache=0&sync_timestamp=1566612152812&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fespree%2Fdownload%2Fespree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha1-XWUm+k/H8HiKXPdbFfMDI+L4H3o= + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= + +esquery@^1.0.0, esquery@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/esquery/download/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg= + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8= + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npm.taobao.org/estraverse/download/estraverse-4.3.0.tgz?cache=0&sync_timestamp=1565734335990&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Festraverse%2Fdownload%2Festraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0= + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npm.taobao.org/esutils/download/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q= + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +event-pubsub@4.3.0: + version "4.3.0" + resolved "https://registry.npm.taobao.org/event-pubsub/download/event-pubsub-4.3.0.tgz#f68d816bc29f1ec02c539dc58c8dd40ce72cb36e" + integrity sha1-9o2Ba8KfHsAsU53FjI3UDOcss24= + +eventemitter3@^3.0.0: + version "3.1.2" + resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" + integrity sha1-LT1I+cNGaY/Og6hdfWZOmFNd9uc= + +events@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/events/download/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" + integrity sha1-mgoN+vYok9krh1uPJpjKQRSXPog= + +eventsource@^1.0.7: + version "1.0.7" + resolved "https://registry.npm.taobao.org/eventsource/download/eventsource-1.0.7.tgz#8fbc72c93fcd34088090bc0a4e64f4b5cee6d8d0" + integrity sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA= + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/evp_bytestokey/download/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI= + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.8.0: + version "0.8.0" + resolved "https://registry.npm.taobao.org/execa/download/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" + integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/execa/download/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg= + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^2.0.3: + version "2.0.4" + resolved "https://registry.npm.taobao.org/execa/download/execa-2.0.4.tgz#2f5cc589c81db316628627004ea4e37b93391d8e" + integrity sha1-L1zFicgdsxZihicATqTje5M5HY4= + dependencies: + cross-spawn "^6.0.5" + get-stream "^5.0.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^3.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +express@^4.16.3, express@^4.17.1: + version "4.17.1" + resolved "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" + integrity sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ= + dependencies: + accepts "~1.3.7" + array-flatten "1.1.1" + body-parser "1.19.0" + content-disposition "0.5.3" + content-type "~1.0.4" + cookie "0.4.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "~1.1.2" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "~1.1.2" + fresh "0.5.2" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "~2.3.0" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.5" + qs "6.7.0" + range-parser "~1.2.1" + safe-buffer "5.1.2" + send "0.17.1" + serve-static "1.14.1" + setprototypeof "1.1.1" + statuses "~1.5.0" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/extend-shallow/download/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/extend/download/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo= + +external-editor@^2.0.4: + version "2.2.0" + resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha1-BFURz9jRM/OEZnPRBHwVTiFK09U= + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npm.taobao.org/external-editor/download/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha1-ywP3QL764D6k0oPK7SdBqD8zVJU= + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/extglob/download/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM= + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/extsprintf/download/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz?cache=0&sync_timestamp=1562517919182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614" + integrity sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ= + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz?cache=0&sync_timestamp=1562517919182&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-deep-equal%2Fdownload%2Ffast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-glob@^2.2.6: + version "2.2.7" + resolved "https://registry.npm.taobao.org/fast-glob/download/fast-glob-2.2.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffast-glob%2Fdownload%2Ffast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha1-aVOFfDr6R1//ku5gFdUtpwpM050= + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "https://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.1: + version "1.1.2" + resolved "https://registry.npm.taobao.org/fastparse/download/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha1-kXKMWllC7O2FMSg8eUQe5BIsNak= + +faye-websocket@^0.10.0: + version "0.10.0" + resolved "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4" + integrity sha1-TkkvjQTftviQA1B/btvy1QHnxvQ= + dependencies: + websocket-driver ">=0.5.1" + +faye-websocket@~0.11.1: + version "0.11.3" + resolved "https://registry.npm.taobao.org/faye-websocket/download/faye-websocket-0.11.3.tgz#5c0e9a8968e8912c286639fde977a8b209f2508e" + integrity sha1-XA6aiWjokSwoZjn96XeosgnyUI4= + dependencies: + websocket-driver ">=0.5.1" + +figgy-pudding@^3.5.1: + version "3.5.1" + resolved "https://registry.npm.taobao.org/figgy-pudding/download/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" + integrity sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A= + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.npm.taobao.org/figures/download/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/figures/download/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.npm.taobao.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w= + dependencies: + flat-cache "^2.0.1" + +file-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/file-loader/download/file-loader-3.0.1.tgz#f8e0ba0b599918b51adfe45d66d1e771ad560faa" + integrity sha1-+OC6C1mZGLUa3+RdZtHnca1WD6o= + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + +filesize@^3.6.1: + version "3.6.1" + resolved "https://registry.npm.taobao.org/filesize/download/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha1-CQuz7gG2+AGoqL6Z0xcQs0Irsxc= + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/fill-range/download/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +finalhandler@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0= + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + +find-babel-config@^1.1.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/find-babel-config/download/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" + integrity sha1-qbezF+tbmGDNqdVHQKjIM3oig6I= + dependencies: + json5 "^0.5.1" + path-exists "^3.0.0" + +find-cache-dir@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" + integrity sha1-yN765XyKUqinhPnjHFfHQumToLk= + dependencies: + commondir "^1.0.1" + mkdirp "^0.5.1" + pkg-dir "^1.0.0" + +find-cache-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-1.0.0.tgz#9288e3e9e3cc3748717d39eade17cf71fc30ee6f" + integrity sha1-kojj6ePMN0hxfTnq3hfPcfww7m8= + dependencies: + commondir "^1.0.1" + make-dir "^1.0.0" + pkg-dir "^2.0.0" + +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc= + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.npm.taobao.org/find-up/download/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha1-SRafHXmTQwZG2mHsxa41XCHJe3M= + dependencies: + locate-path "^3.0.0" + +flat-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.npm.taobao.org/flat-cache/download/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha1-LC73dSXMKSkAff/6HdMUqpyd7m8= + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/flat-cache/download/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA= + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/flatted/download/flatted-2.0.1.tgz?cache=0&sync_timestamp=1561466276595&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fflatted%2Fdownload%2Fflatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha1-aeV8qo8OrLwoHS4stFjUb9tEngg= + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.npm.taobao.org/flush-write-stream/download/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha1-jdfYc6G6vCB9lOrQwuDkQnbr8ug= + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +fn-name@~2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/fn-name/download/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" + integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc= + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio= + dependencies: + debug "=3.1.0" + +follow-redirects@^1.0.0: + version "1.7.0" + resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.7.0.tgz#489ebc198dc0e7f64167bd23b03c4c19b5784c76" + integrity sha1-SJ68GY3A5/ZBZ70jsDxMGbV4THY= + dependencies: + debug "^3.2.6" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/for-in/download/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npm.taobao.org/form-data/download/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha1-3M5SwF9kTymManq5Nr1yTO/786Y= + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@~0.1.2: + version "0.1.2" + resolved "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" + integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/from2/download/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.npm.taobao.org/fs-extra/download/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha1-TxicRKoSO4lfcigE9V6iPq3DSOk= + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.6" + resolved "https://registry.npm.taobao.org/fs-minipass/download/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha1-LFzDDe2BKCv+ig18fBhT3esQLAc= + dependencies: + minipass "^2.2.1" + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.npm.taobao.org/fs-write-stream-atomic/download/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.9" + resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha1-P17WZYPM1vQAtaANtvfoYTY+OI8= + dependencies: + nan "^2.12.1" + node-pre-gyp "^0.12.0" + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.npm.taobao.org/fstream/download/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha1-Touo7i1Ivk99DeUFRVVI6uWTIEU= + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +function-bind@^1.0.2, function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0= + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +g-status@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/g-status/download/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97" + integrity sha1-Jw/TIRno/JSW8Gb+X+iOCmvHi5c= + dependencies: + arrify "^1.0.1" + matcher "^1.0.0" + simple-git "^1.85.0" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.npm.taobao.org/gauge/download/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +gaze@^1.0.0: + version "1.1.3" + resolved "https://registry.npm.taobao.org/gaze/download/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" + integrity sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko= + dependencies: + globule "^1.0.0" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o= + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.npm.taobao.org/get-caller-file/download/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha1-T5RBKoLbMvNuOwuXQfipf+sDH34= + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/get-own-enumerable-property-symbols/download/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" + integrity sha1-uHe0mlwWrvrDZV8u0upbaE340gM= + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/get-stdin/download/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha1-wbJVV189wh1Zv8ec09K0axw6VLU= + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/get-stream/download/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha1-ASA83JJZf5uQkGfD5lbMH008Tck= + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npm.taobao.org/get-value/download/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/glob-parent/download/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/glob-to-regexp/download/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: + version "7.1.4" + resolved "https://registry.npm.taobao.org/glob/download/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha1-qmCKL2xXetNX4a5aXCbZqNGWklU= + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.0.1, globals@^11.1.0, globals@^11.7.0: + version "11.12.0" + resolved "https://registry.npm.taobao.org/globals/download/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4= + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= + dependencies: + array-union "^1.0.1" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^7.1.1: + version "7.1.1" + resolved "https://registry.npm.taobao.org/globby/download/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" + integrity sha1-+yzP+UAfhgCUXfral0QMypcrhoA= + dependencies: + array-union "^1.0.1" + dir-glob "^2.0.0" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.npm.taobao.org/globby/download/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha1-/QKacGxwPSm90XD0tts6P3p8tj0= + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +globule@^1.0.0: + version "1.2.1" + resolved "https://registry.npm.taobao.org/globule/download/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" + integrity sha1-Xf+xsZHyLSB5epNptJ6rTpg5aW0= + dependencies: + glob "~7.1.1" + lodash "~4.17.10" + minimatch "~3.0.2" + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.2" + resolved "https://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha1-bwlSYF0BQMHP2xOO0AV3W5LWewI= + +gzip-size@^5.0.0: + version "5.1.1" + resolved "https://registry.npm.taobao.org/gzip-size/download/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha1-y5vuaS+HwGErIyhAqHOQTkwTUnQ= + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handle-thing@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/handle-thing/download/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754" + integrity sha1-DgOWlf9QyT/CiFV9aW88HcZ3Z1Q= + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: + version "5.1.3" + resolved "https://registry.npm.taobao.org/har-validator/download/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha1-HvievT5JllV2de7ZiTEQ3DUPoIA= + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/has-ansi/download/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/has-symbols/download/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" + integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/has-unicode/download/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npm.taobao.org/has-value/download/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/has-value/download/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/has-values/download/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/has-values/download/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y= + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.npm.taobao.org/hash-base/download/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/hash-sum/download/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npm.taobao.org/hash.js/download/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I= + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.x, he@^1.1.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/he/download/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha1-hK5l+n6vsWX922FWauFLrwVmTw8= + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/hex-color-regex/download/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha1-TAb8y0YC/iYCs8k9+C1+fb8aio4= + +highlight.js@^9.6.0: + version "9.15.10" + resolved "https://registry.npm.taobao.org/highlight.js/download/highlight.js-9.15.10.tgz#7b18ed75c90348c045eef9ed08ca1319a2219ad2" + integrity sha1-exjtdckDSMBF7vntCMoTGaIhmtI= + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/hmac-drbg/download/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoopy@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/hoopy/download/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d" + integrity sha1-YJIH1mEQADOpqUAq096mdzgcGx0= + +hosted-git-info@^2.1.4: + version "2.8.4" + resolved "https://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.8.4.tgz#44119abaf4bc64692a16ace34700fed9c03e2546" + integrity sha1-RBGauvS8ZGkqFqzjRwD+2cA+JUY= + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI= + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/hsl-regex/download/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/hsla-regex/download/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.npm.taobao.org/html-comment-regex/download/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c= + +html-entities@^1.2.1: + version "1.2.1" + resolved "https://registry.npm.taobao.org/html-entities/download/html-entities-1.2.1.tgz#0df29351f0721163515dfb9e5543e5f6eed5162f" + integrity sha1-DfKTUfByEWNRXfueVUPl9u7VFi8= + +html-minifier@^3.2.3: + version "3.5.21" + resolved "https://registry.npm.taobao.org/html-minifier/download/html-minifier-3.5.21.tgz#d0040e054730e354db008463593194015212d20c" + integrity sha1-0AQOBUcw41TbAIRjWTGUAVIS0gw= + dependencies: + camel-case "3.0.x" + clean-css "4.2.x" + commander "2.17.x" + he "1.2.x" + param-case "2.1.x" + relateurl "0.2.x" + uglify-js "3.4.x" + +html-tags@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/html-tags/download/html-tags-2.0.0.tgz?cache=0&sync_timestamp=1566122004262&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtml-tags%2Fdownload%2Fhtml-tags-2.0.0.tgz#10b30a386085f43cede353cc8fa7cb0deeea668b" + integrity sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos= + +html-webpack-plugin@^3.2.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/html-webpack-plugin/download/html-webpack-plugin-3.2.0.tgz#b01abbd723acaaa7b37b6af4492ebda03d9dd37b" + integrity sha1-sBq71yOsqqeze2r0SS69oD2d03s= + dependencies: + html-minifier "^3.2.3" + loader-utils "^0.2.16" + lodash "^4.17.3" + pretty-error "^2.0.2" + tapable "^1.0.0" + toposort "^1.0.0" + util.promisify "1.0.0" + +htmlparser2@^3.10.0, htmlparser2@^3.3.0: + version "3.10.1" + resolved "https://registry.npm.taobao.org/htmlparser2/download/htmlparser2-3.10.1.tgz?cache=0&sync_timestamp=1564773692945&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhtmlparser2%2Fdownload%2Fhtmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha1-vWedw/WYl7ajS7EHSchVu1OpOS8= + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc= + +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha1-bGGeT5xgMIw4UZSYwU+7EKrOuwY= + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +"http-parser-js@>=0.4.0 <0.4.11": + version "0.4.10" + resolved "https://registry.npm.taobao.org/http-parser-js/download/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" + integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= + +http-proxy-middleware@^0.19.1: + version "0.19.1" + resolved "https://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" + integrity sha1-GDx9xKoUeRUDBkmMIQza+WCApDo= + dependencies: + http-proxy "^1.17.0" + is-glob "^4.0.0" + lodash "^4.17.11" + micromatch "^3.1.10" + +http-proxy@^1.17.0: + version "1.17.0" + resolved "https://registry.npm.taobao.org/http-proxy/download/http-proxy-1.17.0.tgz#7ad38494658f84605e2f6db4436df410f4e5be9a" + integrity sha1-etOElGWPhGBeL220Q230EPTlvpo= + dependencies: + eventemitter3 "^3.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/https-browserify/download/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/icss-utils/download/icss-utils-2.1.0.tgz#83f0a0ec378bf3246178b6c2ad9136f135b1c962" + integrity sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI= + dependencies: + postcss "^6.0.1" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.npm.taobao.org/ieee754/download/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha1-7BaFWOlaoYH9h9N/VcMrvLZwi4Q= + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/ignore-walk/download/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha1-qD5i59JyrA47VRqqgoMaGbafgvg= + dependencies: + minimatch "^3.0.4" + +ignore@^3.3.3, ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.npm.taobao.org/ignore/download/ignore-3.3.10.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM= + +ignore@^4.0.3, ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npm.taobao.org/ignore/download/ignore-4.0.6.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw= + +ignore@^5.0.2, ignore@^5.1.1: + version "5.1.4" + resolved "https://registry.npm.taobao.org/ignore/download/ignore-5.1.4.tgz?cache=0&sync_timestamp=1565775199290&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fignore%2Fdownload%2Fignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8= + +import-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/import-cwd/download/import-cwd-2.1.0.tgz#aa6cf36e722761285cb371ec6519f53e2435b0a9" + integrity sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk= + dependencies: + import-from "^2.1.0" + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-fresh@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/import-fresh/download/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" + integrity sha1-bTP6Hc7235MPrgA0RvM0Fa+QURg= + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/import-from/download/import-from-2.1.0.tgz#335db7f2a7affd53aaa471d4b8021dee36b7f3b1" + integrity sha1-M1238qev/VOqpHHUuAId7ja387E= + dependencies: + resolve-from "^3.0.0" + +import-local@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/import-local/download/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha1-VQcL44pZk88Y72236WH1vuXFoJ0= + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +in-publish@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/in-publish/download/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" + integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/indent-string/download/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.npm.taobao.org/indent-string/download/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/indexes-of/download/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.npm.taobao.org/infer-owner/download/infer-owner-1.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finfer-owner%2Fdownload%2Finfer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha1-xM78qo5RBRwqQLos6KPScpWvlGc= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.4.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz?cache=0&sync_timestamp=1560975547815&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Finherits%2Fdownload%2Finherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.npm.taobao.org/ini/download/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc= + +inquirer@^3.0.6: + version "3.3.0" + resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" + integrity sha1-ndLyrXZdyrH/BEO0kUQqILoifck= + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.0.4" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rx-lite "^4.0.8" + rx-lite-aggregates "^4.0.8" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^6.2.2: + version "6.5.2" + resolved "https://registry.npm.taobao.org/inquirer/download/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" + integrity sha1-rVCUI3XQNtMn/1KMCL1fqwiZKMo= + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.12" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +internal-ip@^4.3.0: + version "4.3.0" + resolved "https://registry.npm.taobao.org/internal-ip/download/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" + integrity sha1-hFRSuq2dLKO2nGNaE3rLmg2tCQc= + dependencies: + default-gateway "^4.2.0" + ipaddr.js "^1.9.0" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.npm.taobao.org/invariant/download/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY= + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/invert-kv/download/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/invert-kv/download/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI= + +ip-regex@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/ip-regex/download/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" + integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= + +ip@^1.1.0, ip@^1.1.5: + version "1.1.5" + resolved "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" + integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.0: + version "1.9.0" + resolved "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" + integrity sha1-N9905DCg5HVQ/lSi3v4w2KzZX2U= + +ipaddr.js@^1.9.0: + version "1.9.1" + resolved "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha1-v/OFQ+64mEglB5/zoqjmy9RngbM= + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.0: + version "3.0.1" + resolved "https://registry.npm.taobao.org/is-absolute-url/download/is-absolute-url-3.0.1.tgz#e315cbdcbbc3d6789532d591954ac78a0e5049f6" + integrity sha1-4xXL3LvD1niVMtWRlUrHig5QSfY= + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY= + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.npm.taobao.org/is-arrayish/download/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha1-RXSirlb3qyBolvtDHq7tBm/fjwM= + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha1-76ouqdqg16suoTqXsritUf776L4= + +is-buffer@^2.0.2: + version "2.0.3" + resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" + integrity sha1-Ts8/z3ScvR5HJonhCaxmJhol5yU= + +is-callable@^1.1.4: + version "1.1.4" + resolved "https://registry.npm.taobao.org/is-callable/download/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" + integrity sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU= + +is-ci@^1.0.10: + version "1.2.1" + resolved "https://registry.npm.taobao.org/is-ci/download/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" + integrity sha1-43ecjuF/zPQoSI9uKBGH8uYyhBw= + dependencies: + ci-info "^1.5.0" + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-color-stop/download/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-data-descriptor/download/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc= + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-date-object/download/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" + integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco= + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/is-descriptor/download/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw= + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.npm.taobao.org/is-directory/download/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-extendable/download/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ= + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/is-finite/download/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/is-glob/download/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw= + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/is-number/download/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-obj@^1.0.0, is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-observable@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-observable/download/is-observable-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-observable%2Fdownload%2Fis-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" + integrity sha1-s+mGyPRN6VCGfKtUA/WjRlAFl14= + dependencies: + symbol-observable "^1.1.0" + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/is-path-cwd/download/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s= + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha1-WsSLNF72dTOb1sekipEhELJBz1I= + dependencies: + is-path-inside "^1.0.0" + +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/is-path-in-cwd/download/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha1-v+Lcomxp85cmWkAJljYCk1oFOss= + dependencies: + is-path-inside "^2.1.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= + dependencies: + path-is-inside "^1.0.1" + +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/is-path-inside/download/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha1-fJgQWH1lmkDSe8201WFuqwWUlLI= + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-plain-obj/download/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/is-plain-object/download/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc= + dependencies: + isobject "^3.0.1" + +is-promise@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fis-promise%2Fdownload%2Fis-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-regex@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/is-regex/download/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" + integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= + dependencies: + has "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-regexp/download/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg= + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/is-stream/download/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha1-venDJoDW+uBBKdasnZIc54FfeOM= + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/is-svg/download/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha1-kyHb0pwhLlypnE+peUxxS8r6L3U= + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" + integrity sha1-oFX2rlcZLK7jKeeoYBGLSXqVDzg= + dependencies: + has-symbols "^1.0.0" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0= + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/is-wsl/download/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz?cache=0&sync_timestamp=1562592125418&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fisarray%2Fdownload%2Fisarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/isobject/download/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/isobject/download/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +javascript-stringify@^1.6.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/javascript-stringify/download/javascript-stringify-1.6.0.tgz#142d111f3a6e3dae8f4a9afd77d45855b5a9cce3" + integrity sha1-FC0RHzpuPa6PSpr9d9RYVbWpzOM= + +js-base64@^2.1.8: + version "2.5.1" + resolved "https://registry.npm.taobao.org/js-base64/download/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" + integrity sha1-Hvo57yxfeYC7F4St5KivLeMpESE= + +js-calendar@^1.2.3: + version "1.2.3" + resolved "https://registry.npm.taobao.org/js-calendar/download/js-calendar-1.2.3.tgz#a583b0644b4e695ba394f344d103dbcc7a7a7d3e" + integrity sha1-pYOwZEtOaVujlPNE0QPbzHp6fT4= + +js-levenshtein@^1.1.3: + version "1.1.6" + resolved "https://registry.npm.taobao.org/js-levenshtein/download/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" + integrity sha1-xs7ljrNVA3LfjeuF+tXOZs4B1Z0= + +js-message@1.0.5: + version "1.0.5" + resolved "https://registry.npm.taobao.org/js-message/download/js-message-1.0.5.tgz#2300d24b1af08e89dd095bc1a4c9c9cfcb892d15" + integrity sha1-IwDSSxrwjondCVvBpMnJz8uJLRU= + +js-queue@2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/js-queue/download/js-queue-2.0.0.tgz#362213cf860f468f0125fc6c96abc1742531f948" + integrity sha1-NiITz4YPRo8BJfxslqvBdCUx+Ug= + dependencies: + easy-stack "^1.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk= + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/js-tokens/download/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.13.0, js-yaml@^3.13.1, js-yaml@^3.9.1: + version "3.13.1" + resolved "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc= + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q= + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/jsesc/download/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/json-parse-better-errors/download/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk= + +json-schema-traverse@^0.3.0: + version "0.3.1" + resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340" + integrity sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA= + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json3@^3.3.2: + version "3.3.3" + resolved "https://registry.npm.taobao.org/json3/download/json3-3.3.3.tgz#7fc10e375fc5ae42c4705a5cc0aa6f62be305b81" + integrity sha1-f8EON1/FrkLEcFpcwKpvYr4wW4E= + +json5@^0.5.0, json5@^0.5.1: + version "0.5.1" + resolved "https://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/json5/download/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4= + dependencies: + minimist "^1.2.0" + +json5@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/json5/download/json5-2.1.0.tgz#e7a0c62c48285c628d20a10b85c89bb807c32850" + integrity sha1-56DGLEgoXGKNIKELhcibuAfDKFA= + dependencies: + minimist "^1.2.0" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +killable@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/killable/download/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892" + integrity sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI= + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha1-cpyR4thXt6QZofmqZWhcTDP1hF0= + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.2" + resolved "https://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" + integrity sha1-ARRrNqYhjmTljzqNZt5df8b20FE= + +launch-editor-middleware@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/launch-editor-middleware/download/launch-editor-middleware-2.2.1.tgz#e14b07e6c7154b0a4b86a0fd345784e45804c157" + integrity sha1-4UsH5scVSwpLhqD9NFeE5FgEwVc= + dependencies: + launch-editor "^2.2.1" + +launch-editor@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/launch-editor/download/launch-editor-2.2.1.tgz#871b5a3ee39d6680fcc26d37930b6eeda89db0ca" + integrity sha1-hxtaPuOdZoD8wm03kwtu7aidsMo= + dependencies: + chalk "^2.3.0" + shell-quote "^1.6.1" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/lcid/download/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/lcid/download/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha1-bvXS32DlL4LrIopMNz6NHzlyU88= + dependencies: + invert-kv "^2.0.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.npm.taobao.org/lines-and-columns/download/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@^8.1.5: + version "8.2.1" + resolved "https://registry.npm.taobao.org/lint-staged/download/lint-staged-8.2.1.tgz#752fcf222d9d28f323a3b80f1e668f3654ff221f" + integrity sha1-dS/PIi2dKPMjo7gPHmaPNlT/Ih8= + dependencies: + chalk "^2.3.1" + commander "^2.14.1" + cosmiconfig "^5.2.0" + debug "^3.1.0" + dedent "^0.7.0" + del "^3.0.0" + execa "^1.0.0" + g-status "^2.0.2" + is-glob "^4.0.0" + is-windows "^1.0.2" + listr "^0.14.2" + listr-update-renderer "^0.5.0" + lodash "^4.17.11" + log-symbols "^2.2.0" + micromatch "^3.1.8" + npm-which "^3.0.1" + p-map "^1.1.1" + path-is-inside "^1.0.2" + pify "^3.0.0" + please-upgrade-node "^3.0.2" + staged-git-files "1.1.2" + string-argv "^0.0.2" + stringify-object "^3.2.2" + yup "^0.27.0" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/listr-silent-renderer/download/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/listr-update-renderer/download/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha1-Tqg2hUinuK7LfgbYyVy0WuLt5qI= + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/listr-verbose-renderer/download/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha1-8RMhZ1NepMEmEQK58o2sfLoeA9s= + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.2: + version "0.14.3" + resolved "https://registry.npm.taobao.org/listr/download/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha1-L+qQlgTkNL5GTFC926DUlpKPpYY= + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/load-json-file/download/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-fs-cache@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/loader-fs-cache/download/loader-fs-cache-1.0.2.tgz#54cedf6b727e1779fd8f01205f05f6e88706f086" + integrity sha1-VM7fa3J+F3n9jwEgXwX26IcG8IY= + dependencies: + find-cache-dir "^0.1.1" + mkdirp "0.5.1" + +loader-runner@^2.3.1, loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.npm.taobao.org/loader-runner/download/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c= + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3: + version "1.2.3" + resolved "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc= + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4= + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.defaultsdeep@^4.6.1: + version "4.6.1" + resolved "https://registry.npm.taobao.org/lodash.defaultsdeep/download/lodash.defaultsdeep-4.6.1.tgz#512e9bd721d272d94e3d3a63653fa17516741ca6" + integrity sha1-US6b1yHSctlOPTpjZT+hdRZ0HKY= + +lodash.kebabcase@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/lodash.kebabcase/download/lodash.kebabcase-4.1.1.tgz#8489b1cb0d29ff88195cceca448ff6d6cc295c36" + integrity sha1-hImxyw0p/4gZXM7KRI/21swpXDY= + +lodash.mapvalues@^4.6.0: + version "4.6.0" + resolved "https://registry.npm.taobao.org/lodash.mapvalues/download/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" + integrity sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npm.taobao.org/lodash.memoize/download/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/lodash.throttle/download/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash.transform@^4.6.0: + version "4.6.0" + resolved "https://registry.npm.taobao.org/lodash.transform/download/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" + integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npm.taobao.org/lodash.uniq/download/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@~4.17.10: + version "4.17.15" + resolved "https://registry.npm.taobao.org/lodash/download/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg= + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/log-symbols/download/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo= + dependencies: + chalk "^2.0.1" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/log-update/download/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + +loglevel@^1.6.3: + version "1.6.3" + resolved "https://registry.npm.taobao.org/loglevel/download/loglevel-1.6.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floglevel%2Fdownload%2Floglevel-1.6.3.tgz#77f2eb64be55a404c9fd04ad16d57c1d6d6b1280" + integrity sha1-d/LrZL5VpATJ/QStFtV8HW1rEoA= + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/loose-envify/download/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8= + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/loud-rejection/download/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.npm.taobao.org/lower-case/download/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lru-cache@^4.0.1, lru-cache@^4.1.1, lru-cache@^4.1.2: + version "4.1.5" + resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80= + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npm.taobao.org/lru-cache/download/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA= + dependencies: + yallist "^3.0.2" + +make-dir@^1.0.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha1-ecEDO4BRW9bSTsmTPoYMp17ifww= + dependencies: + pify "^3.0.0" + +make-dir@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU= + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.npm.taobao.org/mamacro/download/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha1-rSyVdhl8nxq/MI0Hh4Zb2XWj8+Q= + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.npm.taobao.org/map-age-cleaner/download/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo= + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.npm.taobao.org/map-cache/download/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/map-obj/download/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/map-visit/download/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +matcher@^1.0.0: + version "1.1.1" + resolved "https://registry.npm.taobao.org/matcher/download/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" + integrity sha1-UdgwHhOPhAmCszixFrsMCa9iwcI= + dependencies: + escape-string-regexp "^1.0.4" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.npm.taobao.org/md5.js/download/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8= + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.npm.taobao.org/mdn-data/download/mdn-data-2.0.4.tgz?cache=0&sync_timestamp=1562673334420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha1-aZs8OKxvHXKAkaZGULZdOIUC/Vs= + +mdn-data@~1.1.0: + version "1.1.4" + resolved "https://registry.npm.taobao.org/mdn-data/download/mdn-data-1.1.4.tgz?cache=0&sync_timestamp=1562673334420&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmdn-data%2Fdownload%2Fmdn-data-1.1.4.tgz#50b5d4ffc4575276573c4eedb8780812a8419f01" + integrity sha1-ULXU/8RXUnZXPE7tuHgIEqhBnwE= + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.npm.taobao.org/mem/download/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha1-Rhr0l7xK4JYIzbLmDu+2m/90QXg= + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memory-fs@^0.4.0, memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +meow@^3.7.0: + version "3.7.0" + resolved "https://registry.npm.taobao.org/meow/download/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/merge-source-map/download/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha1-L93n5gIJOfcJBqaPLXrmheTIxkY= + dependencies: + source-map "^0.6.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/merge-stream/download/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A= + +merge2@^1.2.3: + version "1.2.4" + resolved "https://registry.npm.taobao.org/merge2/download/merge2-1.2.4.tgz?cache=0&sync_timestamp=1564568903369&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmerge2%2Fdownload%2Fmerge2-1.2.4.tgz#c9269589e6885a60cf80605d9522d4b67ca646e3" + integrity sha1-ySaVieaIWmDPgGBdlSLUtnymRuM= + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.8: + version "3.1.10" + resolved "https://registry.npm.taobao.org/micromatch/download/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha1-cIWbyVyYQJUvNZoGij/En57PrCM= + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npm.taobao.org/miller-rabin/download/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha1-8IA1HIZbDcViqEYpZtqlNUPHik0= + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": + version "1.40.0" + resolved "https://registry.npm.taobao.org/mime-db/download/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha1-plBX6ZjbCQ9zKmj2wnbTh9QSbDI= + +mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24: + version "2.1.24" + resolved "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha1-tvjQs+lR77d97eyhlM/20W9nb4E= + dependencies: + mime-db "1.40.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE= + +mime@^2.0.3, mime@^2.4.2: + version "2.4.4" + resolved "https://registry.npm.taobao.org/mime/download/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" + integrity sha1-vXuRE1/GsBzePpuuM9ZZtj2IV+U= + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI= + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/mimic-fn/download/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs= + +mini-css-extract-plugin@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/mini-css-extract-plugin/download/mini-css-extract-plugin-0.6.0.tgz#a3f13372d6fcde912f3ee4cd039665704801e3b9" + integrity sha1-o/Ezctb83pEvPuTNA5ZlcEgB47k= + dependencies: + loader-utils "^1.1.0" + normalize-url "^2.0.1" + schema-utils "^1.0.0" + webpack-sources "^1.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/minimalistic-assert/download/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc= + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/minimalistic-crypto-utils/download/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: + version "3.0.4" + resolved "https://registry.npm.taobao.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.npm.taobao.org/minimist/download/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.3, minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minipass@^2.2.1, minipass@^2.3.5: + version "2.4.0" + resolved "https://registry.npm.taobao.org/minipass/download/minipass-2.4.0.tgz#38f0af94f42fb6f34d3d7d82a90e2c99cd3ff485" + integrity sha1-OPCvlPQvtvNNPX2CqQ4smc0/9IU= + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.2.1" + resolved "https://registry.npm.taobao.org/minizlib/download/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha1-3SfqYTYkPHyIBoToZyuzpF/ZthQ= + dependencies: + minipass "^2.2.1" + +mississippi@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/mississippi/download/mississippi-2.0.0.tgz#3442a508fafc28500486feea99409676e4ee5a6f" + integrity sha1-NEKlCPr8KFAEhv7qmUCWduTuWm8= + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^2.0.1" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/mississippi/download/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha1-6goykfl+C16HdrNj1fChLZTGcCI= + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npm.taobao.org/mixin-deep/download/mixin-deep-1.3.2.tgz?cache=0&sync_timestamp=1561436244196&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmixin-deep%2Fdownload%2Fmixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY= + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@0.5.1, mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.1" + resolved "https://registry.npm.taobao.org/mkdirp/download/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/move-concurrently/download/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= + +multicast-dns-service-types@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901" + integrity sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE= + +multicast-dns@^6.0.1: + version "6.2.3" + resolved "https://registry.npm.taobao.org/multicast-dns/download/multicast-dns-6.2.3.tgz#a0ec7bd9055c4282f790c3c82f4e28db3b31b229" + integrity sha1-oOx72QVcQoL3kMPIL04o2zsxsik= + dependencies: + dns-packet "^1.3.1" + thunky "^1.0.2" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.npm.taobao.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +mz@^2.4.0: + version "2.7.0" + resolved "https://registry.npm.taobao.org/mz/download/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32" + integrity sha1-lQCAV6Vsr63CvGPd5/n/aVWUjjI= + dependencies: + any-promise "^1.0.0" + object-assign "^4.0.1" + thenify-all "^1.0.0" + +nan@^2.12.1, nan@^2.13.2: + version "2.14.0" + resolved "https://registry.npm.taobao.org/nan/download/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha1-eBj3IgJ7JFmobwKV1DTR/CM2xSw= + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npm.taobao.org/nanomatch/download/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk= + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.npm.taobao.org/needle/download/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha1-aDPnSXXERGQlkOFadQKIxfk5tXw= + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs= + +neo-async@^2.5.0, neo-async@^2.6.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha1-rCetpmFn+ohJpq3dg39rGJrSCBw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npm.taobao.org/nice-try/download/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y= + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.npm.taobao.org/no-case/download/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw= + dependencies: + lower-case "^1.1.1" + +node-forge@0.7.5: + version "0.7.5" + resolved "https://registry.npm.taobao.org/node-forge/download/node-forge-0.7.5.tgz?cache=0&sync_timestamp=1560906791252&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-forge%2Fdownload%2Fnode-forge-0.7.5.tgz#6c152c345ce11c52f465c2abd957e8639cd674df" + integrity sha1-bBUsNFzhHFL0ZcKr2VfoY5zWdN8= + +node-gyp@^3.8.0: + version "3.8.0" + resolved "https://registry.npm.taobao.org/node-gyp/download/node-gyp-3.8.0.tgz?cache=0&sync_timestamp=1563338026377&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-gyp%2Fdownload%2Fnode-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" + integrity sha1-VAMEJhwzDoDQ1e3OJTpoyzlkIYw= + dependencies: + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" + +node-ipc@^9.1.1: + version "9.1.1" + resolved "https://registry.npm.taobao.org/node-ipc/download/node-ipc-9.1.1.tgz#4e245ed6938e65100e595ebc5dc34b16e8dd5d69" + integrity sha1-TiRe1pOOZRAOWV68XcNLFujdXWk= + dependencies: + event-pubsub "4.3.0" + js-message "1.0.5" + js-queue "2.0.0" + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/node-libs-browser/download/node-libs-browser-2.2.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-libs-browser%2Fdownload%2Fnode-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha1-tk9RPRgzhiX5A0bSew0jXmMfZCU= + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.npm.taobao.org/node-pre-gyp/download/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha1-ObpLsUOdoDApX4meO1ILd4V2YUk= + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-releases@^1.1.25: + version "1.1.28" + resolved "https://registry.npm.taobao.org/node-releases/download/node-releases-1.1.28.tgz#503c3c70d0e4732b84e7aaa2925fbdde10482d4a" + integrity sha1-UDw8cNDkcyuE56qikl+93hBILUo= + dependencies: + semver "^5.3.0" + +node-sass@^4.9.0: + version "4.12.0" + resolved "https://registry.npm.taobao.org/node-sass/download/node-sass-4.12.0.tgz#0914f531932380114a30cc5fa4fa63233a25f017" + integrity sha1-CRT1MZMjgBFKMMxfpPpjIzol8Bc= + dependencies: + async-foreach "^0.1.3" + chalk "^1.1.1" + cross-spawn "^3.0.0" + gaze "^1.0.0" + get-stdin "^4.0.1" + glob "^7.0.3" + in-publish "^2.0.0" + lodash "^4.17.11" + meow "^3.7.0" + mkdirp "^0.5.1" + nan "^2.13.2" + node-gyp "^3.8.0" + npmlog "^4.0.0" + request "^2.88.0" + sass-graph "^2.2.4" + stdout-stream "^1.4.0" + "true-case-path" "^1.0.2" + +"nopt@2 || 3": + version "3.0.6" + resolved "https://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + dependencies: + abbrev "1" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/nopt/download/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg= + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" + integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/normalize-path/download/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU= + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npm.taobao.org/normalize-range/download/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha1-g1qdoVUfom9w6SMpBpojqmV01+Y= + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.npm.taobao.org/normalize-url/download/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha1-suHE3E98bVd0PfczpPWXjRhlBVk= + +normalize.css@^8.0.1: + version "8.0.1" + resolved "https://registry.npm.taobao.org/normalize.css/download/normalize.css-8.0.1.tgz#9b98a208738b9cc2634caacbc42d131c97487bf3" + integrity sha1-m5iiCHOLnMJjTKrLxC0THJdIe/M= + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.npm.taobao.org/npm-bundled/download/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha1-57qarc75YrthJI+RchzZMrP+a90= + +npm-packlist@^1.1.6: + version "1.4.4" + resolved "https://registry.npm.taobao.org/npm-packlist/download/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" + integrity sha1-hmIkIzhQrFNLY9Gm52BQCStdL0Q= + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-path@^2.0.2: + version "2.0.4" + resolved "https://registry.npm.taobao.org/npm-path/download/npm-path-2.0.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnpm-path%2Fdownload%2Fnpm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" + integrity sha1-xkE0el/51qCeTZvOVYDE9QUnjmQ= + dependencies: + which "^1.2.10" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/npm-run-path/download/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" + integrity sha1-f5G+MX9qRm7+08nymArYpO6LD6U= + dependencies: + path-key "^3.0.0" + +npm-which@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/npm-which/download/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" + integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo= + dependencies: + commander "^2.9.0" + npm-path "^2.0.2" + which "^1.2.10" + +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha1-CKfyqL9zRgR3mp76StXMcXq7lUs= + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^1.0.2, nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.npm.taobao.org/nth-check/download/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw= + dependencies: + boolbase "~1.0.0" + +num2fraction@^1.2.2: + version "1.2.2" + resolved "https://registry.npm.taobao.org/num2fraction/download/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" + integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/number-is-nan/download/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU= + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/object-copy/download/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-hash@^1.1.4: + version "1.3.1" + resolved "https://registry.npm.taobao.org/object-hash/download/object-hash-1.3.1.tgz#fde452098a951cb145f039bb7d455449ddc126df" + integrity sha1-/eRSCYqVHLFF8Dm7fUVUSd3BJt8= + +object-keys@^1.0.11, object-keys@^1.0.12: + version "1.1.1" + resolved "https://registry.npm.taobao.org/object-keys/download/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha1-HEfyct8nfzsdrwYWd9nILiMixg4= + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/object-visit/download/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.npm.taobao.org/object.assign/download/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha1-lovxEA15Vrs8oIbwBvhGs7xACNo= + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.0.3: + version "2.0.3" + resolved "https://registry.npm.taobao.org/object.getownpropertydescriptors/download/object.getownpropertydescriptors-2.0.3.tgz#8758c846f5b407adab0f236e0986f14b051caa16" + integrity sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.5.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/object.pick/download/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/object.values/download/object.values-1.1.0.tgz#bf6810ef5da3e5325790eaaa2be213ea84624da9" + integrity sha1-v2gQ712j5TJXkOqqK+IT6oRiTak= + dependencies: + define-properties "^1.1.3" + es-abstract "^1.12.0" + function-bind "^1.1.1" + has "^1.0.3" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/obuf/download/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4= + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +on-headers@~1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/on-headers/download/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" + integrity sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8= + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/onetime/download/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/onetime/download/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha1-//DzyRYX/mK7UBiWNumayKbfe+U= + dependencies: + mimic-fn "^2.1.0" + +open@^6.3.0: + version "6.4.0" + resolved "https://registry.npm.taobao.org/open/download/open-6.4.0.tgz#5c13e96d0dc894686164f18965ecfe889ecfc8a9" + integrity sha1-XBPpbQ3IlGhhZPGJZez+iJ7PyKk= + dependencies: + is-wsl "^1.1.0" + +opener@^1.5.1: + version "1.5.1" + resolved "https://registry.npm.taobao.org/opener/download/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" + integrity sha1-bS8Od/GgrwAyrKcWwsH7uOfoq+0= + +opn@^5.5.0: + version "5.5.0" + resolved "https://registry.npm.taobao.org/opn/download/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha1-/HFk+rVtI1kExRw7J9pnWMo7m/w= + dependencies: + is-wsl "^1.1.0" + +optionator@^0.8.2: + version "0.8.2" + resolved "https://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +ora@^3.4.0: + version "3.4.0" + resolved "https://registry.npm.taobao.org/ora/download/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha1-vwdSSRBZo+8+1MhQl1Md6f280xg= + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^2.0.0" + log-symbols "^2.2.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + +original@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/original/download/original-1.0.2.tgz#e442a61cffe1c5fd20a65f3261c26663b303f25f" + integrity sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8= + dependencies: + url-parse "^1.4.3" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/os-browserify/download/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/os-homedir/download/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/os-locale/download/os-locale-1.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-locale@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/os-locale/download/os-locale-3.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fos-locale%2Fdownload%2Fos-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo= + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0, osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha1-hc36+uso6Gd/QW4odZK18/SepBA= + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/p-defer/download/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/p-finally/download/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha1-vW/KqcVZoJa2gIBvTWV7Pw8kBWE= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/p-is-promise/download/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha1-kYzrrqJIpiz3/6uOO8qMX4gvxC4= + +p-limit@^1.0.0, p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg= + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.2.1" + resolved "https://registry.npm.taobao.org/p-limit/download/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha1-qgeniMwxUck5tRMfY1cPDdIAlTc= + dependencies: + p-try "^2.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ= + dependencies: + p-limit "^2.0.0" + +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.npm.taobao.org/p-map/download/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + integrity sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s= + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/p-map/download/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha1-MQko/u+cnsxltosXaTAYpmXOoXU= + +p-retry@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/p-retry/download/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" + integrity sha1-MWtMiJPiyNwc+okfQGxLQivr8yg= + dependencies: + retry "^0.12.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha1-yyhoVA4xPWHeWPr741zpAE1VQOY= + +pako@~1.0.5: + version "1.0.10" + resolved "https://registry.npm.taobao.org/pako/download/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" + integrity sha1-Qyi621CGpCaqkPVBl31JVdpclzI= + +parallel-transform@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/parallel-transform/download/parallel-transform-1.1.0.tgz#d410f065b05da23081fcd10f28854c29bda33b06" + integrity sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY= + dependencies: + cyclist "~0.2.2" + inherits "^2.0.3" + readable-stream "^2.1.5" + +param-case@2.1.x: + version "2.1.1" + resolved "https://registry.npm.taobao.org/param-case/download/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/parent-module/download/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI= + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0: + version "5.1.4" + resolved "https://registry.npm.taobao.org/parse-asn1/download/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" + integrity sha1-N/Zij4I/vesic7TVQENKIvPvH8w= + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/parse-json/download/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha1-c+URTJhtFD76NxLU6iTbmkJm9g8= + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + +parse5@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/parse5/download/parse5-4.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fparse5%2Fdownload%2Fparse5-4.0.0.tgz#6d78656e3da8d78b4ec0b906f7c08ef1dfe3f608" + integrity sha1-bXhlbj2o14tOwLkG98CO8d/j9gg= + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ= + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npm.taobao.org/pascalcase/download/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npm.taobao.org/path-browserify/download/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha1-5sTd1+06onxoogzE5Q4aTug7vEo= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npm.taobao.org/path-dirname/download/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/path-exists/download/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@^1.0.1, path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/path-key/download/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/path-key/download/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3" + integrity sha1-maENhwqAO91e5vBHDljfzS+aVNM= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha1-1i27VnlAXXLEc37FhgDp3c8G0kw= + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/path-type/download/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/path-type/download/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha1-zvMdyOCho7sNEFwM2Xzzv0f0428= + dependencies: + pify "^3.0.0" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.npm.taobao.org/pbkdf2/download/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha1-l2wgZTBhexTrsyEUI597CTNuk6Y= + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-1.0.0.tgz#7a4b508a8d5bb2d629d447056ff4e9c9314cf3d4" + integrity sha1-ektQio1bstYp1EcFb/TpyTFM89Q= + dependencies: + find-up "^1.0.0" + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM= + dependencies: + find-up "^3.0.0" + +pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz#c819ac728059a461cab1c3889a2be3c49a004d7f" + integrity sha1-yBmscoBZpGHKscOImivjxJoATX8= + dependencies: + find-up "^2.1.0" + +please-upgrade-node@^3.0.2: + version "3.2.0" + resolved "https://registry.npm.taobao.org/please-upgrade-node/download/please-upgrade-node-3.2.0.tgz?cache=0&sync_timestamp=1565266069139&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fplease-upgrade-node%2Fdownload%2Fplease-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha1-rt3T+ZTJM+StmLmdmlVu+g4v6UI= + dependencies: + semver-compare "^1.0.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.npm.taobao.org/pluralize/download/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha1-KYuJ34uTsCIdv0Ia0rGx6iP8Z3c= + +popper.js@^1.14.6: + version "1.15.0" + resolved "https://registry.npm.taobao.org/popper.js/download/popper.js-1.15.0.tgz#5560b99bbad7647e9faa475c6b8056621f5a4ff2" + integrity sha1-VWC5m7rXZH6fqkdca4BWYh9aT/I= + +portfinder@^1.0.20, portfinder@^1.0.21: + version "1.0.23" + resolved "https://registry.npm.taobao.org/portfinder/download/portfinder-1.0.23.tgz?cache=0&sync_timestamp=1566246843633&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fportfinder%2Fdownload%2Fportfinder-1.0.23.tgz#894db4bcc5daf02b6614517ce89cd21a38226b82" + integrity sha1-iU20vMXa8CtmFFF86JzSGjgia4I= + dependencies: + async "^1.5.2" + debug "^2.2.0" + mkdirp "0.5.x" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npm.taobao.org/posix-character-classes/download/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-calc@^7.0.1: + version "7.0.1" + resolved "https://registry.npm.taobao.org/postcss-calc/download/postcss-calc-7.0.1.tgz#36d77bab023b0ecbb9789d84dcb23c4941145436" + integrity sha1-Ntd7qwI7Dsu5eJ2E3LI8SUEUVDY= + dependencies: + css-unit-converter "^1.1.1" + postcss "^7.0.5" + postcss-selector-parser "^5.0.0-rc.4" + postcss-value-parser "^3.3.1" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.npm.taobao.org/postcss-colormin/download/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha1-rgYLzpPteUrHEmTwgTLVUJVr04E= + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-convert-values/download/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha1-yjgT7U2g+BL51DcDWE5Enr4Ymn8= + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-discard-comments/download/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha1-H7q9LCRr/2qq15l7KwkY9NevQDM= + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-discard-duplicates/download/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha1-P+EzzTyCKC5VD8myORdqkge3hOs= + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-discard-empty/download/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha1-yMlR6fc+2UKAGUWERKAq2Qu592U= + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-discard-overridden/download/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha1-ZSrvipZybwKfXj4AFG7npOdV/1c= + dependencies: + postcss "^7.0.0" + +postcss-load-config@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/postcss-load-config/download/postcss-load-config-2.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss-load-config%2Fdownload%2Fpostcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003" + integrity sha1-yE1pK3u3tB3c7ZTuYuirMbQXsAM= + dependencies: + cosmiconfig "^5.0.0" + import-cwd "^2.0.0" + +postcss-loader@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/postcss-loader/download/postcss-loader-3.0.0.tgz#6b97943e47c72d845fa9e03f273773d4e8dd6c2d" + integrity sha1-a5eUPkfHLYRfqeA/Jzdz1OjdbC0= + dependencies: + loader-utils "^1.1.0" + postcss "^7.0.0" + postcss-load-config "^2.0.0" + schema-utils "^1.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.npm.taobao.org/postcss-merge-longhand/download/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha1-YvSaE+Sg7gTnuY9CuxYGLKJUniQ= + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.npm.taobao.org/postcss-merge-rules/download/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha1-NivqT/Wh+Y5AdacTxsslrv75plA= + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-minify-font-values/download/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha1-zUw0TM5HQ0P6xdgiBqssvLiv1aY= + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-minify-gradients/download/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha1-k7KcL/UJnFNe7NpWxKpuZlpmNHE= + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-minify-params/download/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha1-a5zvAwwR41Jh+V9hjJADbWgNuHQ= + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-minify-selectors/download/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha1-4uXrQL/uUA0M2SQ1APX46kJi+9g= + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@^1.2.0: + version "1.2.1" + resolved "https://registry.npm.taobao.org/postcss-modules-extract-imports/download/postcss-modules-extract-imports-1.2.1.tgz#dc87e34148ec7eab5f791f7cd5849833375b741a" + integrity sha1-3IfjQUjsfqtfeR981YSYMzdbdBo= + dependencies: + postcss "^6.0.1" + +postcss-modules-local-by-default@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/postcss-modules-local-by-default/download/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/postcss-modules-scope/download/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-values@^1.3.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/postcss-modules-values/download/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-normalize-charset/download/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha1-izWt067oOhNrBHHg1ZvlilAoXdQ= + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-display-values/download/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha1-Db4EpM6QY9RmftK+R2u4MMglk1o= + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-positions/download/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha1-BfdX+E8mBDc3g2ipH4ky1LECkX8= + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-repeat-style/download/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha1-xOu8KJ85kaAo1EdRy90RkYsXkQw= + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-string/download/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha1-zUTECrB6DHo23F6Zqs4eyk7CaQw= + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-timing-functions/download/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha1-jgCcoqOUnNr4rSPmtquZy159KNk= + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-normalize-unicode/download/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha1-hBvUj9zzAZrUuqdJOj02O1KuHPs= + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-normalize-url/download/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha1-EOQ3+GvHx+WPe5ZS7YeNqqlfquE= + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-normalize-whitespace/download/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha1-vx1AcP5Pzqh9E0joJdjMDF+qfYI= + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.npm.taobao.org/postcss-ordered-values/download/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha1-DPdcgg7H1cTSgBiVWeC1ceusDu4= + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.npm.taobao.org/postcss-reduce-initial/download/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha1-f9QuvqXpyBRgljniwuhK4nC6SN8= + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-reduce-transforms/download/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha1-F++kBerMbge+NBSlyi0QdGgdTik= + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@^3.0.0: + version "3.1.1" + resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-3.1.1.tgz#4f875f4afb0c96573d5cf4d74011aee250a7e865" + integrity sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU= + dependencies: + dot-prop "^4.1.1" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^5.0.0, postcss-selector-parser@^5.0.0-rc.4: + version "5.0.0" + resolved "https://registry.npm.taobao.org/postcss-selector-parser/download/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha1-JJBENWaXsztk8aj3yAki3d7nGVw= + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-svgo/download/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha1-F7mXvHEbMzurFDqu07jT1uPTglg= + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/postcss-unique-selectors/download/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha1-lEaRHzKJv9ZMbWgPBzwDsfnuS6w= + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha1-n/giVH4okyE88cMO+lGsX9G6goE= + +postcss-value-parser@^4.0.0: + version "4.0.2" + resolved "https://registry.npm.taobao.org/postcss-value-parser/download/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9" + integrity sha1-SCKCwJpCcG0fyaBptz9E7Ag5Hck= + +postcss@^6.0.1, postcss@^6.0.23: + version "6.0.23" + resolved "https://registry.npm.taobao.org/postcss/download/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ= + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.5: + version "7.0.17" + resolved "https://registry.npm.taobao.org/postcss/download/postcss-7.0.17.tgz#4da1bdff5322d4a0acaab4d87f3e782436bad31f" + integrity sha1-TaG9/1Mi1KCsqrTYfz54JDa60x8= + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/prepend-http/download/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +prettier@1.16.3: + version "1.16.3" + resolved "https://registry.npm.taobao.org/prettier/download/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" + integrity sha1-jGIWhFO63vcC80tFtu6JlXSmpl0= + +pretty-error@^2.0.2: + version "2.1.1" + resolved "https://registry.npm.taobao.org/pretty-error/download/pretty-error-2.1.1.tgz#5f4f87c8f91e5ae3f3ba87ab4cf5e03b1a17f1a3" + integrity sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM= + dependencies: + renderkid "^2.0.1" + utila "~0.4" + +private@^0.1.6: + version "0.1.8" + resolved "https://registry.npm.taobao.org/private/download/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I= + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.npm.taobao.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha1-foz42PW48jnBvGi+tOt4Vn1XLvg= + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/promise-inflight/download/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +property-expr@^1.5.0: + version "1.5.1" + resolved "https://registry.npm.taobao.org/property-expr/download/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f" + integrity sha1-IuhwaJSgyOKNWHNYBPa6OjZzMU8= + +proxy-addr@~2.0.5: + version "2.0.5" + resolved "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" + integrity sha1-NMvWSi2B9LH9IedvnwbIpFKZ7jQ= + dependencies: + forwarded "~0.1.2" + ipaddr.js "1.9.0" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24, psl@^1.1.28: + version "1.3.0" + resolved "https://registry.npm.taobao.org/psl/download/psl-1.3.0.tgz#e1ebf6a3b5564fa8376f3da2275da76d875ca1bd" + integrity sha1-4ev2o7VWT6g3bz2iJ12nbYdcob0= + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npm.taobao.org/public-encrypt/download/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA= + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0, pump@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/pump/download/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk= + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/pump/download/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ= + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.npm.taobao.org/pumpify/download/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4= + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4, punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew= + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.npm.taobao.org/q/download/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.7.0: + version "6.7.0" + resolved "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&sync_timestamp=1566009952956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha1-QdwaAV49WB8WIXdr4xr7KHapsbw= + +qs@^6.7.0: + version "6.8.0" + resolved "https://registry.npm.taobao.org/qs/download/qs-6.8.0.tgz?cache=0&sync_timestamp=1566009952956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.8.0.tgz#87b763f0d37ca54200334cd57bb2ef8f68a1d081" + integrity sha1-h7dj8NN8pUIAM0zVe7Lvj2ih0IE= + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1566009952956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha1-yzroBuh0BERYTvFUzo7pjUA/PjY= + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.npm.taobao.org/query-string/download/query-string-5.1.1.tgz?cache=0&sync_timestamp=1564173124567&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fquery-string%2Fdownload%2Fquery-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha1-p4wBK3HBfgXy4/ojGd0zBoLvs8s= + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npm.taobao.org/querystring-es3/download/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystringify@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/querystringify/download/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e" + integrity sha1-YOWl/WSn+L+k0qsu1v30yFutFU4= + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.npm.taobao.org/randombytes/download/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo= + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npm.taobao.org/randomfill/download/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha1-ySGW/IarQr6YPxvzF3giSTHWFFg= + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE= + +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha1-oc5vucm8NWylLoklarWQWeE9AzI= + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.npm.taobao.org/rc/download/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0= + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/read-pkg-up/download/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^5.0.0: + version "5.2.0" + resolved "https://registry.npm.taobao.org/read-pkg/download/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w= + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.1: + version "3.4.0" + resolved "https://registry.npm.taobao.org/readable-stream/download/readable-stream-3.4.0.tgz#a51c26754658e0a3c21dbf59163bd45ba6f447fc" + integrity sha1-pRwmdUZY4KPCHb9ZFjvUW6b0R/w= + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.npm.taobao.org/readdirp/download/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha1-DodiKjMlqjPokihcr4tOhGUppSU= + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regenerate-unicode-properties@^8.1.0: + version "8.1.0" + resolved "https://registry.npm.taobao.org/regenerate-unicode-properties/download/regenerate-unicode-properties-8.1.0.tgz#ef51e0f0ea4ad424b77bf7cb41f3e015c70a3f0e" + integrity sha1-71Hg8OpK1CS3e/fLQfPgFccKPw4= + dependencies: + regenerate "^1.4.0" + +regenerate@^1.2.1, regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.npm.taobao.org/regenerate/download/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha1-SoVuxLVuQHfFV1icroXnpMiGmhE= + +regenerator-runtime@^0.10.5: + version "0.10.5" + resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658" + integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg= + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk= + +regenerator-runtime@^0.13.2: + version "0.13.3" + resolved "https://registry.npm.taobao.org/regenerator-runtime/download/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" + integrity sha1-fPanfY9cb2Drc8X8GVWyzrAea/U= + +regenerator-transform@^0.14.0: + version "0.14.1" + resolved "https://registry.npm.taobao.org/regenerator-transform/download/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" + integrity sha1-Oy/OThq3cywI9mXf2zFHScfd0vs= + dependencies: + private "^0.1.6" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/regex-not/download/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw= + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp-tree@^0.1.6: + version "0.1.12" + resolved "https://registry.npm.taobao.org/regexp-tree/download/regexp-tree-0.1.12.tgz?cache=0&sync_timestamp=1566791066831&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexp-tree%2Fdownload%2Fregexp-tree-0.1.12.tgz#28eaaa6e66eeb3527c15108a3ff740d9e574e420" + integrity sha1-KOqqbmbus1J8FRCKP/dA2eV05CA= + +regexpp@^1.0.1: + version "1.1.0" + resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-1.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-1.1.0.tgz#0e3516dd0b7904f413d2d4193dce4618c3a689ab" + integrity sha1-DjUW3Qt5BPQT0tQZPc5GGMOmias= + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/regexpp/download/regexpp-2.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpp%2Fdownload%2Fregexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8= + +regexpu-core@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-1.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b" + integrity sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs= + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^4.5.4: + version "4.5.5" + resolved "https://registry.npm.taobao.org/regexpu-core/download/regexpu-core-4.5.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fregexpu-core%2Fdownload%2Fregexpu-core-4.5.5.tgz#aaffe61c2af58269b3e516b61a73790376326411" + integrity sha1-qv/mHCr1gmmz5Ra2GnN5A3YyZBE= + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.1.0" + regjsgen "^0.5.0" + regjsparser "^0.6.0" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.1.0" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + +regjsgen@^0.5.0: + version "0.5.0" + resolved "https://registry.npm.taobao.org/regjsgen/download/regjsgen-0.5.0.tgz#a7634dc08f89209c2049adda3525711fb97265dd" + integrity sha1-p2NNwI+JIJwgSa3aNSVxH7lyZd0= + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/regjsparser/download/regjsparser-0.6.0.tgz#f1e6ae8b7da2bae96c99399b868cd6c933a2ba9c" + integrity sha1-8eaui32iuulsmTmbhozWyTOiupw= + dependencies: + jsesc "~0.5.0" + +relateurl@0.2.x: + version "0.2.7" + resolved "https://registry.npm.taobao.org/relateurl/download/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.npm.taobao.org/remove-trailing-separator/download/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +renderkid@^2.0.1: + version "2.0.3" + resolved "https://registry.npm.taobao.org/renderkid/download/renderkid-2.0.3.tgz#380179c2ff5ae1365c522bf2fcfcff01c5b74149" + integrity sha1-OAF5wv9a4TZcUivy/Pz/AcW3QUk= + dependencies: + css-select "^1.1.0" + dom-converter "^0.2" + htmlparser2 "^3.3.0" + strip-ansi "^3.0.0" + utila "^0.4.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.npm.taobao.org/repeat-element/download/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4= + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npm.taobao.org/repeat-string/download/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/repeating/download/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +request-promise-core@1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/request-promise-core/download/request-promise-core-1.1.2.tgz#339f6aababcafdb31c799ff158700336301d3346" + integrity sha1-M59qq6vK/bMceZ/xWHADNjAdM0Y= + dependencies: + lodash "^4.17.11" + +request-promise-native@^1.0.7: + version "1.0.7" + resolved "https://registry.npm.taobao.org/request-promise-native/download/request-promise-native-1.0.7.tgz#a49868a624bdea5069f1251d0a836e0d89aa2c59" + integrity sha1-pJhopiS96lBp8SUdCoNuDYmqLFk= + dependencies: + request-promise-core "1.1.2" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.87.0, request@^2.88.0: + version "2.88.0" + resolved "https://registry.npm.taobao.org/request/download/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" + integrity sha1-nC/KT301tZLv5Xx/ClXoEFIST+8= + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.0" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.4.3" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/require-main-filename/download/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs= + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/require-uncached/download/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +reselect@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/reselect/download/reselect-3.0.1.tgz#efdaa98ea7451324d092b2b2163a6a1d7a9a2147" + integrity sha1-79qpjqdFEyTQkrKyFjpqHXqaIUc= + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/resolve-cwd/download/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/resolve-from/download/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/resolve-url/download/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1: + version "1.12.0" + resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.12.0.tgz?cache=0&sync_timestamp=1564641434608&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fresolve%2Fdownload%2Fresolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha1-P8ZEo1yEpIVUYJ/ybsUrZvpXffY= + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npm.taobao.org/ret/download/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w= + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.npm.taobao.org/retry/download/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs= + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/rgb-regex/download/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/rgba-regex/download/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@2, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w= + dependencies: + glob "^7.1.3" + +rimraf@2.6.3, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.npm.taobao.org/rimraf/download/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha1-stEE/g2Psnz54KHNqCYt04M8bKs= + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npm.taobao.org/ripemd160/download/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw= + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-async@^2.2.0: + version "2.3.0" + resolved "https://registry.npm.taobao.org/run-async/download/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/run-queue/download/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +rx-lite-aggregates@^4.0.8: + version "4.0.8" + resolved "https://registry.npm.taobao.org/rx-lite-aggregates/download/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" + integrity sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74= + dependencies: + rx-lite "*" + +rx-lite@*, rx-lite@^4.0.8: + version "4.0.8" + resolved "https://registry.npm.taobao.org/rx-lite/download/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" + integrity sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ= + +rxjs@^6.3.3, rxjs@^6.4.0: + version "6.5.2" + resolved "https://registry.npm.taobao.org/rxjs/download/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" + integrity sha1-LjXOgVzUbYTQKiCftOWSHgUdvsc= + dependencies: + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0= + +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha1-t02uxJsRSPiMZLaNSbHoFcHy9Rk= + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/safe-regex/download/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafer-buffer%2Fdownload%2Fsafer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= + +sass-graph@^2.2.4: + version "2.2.4" + resolved "https://registry.npm.taobao.org/sass-graph/download/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" + integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= + dependencies: + glob "^7.0.0" + lodash "^4.0.0" + scss-tokenizer "^0.2.3" + yargs "^7.0.0" + +sass-loader@^7.1.0: + version "7.3.1" + resolved "https://registry.npm.taobao.org/sass-loader/download/sass-loader-7.3.1.tgz?cache=0&sync_timestamp=1566309979922&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsass-loader%2Fdownload%2Fsass-loader-7.3.1.tgz#a5bf68a04bcea1c13ff842d747150f7ab7d0d23f" + integrity sha1-pb9ooEvOocE/+ELXRxUPerfQ0j8= + dependencies: + clone-deep "^4.0.1" + loader-utils "^1.0.1" + neo-async "^2.5.0" + pify "^4.0.1" + semver "^6.3.0" + +sax@^1.2.4, sax@~1.2.4: + version "1.2.4" + resolved "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha1-KBYjTiN4vdxOU1T6tcqold9xANk= + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/schema-utils/download/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A= + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +scss-tokenizer@^0.2.3: + version "0.2.3" + resolved "https://registry.npm.taobao.org/scss-tokenizer/download/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" + integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= + dependencies: + js-base64 "^2.1.8" + source-map "^0.4.2" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo= + +selfsigned@^1.10.4: + version "1.10.4" + resolved "https://registry.npm.taobao.org/selfsigned/download/selfsigned-1.10.4.tgz#cdd7eccfca4ed7635d47a08bf2d5d3074092e2cd" + integrity sha1-zdfsz8pO12NdR6CL8tXTB0CS4s0= + dependencies: + node-forge "0.7.5" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/semver-compare/download/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npm.taobao.org/semver/download/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha1-qVT5Ma66UI0we78Gnv8MAclhFvc= + +semver@^6.0.0, semver@^6.1.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npm.taobao.org/semver/download/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0= + +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.npm.taobao.org/semver/download/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= + +send@0.17.1: + version "0.17.1" + resolved "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg= + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^1.4.0, serialize-javascript@^1.7.0: + version "1.8.0" + resolved "https://registry.npm.taobao.org/serialize-javascript/download/serialize-javascript-1.8.0.tgz?cache=0&sync_timestamp=1566305537093&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fserialize-javascript%2Fdownload%2Fserialize-javascript-1.8.0.tgz#9515fc687232e2321aea1ca7a529476eb34bb480" + integrity sha1-lRX8aHIy4jIa6hynpSlHbrNLtIA= + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk= + dependencies: + accepts "~1.3.4" + batch "0.6.1" + debug "2.6.9" + escape-html "~1.0.3" + http-errors "~1.6.2" + mime-types "~2.1.17" + parseurl "~1.3.2" + +serve-static@1.14.1: + version "1.14.1" + resolved "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk= + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/set-blocking/download/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/set-value/download/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha1-oY1AUw5vB95CKMfe/kInr4ytAFs= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.npm.taobao.org/setimmediate/download/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz?cache=0&sync_timestamp=1563425414995&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsetprototypeof%2Fdownload%2Fsetprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM= + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npm.taobao.org/sha.js/download/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.npm.taobao.org/shallow-clone/download/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha1-jymBrZJTH1UDWwH7IwdppA4C76M= + dependencies: + kind-of "^6.0.2" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/shebang-regex/download/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@^1.6.1: + version "1.7.1" + resolved "https://registry.npm.taobao.org/shell-quote/download/shell-quote-1.7.1.tgz?cache=0&sync_timestamp=1565703322893&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fshell-quote%2Fdownload%2Fshell-quote-1.7.1.tgz#3161d969886fb14f9140c65245a5dd19b6f0b06b" + integrity sha1-MWHZaYhvsU+RQMZSRaXdGbbwsGs= + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/signal-exit/download/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-git@^1.85.0: + version "1.124.0" + resolved "https://registry.npm.taobao.org/simple-git/download/simple-git-1.124.0.tgz#10a73cc1af303832b5c11720d4256e134fba35ca" + integrity sha1-EKc8wa8wODK1wRcg1CVuE0+6Nco= + dependencies: + debug "^4.0.1" + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.npm.taobao.org/simple-swizzle/download/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/slash/download/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/slash/download/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha1-3lUoUaF1nfOo8gZTVEL17E3eq0Q= + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha1-BE8aSdiEL/MHqta1Be0Xi9lQE00= + dependencies: + is-fullwidth-code-point "^2.0.0" + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/slice-ansi/download/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY= + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/snapdragon-node/download/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha1-bBdfhv8UvbByRWPo88GwIaKGhTs= + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/snapdragon-util/download/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI= + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npm.taobao.org/snapdragon/download/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0= + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sockjs-client@1.3.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/sockjs-client/download/sockjs-client-1.3.0.tgz#12fc9d6cb663da5739d3dc5fb6e8687da95cb177" + integrity sha1-EvydbLZj2lc509xftuhofalcsXc= + dependencies: + debug "^3.2.5" + eventsource "^1.0.7" + faye-websocket "~0.11.1" + inherits "^2.0.3" + json3 "^3.3.2" + url-parse "^1.4.3" + +sockjs@0.3.19: + version "0.3.19" + resolved "https://registry.npm.taobao.org/sockjs/download/sockjs-0.3.19.tgz#d976bbe800af7bd20ae08598d582393508993c0d" + integrity sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0= + dependencies: + faye-websocket "^0.10.0" + uuid "^3.0.1" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/sort-keys/download/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.npm.taobao.org/source-list-map/download/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ= + +source-map-resolve@^0.5.0: + version "0.5.2" + resolved "https://registry.npm.taobao.org/source-map-resolve/download/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" + integrity sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk= + dependencies: + atob "^2.1.1" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.12: + version "0.5.13" + resolved "https://registry.npm.taobao.org/source-map-support/download/source-map-support-0.5.13.tgz?cache=0&sync_timestamp=1564565500102&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map-support%2Fdownload%2Fsource-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha1-MbJKnC5zwt6FBmwP631Edn7VKTI= + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.npm.taobao.org/source-map-url/download/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.4.2: + version "0.4.4" + resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.4.4.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" + integrity sha1-66T12pwNyZneaAMti092FzZSA2s= + dependencies: + amdefine ">=0.0.4" + +source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsource-map%2Fdownload%2Fsource-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM= + +spdx-correct@^3.0.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ= + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc= + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/spdx-expression-parse/download/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha1-meEZt6XaAOBUkcn6M4t5BII7QdA= + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ= + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/spdy-transport/download/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha1-ANSGOmQArXXfkzYaFghgXl3NzzE= + dependencies: + debug "^4.1.0" + detect-node "^2.0.4" + hpack.js "^2.1.6" + obuf "^1.1.2" + readable-stream "^3.0.6" + wbuf "^1.7.3" + +spdy@^4.0.1: + version "4.0.1" + resolved "https://registry.npm.taobao.org/spdy/download/spdy-4.0.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fspdy%2Fdownload%2Fspdy-4.0.1.tgz#6f12ed1c5db7ea4f24ebb8b89ba58c87c08257f2" + integrity sha1-bxLtHF236k8k67i4m6WMh8CCV/I= + dependencies: + debug "^4.1.0" + handle-thing "^2.0.0" + http-deceiver "^1.2.7" + select-hose "^2.0.0" + spdy-transport "^3.0.0" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npm.taobao.org/split-string/download/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha1-fLCd2jqGWFcFxks5pkZgOGguj+I= + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha1-+2YcC+8ps520B2nuOfpwCT1vaHc= + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^5.2.4: + version "5.3.0" + resolved "https://registry.npm.taobao.org/ssri/download/ssri-5.3.0.tgz#ba3872c9c6d33a0704a7d71ff045e5ec48999d06" + integrity sha1-ujhyycbTOgcEp9cf8EXl7EiZnQY= + dependencies: + safe-buffer "^5.1.1" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.npm.taobao.org/ssri/download/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg= + dependencies: + figgy-pudding "^3.5.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npm.taobao.org/stable/download/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88= + +stackframe@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/stackframe/download/stackframe-1.0.4.tgz#357b24a992f9427cba6b545d96a14ed2cbca187b" + integrity sha1-NXskqZL5Qny6a1RdlqFO0svKGHs= + +staged-git-files@1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/staged-git-files/download/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b" + integrity sha1-QybTOIbcns+immGTv1EbqQpGRUs= + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npm.taobao.org/static-extend/download/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stdout-stream@^1.4.0: + version "1.4.1" + resolved "https://registry.npm.taobao.org/stdout-stream/download/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" + integrity sha1-WsF0zdXNcmEEqgwLK9g4FdjVNd4= + dependencies: + readable-stream "^2.0.1" + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/stealthy-require/download/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs= + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.npm.taobao.org/stream-each/download/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha1-6+J6DDibBPvMIzZClS4Qcxr6m64= + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.npm.taobao.org/stream-http/download/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw= + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/stream-shift/download/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" + integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/strict-uri-encode/download/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-argv@^0.0.2: + version "0.0.2" + resolved "https://registry.npm.taobao.org/string-argv/download/string-argv-0.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-argv%2Fdownload%2Fstring-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" + integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.npm.taobao.org/string-width/download/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4= + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.npm.taobao.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha1-InZ74htirxCBV0MG9prFG2IgOWE= + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.padend@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/string.prototype.padend/download/string.prototype.padend-3.0.0.tgz#f3aaef7c1719f170c5eab1c32bf780d96e21f2f0" + integrity sha1-86rvfBcZ8XDF6rHDK/eA2W4h8vA= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + +string.prototype.padstart@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/string.prototype.padstart/download/string.prototype.padstart-3.0.0.tgz#5bcfad39f4649bb2d031292e19bcf0b510d4b242" + integrity sha1-W8+tOfRkm7LQMSkuGbzwtRDUskI= + dependencies: + define-properties "^1.1.2" + es-abstract "^1.4.3" + function-bind "^1.0.2" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4= + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g= + dependencies: + safe-buffer "~5.1.0" + +stringify-object@^3.2.2: + version "3.3.0" + resolved "https://registry.npm.taobao.org/stringify-object/download/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha1-cDBlrvyhkwDTzoivT1s5VtdVZik= + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.npm.taobao.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= + dependencies: + ansi-regex "^4.1.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/strip-bom/download/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/strip-eof/download/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/strip-final-newline/download/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0= + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/strip-indent/download/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/strip-indent/download/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + +strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.npm.taobao.org/stylehacks/download/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha1-Zxj8r00eB9ihMYaQiB6NlnJqcdU= + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha1-B2Srxpxj1ayELdSGfo0CXogN+PM= + dependencies: + has-flag "^3.0.0" + +svg-tags@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/svg-tags/download/svg-tags-1.0.0.tgz#58f71cee3bd519b59d4b2a843b6c7de64ac04764" + integrity sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q= + +svgo@^1.0.0: + version "1.3.0" + resolved "https://registry.npm.taobao.org/svgo/download/svgo-1.3.0.tgz#bae51ba95ded9a33a36b7c46ce9c359ae9154313" + integrity sha1-uuUbqV3tmjOja3xGzpw1mukVQxM= + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.33" + csso "^3.5.1" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-observable@^1.1.0: + version "1.2.0" + resolved "https://registry.npm.taobao.org/symbol-observable/download/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" + integrity sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ= + +synchronous-promise@^2.0.6: + version "2.0.9" + resolved "https://registry.npm.taobao.org/synchronous-promise/download/synchronous-promise-2.0.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsynchronous-promise%2Fdownload%2Fsynchronous-promise-2.0.9.tgz#b83db98e9e7ae826bf9c8261fd8ac859126c780a" + integrity sha1-uD25jp566Ca/nIJh/YrIWRJseAo= + +table@4.0.2: + version "4.0.2" + resolved "https://registry.npm.taobao.org/table/download/table-4.0.2.tgz#a33447375391e766ad34d3486e6e2aedc84d2e36" + integrity sha1-ozRHN1OR52atNNNIbm4q7chNLjY= + dependencies: + ajv "^5.2.3" + ajv-keywords "^2.1.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.npm.taobao.org/table/download/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha1-EpLRlQDOP4YFOwXw6Ofko7shB54= + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.npm.taobao.org/tapable/download/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha1-ofzMBrWNth/XpF2i2kT186Pme6I= + +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.npm.taobao.org/tar/download/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" + integrity sha1-DKiEhWLHKZuLRG/2pNYM27I+3EA= + dependencies: + block-stream "*" + fstream "^1.0.12" + inherits "2" + +tar@^4: + version "4.4.10" + resolved "https://registry.npm.taobao.org/tar/download/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha1-lGsoELml4LJhQM94vqawsNaJ66E= + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.5" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +terser-webpack-plugin@^1.2.3, terser-webpack-plugin@^1.4.1: + version "1.4.1" + resolved "https://registry.npm.taobao.org/terser-webpack-plugin/download/terser-webpack-plugin-1.4.1.tgz?cache=0&sync_timestamp=1564575178544&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fterser-webpack-plugin%2Fdownload%2Fterser-webpack-plugin-1.4.1.tgz#61b18e40eaee5be97e771cdbb10ed1280888c2b4" + integrity sha1-YbGOQOruW+l+dxzbsQ7RKAiIwrQ= + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^1.7.0" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^4.1.2: + version "4.2.1" + resolved "https://registry.npm.taobao.org/terser/download/terser-4.2.1.tgz#1052cfe17576c66e7bc70fcc7119f22b155bdac1" + integrity sha1-EFLP4XV2xm57xw/McRnyKxVb2sE= + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-table@^0.2.0, text-table@~0.2.0: + version "0.2.0" + resolved "https://registry.npm.taobao.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +thenify-all@^1.0.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/thenify-all/download/thenify-all-1.6.0.tgz#1a1918d402d8fc3f98fbf234db0bcc8cc10e9726" + integrity sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY= + dependencies: + thenify ">= 3.1.0 < 4" + +"thenify@>= 3.1.0 < 4": + version "3.3.0" + resolved "https://registry.npm.taobao.org/thenify/download/thenify-3.3.0.tgz#e69e38a1babe969b0108207978b9f62b88604839" + integrity sha1-5p44obq+lpsBCCB5eLn2K4hgSDk= + dependencies: + any-promise "^1.0.0" + +thread-loader@^2.1.2: + version "2.1.3" + resolved "https://registry.npm.taobao.org/thread-loader/download/thread-loader-2.1.3.tgz#cbd2c139fc2b2de6e9d28f62286ab770c1acbdda" + integrity sha1-y9LBOfwrLebp0o9iKGq3cMGsvdo= + dependencies: + loader-runner "^2.3.1" + loader-utils "^1.1.0" + neo-async "^2.6.0" + +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.npm.taobao.org/through2/download/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0= + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npm.taobao.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +thunky@^1.0.2: + version "1.0.3" + resolved "https://registry.npm.taobao.org/thunky/download/thunky-1.0.3.tgz#f5df732453407b09191dae73e2a8cc73f381a826" + integrity sha1-9d9zJFNAewkZHa5z4qjMc/OBqCY= + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.npm.taobao.org/timers-browserify/download/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8= + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/timsort/download/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tinycolor2@^1.4.1: + version "1.4.1" + resolved "https://registry.npm.taobao.org/tinycolor2/download/tinycolor2-1.4.1.tgz#f4fad333447bc0b07d4dc8e9209d8f39a8ac77e8" + integrity sha1-9PrTM0R7wLB9TcjpIJ2POaisd+g= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npm.taobao.org/tmp/download/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha1-bTQzWIl2jSGyvNoKonfO07G/rfk= + dependencies: + os-tmpdir "~1.0.2" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/to-arraybuffer/download/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/to-fast-properties/download/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npm.taobao.org/to-object-path/download/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npm.taobao.org/to-regex-range/download/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npm.taobao.org/to-regex/download/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4= + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM= + +toposort@^1.0.0: + version "1.0.7" + resolved "https://registry.npm.taobao.org/toposort/download/toposort-1.0.7.tgz#2e68442d9f64ec720b8cc89e6443ac6caa950029" + integrity sha1-LmhELZ9k7HILjMieZEOsbKqVACk= + +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.npm.taobao.org/toposort/download/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= + +tough-cookie@^2.3.3: + version "2.5.0" + resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha1-zZ+yoKodWhK0c72fuW+j3P9lreI= + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tough-cookie@~2.4.3: + version "2.4.3" + resolved "https://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" + integrity sha1-U/Nto/R3g7CSWvoG/587FlKA94E= + dependencies: + psl "^1.1.24" + punycode "^1.4.1" + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/trim-newlines/download/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/trim-right/download/trim-right-1.0.1.tgz?cache=0&sync_timestamp=1562845044600&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftrim-right%2Fdownload%2Ftrim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + +"true-case-path@^1.0.2": + version "1.0.3" + resolved "https://registry.npm.taobao.org/true-case-path/download/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" + integrity sha1-+BO1qMhrQNpZYGcisUTjIleZ9H0= + dependencies: + glob "^7.1.2" + +tryer@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/tryer/download/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" + integrity sha1-8shUBoALmw90yfdGW4HqrSQSUvg= + +tslib@^1.9.0: + version "1.10.0" + resolved "https://registry.npm.taobao.org/tslib/download/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo= + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npm.taobao.org/tty-browserify/download/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.npm.taobao.org/type-fest/download/type-fest-0.6.0.tgz?cache=0&sync_timestamp=1564840459932&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ftype-fest%2Fdownload%2Ftype-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha1-jSojcNPfiG61yQraHFv2GIrPg4s= + +type-is@~1.6.17, type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE= + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npm.taobao.org/typedarray/download/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +uglify-js@3.4.x: + version "3.4.10" + resolved "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.4.10.tgz?cache=0&sync_timestamp=1563943388956&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.4.10.tgz#9ad9563d8eb3acdfb8d38597d2af1d815f6a755f" + integrity sha1-mtlWPY6zrN+404WX0q8dgV9qdV8= + dependencies: + commander "~2.19.0" + source-map "~0.6.1" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/unicode-canonical-property-names-ecmascript/download/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha1-JhmADEyCWADv3YNDr33Zkzy+KBg= + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.npm.taobao.org/unicode-match-property-ecmascript/download/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw= + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.1.0: + version "1.1.0" + resolved "https://registry.npm.taobao.org/unicode-match-property-value-ecmascript/download/unicode-match-property-value-ecmascript-1.1.0.tgz#5b4b426e08d13a80365e0d657ac7a6c1ec46a277" + integrity sha1-W0tCbgjROoA2Xg1lesemwexGonc= + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.0.5" + resolved "https://registry.npm.taobao.org/unicode-property-aliases-ecmascript/download/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" + integrity sha1-qcxsx85joKMCP8meNBuUQx1AWlc= + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.npm.taobao.org/union-value/download/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/uniq/download/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/uniqs/download/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.0, unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/unique-filename/download/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA= + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.npm.taobao.org/unique-slug/download/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha1-uqvOkQg/xk6UWw861hPiZPfNTmw= + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY= + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.npm.taobao.org/unquote/download/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/unset-value/download/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.1.2" + resolved "https://registry.npm.taobao.org/upath/download/upath-1.1.2.tgz#3db658600edaeeccbe6db5e684d67ee8c2acd068" + integrity sha1-PbZYYA7a7sy+bbXmhNZ+6MKs0Gg= + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.npm.taobao.org/upper-case/download/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha1-lMVA4f93KVbiKZUHwBCupsiDjrA= + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.npm.taobao.org/urix/download/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-loader@^1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/url-loader/download/url-loader-1.1.2.tgz?cache=0&sync_timestamp=1563455134437&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-loader%2Fdownload%2Furl-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8" + integrity sha1-uXHRkbg69pPF4/6kBkvp4fLX+Ng= + dependencies: + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" + +url-parse@^1.4.3: + version "1.4.7" + resolved "https://registry.npm.taobao.org/url-parse/download/url-parse-1.4.7.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Furl-parse%2Fdownload%2Furl-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278" + integrity sha1-qKg1NejACjFuQDpdtKwbm4U64ng= + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.npm.taobao.org/use/download/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8= + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npm.taobao.org/util-deprecate/download/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@1.0.0, util.promisify@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/util.promisify/download/util.promisify-1.0.0.tgz#440f7165a459c9a16dc145eb8e72f35687097030" + integrity sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA= + dependencies: + define-properties "^1.1.2" + object.getownpropertydescriptors "^2.0.3" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.npm.taobao.org/util/download/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.npm.taobao.org/util/download/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE= + dependencies: + inherits "2.0.3" + +utila@^0.4.0, utila@~0.4: + version "0.4.0" + resolved "https://registry.npm.taobao.org/utila/download/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" + integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^3.0.1, uuid@^3.3.2: + version "3.3.3" + resolved "https://registry.npm.taobao.org/uuid/download/uuid-3.3.3.tgz?cache=0&sync_timestamp=1566221268624&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuuid%2Fdownload%2Fuuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" + integrity sha1-RWjwIW54dg7h2/Ok0s9T4iQRKGY= + +v-click-outside-x@^3.7.1: + version "3.7.1" + resolved "https://registry.npm.taobao.org/v-click-outside-x/download/v-click-outside-x-3.7.1.tgz#aa03eaa0e41e44cb5207dcf86c2d9f0dd64084c1" + integrity sha1-qgPqoOQeRMtSB9z4bC2fDdZAhME= + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha1-/JH2uce6FchX9MssXe/uw51PQQo= + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +vary@~1.1.2: + version "1.1.2" + resolved "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +vendors@^1.0.0: + version "1.0.3" + resolved "https://registry.npm.taobao.org/vendors/download/vendors-1.0.3.tgz#a6467781abd366217c050f8202e7e50cc9eef8c0" + integrity sha1-pkZ3gavTZiF8BQ+CAuflDMnu+MA= + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +view-design@^4.0.0: + version "4.0.2" + resolved "https://registry.npm.taobao.org/view-design/download/view-design-4.0.2.tgz#983450fb4fd0a56642dc13ebc7e585c0aae64fc8" + integrity sha1-mDRQ+0/QpWZC3BPrx+WFwKrmT8g= + dependencies: + async-validator "^1.10.0" + deepmerge "^2.2.1" + element-resize-detector "^1.2.0" + js-calendar "^1.2.3" + lodash.throttle "^4.1.1" + popper.js "^1.14.6" + tinycolor2 "^1.4.1" + v-click-outside-x "^3.7.1" + +vm-browserify@^1.0.1: + version "1.1.0" + resolved "https://registry.npm.taobao.org/vm-browserify/download/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" + integrity sha1-vXbWojMj4sqP+hICjcBFWcdfkBk= + +vue-eslint-parser@^2.0.3: + version "2.0.3" + resolved "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-2.0.3.tgz#c268c96c6d94cfe3d938a5f7593959b0ca3360d1" + integrity sha1-wmjJbG2Uz+PZOKX3WTlZsMozYNE= + dependencies: + debug "^3.1.0" + eslint-scope "^3.7.1" + eslint-visitor-keys "^1.0.0" + espree "^3.5.2" + esquery "^1.0.0" + lodash "^4.17.4" + +vue-eslint-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/vue-eslint-parser/download/vue-eslint-parser-5.0.0.tgz#00f4e4da94ec974b821a26ff0ed0f7a78402b8a1" + integrity sha1-APTk2pTsl0uCGib/DtD3p4QCuKE= + dependencies: + debug "^4.1.0" + eslint-scope "^4.0.0" + eslint-visitor-keys "^1.0.0" + espree "^4.1.0" + esquery "^1.0.1" + lodash "^4.17.11" + +vue-hot-reload-api@^2.3.0: + version "2.3.3" + resolved "https://registry.npm.taobao.org/vue-hot-reload-api/download/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf" + integrity sha1-J1b0bLMlgFTF9HI96K5+hzAqHM8= + +vue-loader@^15.7.0: + version "15.7.1" + resolved "https://registry.npm.taobao.org/vue-loader/download/vue-loader-15.7.1.tgz#6ccacd4122aa80f69baaac08ff295a62e3aefcfd" + integrity sha1-bMrNQSKqgPabqqwI/ylaYuOu/P0= + dependencies: + "@vue/component-compiler-utils" "^3.0.0" + hash-sum "^1.0.2" + loader-utils "^1.1.0" + vue-hot-reload-api "^2.3.0" + vue-style-loader "^4.1.0" + +vue-meditor@^2.0.2: + version "2.1.1" + resolved "https://registry.npm.taobao.org/vue-meditor/download/vue-meditor-2.1.1.tgz#ba02922cd4b392492cb0b8a0b5b76930b2af3117" + integrity sha1-ugKSLNSzkkkssLigtbdpMLKvMRc= + +vue-router@^3.0.3: + version "3.1.2" + resolved "https://registry.npm.taobao.org/vue-router/download/vue-router-3.1.2.tgz#2e0904703545dabdd42b2b7a2e617f02f99a1969" + integrity sha1-LgkEcDVF2r3UKyt6LmF/AvmaGWk= + +vue-style-loader@^4.1.0: + version "4.1.2" + resolved "https://registry.npm.taobao.org/vue-style-loader/download/vue-style-loader-4.1.2.tgz#dedf349806f25ceb4e64f3ad7c0a44fba735fcf8" + integrity sha1-3t80mAbyXOtOZPOtfApE+6c1/Pg= + dependencies: + hash-sum "^1.0.2" + loader-utils "^1.0.2" + +vue-template-compiler@^2.5.21: + version "2.6.10" + resolved "https://registry.npm.taobao.org/vue-template-compiler/download/vue-template-compiler-2.6.10.tgz#323b4f3495f04faa3503337a82f5d6507799c9cc" + integrity sha1-MjtPNJXwT6o1AzN6gvXWUHeZycw= + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + +vue-template-es2015-compiler@^1.9.0: + version "1.9.1" + resolved "https://registry.npm.taobao.org/vue-template-es2015-compiler/download/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" + integrity sha1-HuO8mhbsv1EYvjNLsV+cRvgvWCU= + +vue@^2.6.10: + version "2.6.10" + resolved "https://registry.npm.taobao.org/vue/download/vue-2.6.10.tgz#a72b1a42a4d82a721ea438d1b6bf55e66195c637" + integrity sha1-pysaQqTYKnIepDjRtr9V5mGVxjc= + +watchpack@^1.6.0: + version "1.6.0" + resolved "https://registry.npm.taobao.org/watchpack/download/watchpack-1.6.0.tgz#4bc12c2ebe8aa277a71f1d3f14d685c7b446cd00" + integrity sha1-S8EsLr6KonenHx0/FNaFx7RGzQA= + dependencies: + chokidar "^2.0.2" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.npm.taobao.org/wbuf/download/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha1-wdjRSTFtPqhShIiVy2oL/oh7h98= + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npm.taobao.org/wcwidth/download/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webpack-bundle-analyzer@^3.3.0: + version "3.4.1" + resolved "https://registry.npm.taobao.org/webpack-bundle-analyzer/download/webpack-bundle-analyzer-3.4.1.tgz#430544c7ba1631baccf673475ca8300cb74a3c47" + integrity sha1-QwVEx7oWMbrM9nNHXKgwDLdKPEc= + dependencies: + acorn "^6.0.7" + acorn-walk "^6.1.1" + bfj "^6.1.1" + chalk "^2.4.1" + commander "^2.18.0" + ejs "^2.6.1" + express "^4.16.3" + filesize "^3.6.1" + gzip-size "^5.0.0" + lodash "^4.17.15" + mkdirp "^0.5.1" + opener "^1.5.1" + ws "^6.0.0" + +webpack-chain@^4.11.0: + version "4.12.1" + resolved "https://registry.npm.taobao.org/webpack-chain/download/webpack-chain-4.12.1.tgz#6c8439bbb2ab550952d60e1ea9319141906c02a6" + integrity sha1-bIQ5u7KrVQlS1g4eqTGRQZBsAqY= + dependencies: + deepmerge "^1.5.2" + javascript-stringify "^1.6.0" + +webpack-dev-middleware@^3.7.0: + version "3.7.0" + resolved "https://registry.npm.taobao.org/webpack-dev-middleware/download/webpack-dev-middleware-3.7.0.tgz#ef751d25f4e9a5c8a35da600c5fda3582b5c6cff" + integrity sha1-73UdJfTppcijXaYAxf2jWCtcbP8= + dependencies: + memory-fs "^0.4.1" + mime "^2.4.2" + range-parser "^1.2.1" + webpack-log "^2.0.0" + +webpack-dev-server@^3.4.1: + version "3.8.0" + resolved "https://registry.npm.taobao.org/webpack-dev-server/download/webpack-dev-server-3.8.0.tgz?cache=0&sync_timestamp=1565370754455&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-dev-server%2Fdownload%2Fwebpack-dev-server-3.8.0.tgz#06cc4fc2f440428508d0e9770da1fef10e5ef28d" + integrity sha1-BsxPwvRAQoUI0Ol3DaH+8Q5e8o0= + dependencies: + ansi-html "0.0.7" + bonjour "^3.5.0" + chokidar "^2.1.6" + compression "^1.7.4" + connect-history-api-fallback "^1.6.0" + debug "^4.1.1" + del "^4.1.1" + express "^4.17.1" + html-entities "^1.2.1" + http-proxy-middleware "^0.19.1" + import-local "^2.0.0" + internal-ip "^4.3.0" + ip "^1.1.5" + is-absolute-url "^3.0.0" + killable "^1.0.1" + loglevel "^1.6.3" + opn "^5.5.0" + p-retry "^3.0.1" + portfinder "^1.0.21" + schema-utils "^1.0.0" + selfsigned "^1.10.4" + semver "^6.3.0" + serve-index "^1.9.1" + sockjs "0.3.19" + sockjs-client "1.3.0" + spdy "^4.0.1" + strip-ansi "^3.0.1" + supports-color "^6.1.0" + url "^0.11.0" + webpack-dev-middleware "^3.7.0" + webpack-log "^2.0.0" + ws "^6.2.1" + yargs "12.0.5" + +webpack-log@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/webpack-log/download/webpack-log-2.0.0.tgz?cache=0&sync_timestamp=1564684394562&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-log%2Fdownload%2Fwebpack-log-2.0.0.tgz#5b7928e0637593f119d32f6227c1e0ac31e1b47f" + integrity sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8= + dependencies: + ansi-colors "^3.0.0" + uuid "^3.3.2" + +webpack-merge@^4.2.1: + version "4.2.1" + resolved "https://registry.npm.taobao.org/webpack-merge/download/webpack-merge-4.2.1.tgz#5e923cf802ea2ace4fd5af1d3247368a633489b4" + integrity sha1-XpI8+ALqKs5P1a8dMkc2imM0ibQ= + dependencies: + lodash "^4.17.5" + +webpack-sources@^1.1.0, webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.npm.taobao.org/webpack-sources/download/webpack-sources-1.4.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwebpack-sources%2Fdownload%2Fwebpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha1-7t2OwLko+/HL/plOItLYkPMwqTM= + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@^4.0.0: + version "4.39.2" + resolved "https://registry.npm.taobao.org/webpack/download/webpack-4.39.2.tgz#c9aa5c1776d7c309d1b3911764f0288c8c2816aa" + integrity sha1-yapcF3bXwwnRs5EXZPAojIwoFqo= + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.1" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +websocket-driver@>=0.5.1: + version "0.7.3" + resolved "https://registry.npm.taobao.org/websocket-driver/download/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" + integrity sha1-otTg1PTxFvHmKX66WLBdQwEA6fk= + dependencies: + http-parser-js ">=0.4.0 <0.4.11" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.3" + resolved "https://registry.npm.taobao.org/websocket-extensions/download/websocket-extensions-0.1.3.tgz#5d2ff22977003ec687a4b87073dfbbac146ccf29" + integrity sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk= + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/which-module/download/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/which-module/download/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@1, which@^1.2.10, which@^1.2.9: + version "1.3.1" + resolved "https://registry.npm.taobao.org/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo= + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.npm.taobao.org/wide-align/download/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha1-rgdOa9wMFKQx6ATmJFScYzsABFc= + dependencies: + string-width "^1.0.2 || 2" + +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.npm.taobao.org/worker-farm/download/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha1-JqlMU5G7ypJhUgAvabhKS/dy5ag= + dependencies: + errno "~0.1.7" + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.npm.taobao.org/wrap-ansi/download/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha1-H9H2cjXVttD+54EFYAG/tpTAOwk= + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npm.taobao.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.npm.taobao.org/write/download/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM= + dependencies: + mkdirp "^0.5.1" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.npm.taobao.org/write/download/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + +ws@^6.0.0, ws@^6.2.1: + version "6.2.1" + resolved "https://registry.npm.taobao.org/ws/download/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha1-RC/fCkftZPWbal2P8TD0dI7VJPs= + dependencies: + async-limiter "~1.0.0" + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q= + +y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.npm.taobao.org/y18n/download/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +"y18n@^3.2.1 || ^4.0.0", y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.npm.taobao.org/y18n/download/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha1-le+U+F7MgdAHwmThkKEg8KPIVms= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: + version "3.0.3" + resolved "https://registry.npm.taobao.org/yallist/download/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha1-tLBJ4xS+VF486AIjbWzSLNkcPek= + +yargs-parser@^11.1.1: + version "11.1.1" + resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" + integrity sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ= + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^13.1.1: + version "13.1.1" + resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-13.1.1.tgz#d26058532aa06d365fe091f6a1fc06b2f7e5eca0" + integrity sha1-0mBYUyqgbTZf4JH2ofwGsvfl7KA= + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.npm.taobao.org/yargs-parser/download/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" + integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + dependencies: + camelcase "^3.0.0" + +yargs@12.0.5: + version "12.0.5" + resolved "https://registry.npm.taobao.org/yargs/download/yargs-12.0.5.tgz#05f5997b609647b64f66b81e3b4b10a368e7ad13" + integrity sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM= + dependencies: + cliui "^4.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^1.0.1" + os-locale "^3.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1 || ^4.0.0" + yargs-parser "^11.1.1" + +yargs@^13.0.0: + version "13.3.0" + resolved "https://registry.npm.taobao.org/yargs/download/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" + integrity sha1-TGV6VeB+Xyz5R/ijZlZ8BKDe3IM= + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.1" + +yargs@^7.0.0: + version "7.1.0" + resolved "https://registry.npm.taobao.org/yargs/download/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" + integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.0" + +yorkie@^2.0.0: + version "2.0.0" + resolved "https://registry.npm.taobao.org/yorkie/download/yorkie-2.0.0.tgz#92411912d435214e12c51c2ae1093e54b6bb83d9" + integrity sha1-kkEZEtQ1IU4SxRwq4Qk+VLa7g9k= + dependencies: + execa "^0.8.0" + is-ci "^1.0.10" + normalize-path "^1.0.0" + strip-indent "^2.0.0" + +yup@^0.27.0: + version "0.27.0" + resolved "https://registry.npm.taobao.org/yup/download/yup-0.27.0.tgz#f8cb198c8e7dd2124beddc2457571329096b06e7" + integrity sha1-+MsZjI590hJL7dwkV1cTKQlrBuc= + dependencies: + "@babel/runtime" "^7.0.0" + fn-name "~2.0.1" + lodash "^4.17.11" + property-expr "^1.5.0" + synchronous-promise "^2.0.6" + toposort "^2.0.2" + +zrender@4.0.7: + version "4.0.7" + resolved "https://registry.npm.taobao.org/zrender/download/zrender-4.0.7.tgz#15ae960822f5efed410995d37e5107fe3de10e6d" + integrity sha1-Fa6WCCL17+1BCZXTflEH/j3hDm0=