Full Code of macrozheng/mall-admin-web for AI

master d59ba4a0131c cached
246 files
1.8 MB
617.1k tokens
863 symbols
1 requests
Download .txt
Showing preview only (1,983K chars total). Download the full file or copy to clipboard to get everything.
Repository: macrozheng/mall-admin-web
Branch: master
Commit: d59ba4a0131c
Files: 246
Total size: 1.8 MB

Directory structure:
gitextract_9pueadna/

├── .editorconfig
├── .gitattributes
├── .gitignore
├── .prettierrc
├── .vscode/
│   └── extensions.json
├── LICENSE
├── README.md
├── auto-imports.d.ts
├── components.d.ts
├── env.d.ts
├── eslint.config.ts
├── index.html
├── package.json
├── public/
│   └── tinymce6.8.6/
│       ├── langs/
│       │   └── zh_CN.js
│       ├── license.txt
│       ├── notices.txt
│       ├── plugins/
│       │   ├── emoticons/
│       │   │   └── js/
│       │   │       ├── emojiimages.js
│       │   │       └── emojis.js
│       │   └── help/
│       │       └── js/
│       │           └── i18n/
│       │               └── keynav/
│       │                   ├── ar.js
│       │                   ├── bg_BG.js
│       │                   ├── ca.js
│       │                   ├── cs.js
│       │                   ├── da.js
│       │                   ├── de.js
│       │                   ├── el.js
│       │                   ├── en.js
│       │                   ├── es.js
│       │                   ├── eu.js
│       │                   ├── fa.js
│       │                   ├── fi.js
│       │                   ├── fr_FR.js
│       │                   ├── he_IL.js
│       │                   ├── hi.js
│       │                   ├── hr.js
│       │                   ├── hu_HU.js
│       │                   ├── id.js
│       │                   ├── it.js
│       │                   ├── ja.js
│       │                   ├── kk.js
│       │                   ├── ko_KR.js
│       │                   ├── ms.js
│       │                   ├── nb_NO.js
│       │                   ├── nl.js
│       │                   ├── pl.js
│       │                   ├── pt_BR.js
│       │                   ├── pt_PT.js
│       │                   ├── ro.js
│       │                   ├── ru.js
│       │                   ├── sk.js
│       │                   ├── sl_SI.js
│       │                   ├── sv_SE.js
│       │                   ├── th_TH.js
│       │                   ├── tr.js
│       │                   ├── uk.js
│       │                   ├── vi.js
│       │                   ├── zh_CN.js
│       │                   └── zh_TW.js
│       ├── skins/
│       │   ├── content/
│       │   │   ├── dark/
│       │   │   │   └── content.js
│       │   │   ├── default/
│       │   │   │   └── content.js
│       │   │   ├── document/
│       │   │   │   └── content.js
│       │   │   ├── tinymce-5/
│       │   │   │   └── content.js
│       │   │   ├── tinymce-5-dark/
│       │   │   │   └── content.js
│       │   │   └── writer/
│       │   │       └── content.js
│       │   └── ui/
│       │       ├── oxide/
│       │       │   ├── content.inline.js
│       │       │   ├── content.js
│       │       │   ├── skin.js
│       │       │   └── skin.shadowdom.js
│       │       ├── oxide-dark/
│       │       │   ├── content.inline.js
│       │       │   ├── content.js
│       │       │   ├── skin.js
│       │       │   └── skin.shadowdom.js
│       │       ├── tinymce-5/
│       │       │   ├── content.inline.js
│       │       │   ├── content.js
│       │       │   ├── skin.js
│       │       │   └── skin.shadowdom.js
│       │       └── tinymce-5-dark/
│       │           ├── content.inline.js
│       │           ├── content.js
│       │           ├── skin.js
│       │           └── skin.shadowdom.js
│       └── tinymce.d.ts
├── src/
│   ├── App.vue
│   ├── apis/
│   │   ├── admin.ts
│   │   ├── brand.ts
│   │   ├── companyAddress.ts
│   │   ├── coupon.ts
│   │   ├── flash.ts
│   │   ├── flashProductRelation.ts
│   │   ├── flashSession.ts
│   │   ├── homeAdvertise.ts
│   │   ├── homeBrand.ts
│   │   ├── homeSubject.ts
│   │   ├── memberLevel.ts
│   │   ├── menu.ts
│   │   ├── newProduct.ts
│   │   ├── order.ts
│   │   ├── orderSetting.ts
│   │   ├── oss.ts
│   │   ├── prefrenceArea.ts
│   │   ├── product.ts
│   │   ├── productAttr.ts
│   │   ├── productAttrCate.ts
│   │   ├── productCate.ts
│   │   ├── recommendProduct.ts
│   │   ├── resource.ts
│   │   ├── resourceCategory.ts
│   │   ├── returnApply.ts
│   │   ├── returnReason.ts
│   │   ├── role.ts
│   │   ├── skuStock.ts
│   │   └── subject.ts
│   ├── components/
│   │   ├── Breadcrumb/
│   │   │   └── index.vue
│   │   ├── Hamburger/
│   │   │   └── index.vue
│   │   ├── ScrollBar/
│   │   │   └── index.vue
│   │   ├── SvgIcon/
│   │   │   └── index.vue
│   │   ├── Tinymce/
│   │   │   └── index.vue
│   │   └── Upload/
│   │       ├── multiUpload.vue
│   │       └── singleUpload.vue
│   ├── icons/
│   │   └── index.ts
│   ├── main.ts
│   ├── router/
│   │   ├── guard.ts
│   │   └── index.ts
│   ├── stores/
│   │   ├── app.ts
│   │   ├── counter.ts
│   │   ├── order.ts
│   │   ├── permission.ts
│   │   └── user.ts
│   ├── styles/
│   │   ├── element/
│   │   │   └── index.scss
│   │   ├── element-ui.scss
│   │   ├── index.scss
│   │   ├── mixin.scss
│   │   ├── sidebar.scss
│   │   ├── transition.scss
│   │   ├── var.scss
│   │   └── variables.scss
│   ├── types/
│   │   ├── admin.d.ts
│   │   ├── brand.d.ts
│   │   ├── common.d.ts
│   │   ├── companyAddress.d.ts
│   │   ├── coupon.d.ts
│   │   ├── flash.d.ts
│   │   ├── homeAdvertist.d.ts
│   │   ├── homeBrand.d.ts
│   │   ├── homeSubject.d.ts
│   │   ├── memberLevel.d.ts
│   │   ├── menu.d.ts
│   │   ├── newProduct.d.ts
│   │   ├── order.d.ts
│   │   ├── orderSetting.d.ts
│   │   ├── oss.d.ts
│   │   ├── prefrenceArea.d.ts
│   │   ├── product.d.ts
│   │   ├── productAttr.d.ts
│   │   ├── productCate.d.ts
│   │   ├── recommendProduct.d.ts
│   │   ├── resource.d.ts
│   │   ├── returnApply.d.ts
│   │   ├── returnReason.d.ts
│   │   ├── role.d.ts
│   │   ├── router.d.ts
│   │   ├── skuStock.d.ts
│   │   └── subject.d.ts
│   ├── utils/
│   │   ├── constant.ts
│   │   ├── cookie.ts
│   │   ├── datetime.ts
│   │   ├── http.ts
│   │   └── validate.ts
│   └── views/
│       ├── home/
│       │   └── index.vue
│       ├── layout/
│       │   ├── Layout.vue
│       │   ├── components/
│       │   │   ├── AppMain.vue
│       │   │   ├── Navbar.vue
│       │   │   └── Sidebar/
│       │   │       ├── SidebarItem.vue
│       │   │       └── index.vue
│       │   └── composables/
│       │       └── useResizeHandler.ts
│       ├── normal/
│       │   ├── 404/
│       │   │   └── index.vue
│       │   ├── link/
│       │   │   └── index.vue
│       │   └── login/
│       │       └── index.vue
│       ├── oms/
│       │   ├── apply/
│       │   │   ├── applyDetail.vue
│       │   │   ├── index.vue
│       │   │   └── reason.vue
│       │   └── order/
│       │       ├── components/
│       │       │   └── logisticsDialog.vue
│       │       ├── deliverOrderList.vue
│       │       ├── index.vue
│       │       ├── orderDetail.vue
│       │       └── setting.vue
│       ├── pms/
│       │   ├── brand/
│       │   │   ├── add.vue
│       │   │   ├── components/
│       │   │   │   └── BrandDetail.vue
│       │   │   ├── index.vue
│       │   │   └── update.vue
│       │   ├── product/
│       │   │   ├── add.vue
│       │   │   ├── components/
│       │   │   │   ├── ProductAttrDetail.vue
│       │   │   │   ├── ProductDetail.vue
│       │   │   │   ├── ProductInfoDetail.vue
│       │   │   │   ├── ProductRelationDetail.vue
│       │   │   │   └── ProductSaleDetail.vue
│       │   │   ├── index.vue
│       │   │   └── update.vue
│       │   ├── productAttr/
│       │   │   ├── addProductAttr.vue
│       │   │   ├── components/
│       │   │   │   └── ProductAttrDetail.vue
│       │   │   ├── index.vue
│       │   │   ├── productAttrList.vue
│       │   │   └── updateProductAttr.vue
│       │   └── productCate/
│       │       ├── add.vue
│       │       ├── components/
│       │       │   └── ProductCateDetail.vue
│       │       ├── index.vue
│       │       └── update.vue
│       ├── sms/
│       │   ├── advertise/
│       │   │   ├── add.vue
│       │   │   ├── components/
│       │   │   │   └── HomeAdvertiseDetail.vue
│       │   │   ├── index.vue
│       │   │   └── update.vue
│       │   ├── brand/
│       │   │   └── index.vue
│       │   ├── coupon/
│       │   │   ├── add.vue
│       │   │   ├── components/
│       │   │   │   └── CouponDetail.vue
│       │   │   ├── history.vue
│       │   │   ├── index.vue
│       │   │   └── update.vue
│       │   ├── flash/
│       │   │   ├── index.vue
│       │   │   ├── productRelationList.vue
│       │   │   ├── selectSessionList.vue
│       │   │   └── sessionList.vue
│       │   ├── hot/
│       │   │   └── index.vue
│       │   ├── new/
│       │   │   └── index.vue
│       │   └── subject/
│       │       └── index.vue
│       ├── test/
│       │   ├── axios/
│       │   │   └── index.vue
│       │   ├── element/
│       │   │   └── index.vue
│       │   ├── index.vue
│       │   ├── pinia/
│       │   │   └── index.vue
│       │   └── vrouter/
│       │       ├── category/
│       │       │   └── index.vue
│       │       ├── home/
│       │       │   └── index.vue
│       │       ├── layout/
│       │       │   ├── components/
│       │       │   │   ├── LayoutFooter.vue
│       │       │   │   └── LayoutHeader.vue
│       │       │   └── index.vue
│       │       └── login/
│       │           └── index.vue
│       └── ums/
│           ├── admin/
│           │   └── index.vue
│           ├── menu/
│           │   ├── add.vue
│           │   ├── components/
│           │   │   └── MenuDetail.vue
│           │   ├── index.vue
│           │   └── update.vue
│           ├── resource/
│           │   ├── categoryList.vue
│           │   └── index.vue
│           └── role/
│               ├── allocMenu.vue
│               ├── allocResource.vue
│               └── index.vue
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}]
charset = utf-8
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = lf
max_line_length = 100


================================================
FILE: .gitattributes
================================================
* text=auto eol=lf


================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
.DS_Store
dist
dist-ssr
coverage
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

*.tsbuildinfo

.eslintcache

# Cypress
/cypress/videos/
/cypress/screenshots/

# Vitest
__screenshots__/


================================================
FILE: .prettierrc
================================================
{
  "singleQuote": true,
  "semi": false,
  "tabWidth": 2,
  "printWidth": 100,
  "trailingComma": "all",
  "endOfLine": "auto",
  "arrowParens": "avoid"
}


================================================
FILE: .vscode/extensions.json
================================================
{
  "recommendations": [
    "Vue.volar",
    "dbaeumer.vscode-eslint",
    "EditorConfig.EditorConfig",
    "esbenp.prettier-vscode",
    "noxussj.element-plus",
    "christian-kohler.path-intellisense",
    "vscode-icons-team.vscode-icons"
  ]
}


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1.  Definitions.

    "License" shall mean the terms and conditions for use, reproduction,
    and distribution as defined by Sections 1 through 9 of this document.

    "Licensor" shall mean the copyright owner or entity authorized by
    the copyright owner that is granting the License.

    "Legal Entity" shall mean the union of the acting entity and all
    other entities that control, are controlled by, or are under common
    control with that entity. For the purposes of this definition,
    "control" means (i) the power, direct or indirect, to cause the
    direction or management of such entity, whether by contract or
    otherwise, or (ii) ownership of fifty percent (50%) or more of the
    outstanding shares, or (iii) beneficial ownership of such entity.

    "You" (or "Your") shall mean an individual or Legal Entity
    exercising permissions granted by this License.

    "Source" form shall mean the preferred form for making modifications,
    including but not limited to software source code, documentation
    source, and configuration files.

    "Object" form shall mean any form resulting from mechanical
    transformation or translation of a Source form, including but
    not limited to compiled object code, generated documentation,
    and conversions to other media types.

    "Work" shall mean the work of authorship, whether in Source or
    Object form, made available under the License, as indicated by a
    copyright notice that is included in or attached to the work
    (an example is provided in the Appendix below).

    "Derivative Works" shall mean any work, whether in Source or Object
    form, that is based on (or derived from) the Work and for which the
    editorial revisions, annotations, elaborations, or other modifications
    represent, as a whole, an original work of authorship. For the purposes
    of this License, Derivative Works shall not include works that remain
    separable from, or merely link (or bind by name) to the interfaces of,
    the Work and Derivative Works thereof.

    "Contribution" shall mean any work of authorship, including
    the original version of the Work and any modifications or additions
    to that Work or Derivative Works thereof, that is intentionally
    submitted to Licensor for inclusion in the Work by the copyright owner
    or by an individual or Legal Entity authorized to submit on behalf of
    the copyright owner. For the purposes of this definition, "submitted"
    means any form of electronic, verbal, or written communication sent
    to the Licensor or its representatives, including but not limited to
    communication on electronic mailing lists, source code control systems,
    and issue tracking systems that are managed by, or on behalf of, the
    Licensor for the purpose of discussing and improving the Work, but
    excluding communication that is conspicuously marked or otherwise
    designated in writing by the copyright owner as "Not a Contribution."

    "Contributor" shall mean Licensor and any individual or Legal Entity
    on behalf of whom a Contribution has been received by Licensor and
    subsequently incorporated within the Work.

2.  Grant of Copyright License. Subject to the terms and conditions of
    this License, each Contributor hereby grants to You a perpetual,
    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    copyright license to reproduce, prepare Derivative Works of,
    publicly display, publicly perform, sublicense, and distribute the
    Work and such Derivative Works in Source or Object form.

3.  Grant of Patent License. Subject to the terms and conditions of
    this License, each Contributor hereby grants to You a perpetual,
    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
    (except as stated in this section) patent license to make, have made,
    use, offer to sell, sell, import, and otherwise transfer the Work,
    where such license applies only to those patent claims licensable
    by such Contributor that are necessarily infringed by their
    Contribution(s) alone or by combination of their Contribution(s)
    with the Work to which such Contribution(s) was submitted. If You
    institute patent litigation against any entity (including a
    cross-claim or counterclaim in a lawsuit) alleging that the Work
    or a Contribution incorporated within the Work constitutes direct
    or contributory patent infringement, then any patent licenses
    granted to You under this License for that Work shall terminate
    as of the date such litigation is filed.

4.  Redistribution. You may reproduce and distribute copies of the
    Work or Derivative Works thereof in any medium, with or without
    modifications, and in Source or Object form, provided that You
    meet the following conditions:

    (a) You must give any other recipients of the Work or
    Derivative Works a copy of this License; and

    (b) You must cause any modified files to carry prominent notices
    stating that You changed the files; and

    (c) You must retain, in the Source form of any Derivative Works
    that You distribute, all copyright, patent, trademark, and
    attribution notices from the Source form of the Work,
    excluding those notices that do not pertain to any part of
    the Derivative Works; and

    (d) If the Work includes a "NOTICE" text file as part of its
    distribution, then any Derivative Works that You distribute must
    include a readable copy of the attribution notices contained
    within such NOTICE file, excluding those notices that do not
    pertain to any part of the Derivative Works, in at least one
    of the following places: within a NOTICE text file distributed
    as part of the Derivative Works; within the Source form or
    documentation, if provided along with the Derivative Works; or,
    within a display generated by the Derivative Works, if and
    wherever such third-party notices normally appear. The contents
    of the NOTICE file are for informational purposes only and
    do not modify the License. You may add Your own attribution
    notices within Derivative Works that You distribute, alongside
    or as an addendum to the NOTICE text from the Work, provided
    that such additional attribution notices cannot be construed
    as modifying the License.

    You may add Your own copyright statement to Your modifications and
    may provide additional or different license terms and conditions
    for use, reproduction, or distribution of Your modifications, or
    for any such Derivative Works as a whole, provided Your use,
    reproduction, and distribution of the Work otherwise complies with
    the conditions stated in this License.

5.  Submission of Contributions. Unless You explicitly state otherwise,
    any Contribution intentionally submitted for inclusion in the Work
    by You to the Licensor shall be under the terms and conditions of
    this License, without any additional terms or conditions.
    Notwithstanding the above, nothing herein shall supersede or modify
    the terms of any separate license agreement you may have executed
    with Licensor regarding such Contributions.

6.  Trademarks. This License does not grant permission to use the trade
    names, trademarks, service marks, or product names of the Licensor,
    except as required for reasonable and customary use in describing the
    origin of the Work and reproducing the content of the NOTICE file.

7.  Disclaimer of Warranty. Unless required by applicable law or
    agreed to in writing, Licensor provides the Work (and each
    Contributor provides its Contributions) on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
    implied, including, without limitation, any warranties or conditions
    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
    PARTICULAR PURPOSE. You are solely responsible for determining the
    appropriateness of using or redistributing the Work and assume any
    risks associated with Your exercise of permissions under this License.

8.  Limitation of Liability. In no event and under no legal theory,
    whether in tort (including negligence), contract, or otherwise,
    unless required by applicable law (such as deliberate and grossly
    negligent acts) or agreed to in writing, shall any Contributor be
    liable to You for damages, including any direct, indirect, special,
    incidental, or consequential damages of any character arising as a
    result of this License or out of the use or inability to use the
    Work (including but not limited to damages for loss of goodwill,
    work stoppage, computer failure or malfunction, or any and all
    other commercial damages or losses), even if such Contributor
    has been advised of the possibility of such damages.

9.  Accepting Warranty or Additional Liability. While redistributing
    the Work or Derivative Works thereof, You may choose to offer,
    and charge a fee for, acceptance of support, warranty, indemnity,
    or other liability obligations and/or rights consistent with this
    License. However, in accepting such obligations, You may act only
    on Your own behalf and on Your sole responsibility, not on behalf
    of any other Contributor, and only if You agree to indemnify,
    defend, and hold each Contributor harmless for any liability
    incurred by, or claims asserted against, such Contributor by reason
    of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

Copyright [2018-2026] [macrozheng]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


================================================
FILE: README.md
================================================
# mall-admin-web

<p>
  <a href="#公众号"><img src="http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/badge/%E5%85%AC%E4%BC%97%E5%8F%B7-macrozheng-blue.svg" alt="公众号"></a>
  <a href="#公众号"><img src="http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/badge/%E4%BA%A4%E6%B5%81-%E5%BE%AE%E4%BF%A1%E7%BE%A4-2BA245.svg" alt="交流"></a>
  <a href="https://github.com/macrozheng/mall"><img src="http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/badge/%E5%90%8E%E5%8F%B0%E9%A1%B9%E7%9B%AE-mall-blue.svg" alt="后台项目"></a>
  <a href="https://github.com/macrozheng/mall-swarm"><img src="http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/badge/Cloud%E7%89%88%E6%9C%AC-mall--swarm-brightgreen.svg" alt="SpringCloud版本"></a>
  <a href="https://gitee.com/macrozheng/mall-admin-web"><img src="http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/badge/%E7%A0%81%E4%BA%91-%E9%A1%B9%E7%9B%AE%E5%9C%B0%E5%9D%80-orange.svg" alt="码云"></a>
</p>

## 友情提示

> 1. **快速体验项目**:[在线访问地址](https://www.macrozheng.com/admin/index.html) 。
> 2. **全套学习教程**:[《mall学习教程》](https://www.macrozheng.com) 。
> 3. **分支说明**:`master`分支基于Vue3+Element-Plus,`dev-v2`分支基于Vue2+Element。

## 前言

该项目为前后端分离项目的前端部分,后端项目`mall`地址:[传送门](https://github.com/macrozheng/mall) 。

## 项目介绍

`mall-admin-web`是一个电商后台管理系统的前端项目,基于Vue3+Element-Plus实现。主要包括商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等功能。

### 项目演示

项目在线演示地址:[https://www.macrozheng.com/admin/](https://www.macrozheng.com/admin/)

![后台管理系统功能演示](http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/project/mall_admin_show.png)

### 技术选型

| 技术                        | 说明                  | 官网                                                    |
| --------------------------- | --------------------- | ------------------------------------------------------- |
| Vue                         | 前端框架              | https://cn.vuejs.org/                                   |
| Element Plus                | 前端UI框架            | https://element-plus.org/                               |
| Vue Router                  | 路由框架              | https://router.vuejs.org/                               |
| Pinia                       | 全局状态管理框架      | https://pinia.vuejs.org/                                |
| Pinia Plugin Persistedstate | Pinia持久化插件       | https://prazdevs.github.io/pinia-plugin-persistedstate/ |
| Axios                       | 前端HTTP框架          | https://github.com/axios/axios                          |
| vue-charts                  | 基于Echarts的图表框架 | https://github.com/ecomfe/vue-echarts                   |
| TinyMCE Vue                 | 富文本编辑器          | https://github.com/tinymce/tinymce-vue                  |
| Js-cookie                   | cookie管理工具        | https://github.com/js-cookie/js-cookie                  |
| vue-element-admin           | 项目脚手架            | https://github.com/PanJiaChen/vue-element-admin         |

### 项目布局

```lua
src -- 源码目录
├── apis -- axios网络请求接口定义
├── assets -- 静态图片资源文件
├── components -- 通用组件封装
├── icons -- svg矢量图片文件
├── router -- vue-router路由配置
├── store -- pinia的状态管理
├── styles -- 全局css样式
├── types -- 类型定义
├── utils -- 工具类
└── views -- 前端页面
    ├── home -- 首页
    ├── layout -- 通用页面框架
    ├── normal -- 常用页面(login和404)
    ├── oms -- 订单模块页面
    ├── pms -- 商品模块页面
    ├── sms -- 商品模块页面
    └── ums -- 用户模块页面
```

## 搭建步骤

- 下载node并安装,支持v20以上版本(建议下载v20 LTS版本):https://nodejs.org/zh-cn/download/archive/v20.20.0
- 该项目为前后端分离项目,访问本地访问接口需搭建后台环境,搭建请参考后端项目[传送门](https://github.com/macrozheng/mall);
- 访问在线接口无需搭建后台环境,只需将`.env.development`文件中的`VITE_BASE_SERVER_URL`改为[https://admin-api.macrozheng.com](https://admin-api.macrozheng.com)即可;
- 如果你对接的是[mall-swarm](https://github.com/macrozheng/mall-swarm) 微服务后台的话,所有接口都需要通过网关访问,需要将`.env.development`文件中的`VITE_BASE_SERVER_URL`改为[http://localhost:8201/mall-admin](http://localhost:8201/mall-admin) ;
- 克隆源代码到本地,使用VSCode打开,并完成编译;
- 在命令行中运行命令:`npm install`,下载相关依赖;
- 在命令行中运行命令:`npm run dev`,运行项目;
- 访问地址:[http://localhost:5173](http://localhost:5173)即可打开后台管理系统页面;
- 具体部署过程请参考:[mall前端项目的安装与部署](https://www.macrozheng.com/mall/start/mall_deploy_web.html)
- 前端自动化部署请参考:[使用Jenkins一键打包部署前端应用,就是这么6!](https://www.macrozheng.com/mall/reference/jenkins_vue.html)

## 公众号

加微信群交流,公众号后台回复「**加群**」即可。

![公众号图片](http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/banner/qrcode_for_macrozheng_258.jpg)

## 许可证

[Apache License 2.0](https://github.com/macrozheng/mall-admin-web/blob/master/LICENSE)

Copyright (c) 2018-2026 macrozheng


================================================
FILE: auto-imports.d.ts
================================================
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
// biome-ignore lint: disable
export {}
declare global {
  const ElMessage: typeof import('element-plus/es').ElMessage
}


================================================
FILE: components.d.ts
================================================
/* eslint-disable */
// @ts-nocheck
// biome-ignore lint: disable
// oxlint-disable
// ------
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399

export {}

/* prettier-ignore */
declare module 'vue' {
  export interface GlobalComponents {
    Breadcrumb: typeof import('./src/components/Breadcrumb/index.vue')['default']
    ElButton: typeof import('element-plus/es')['ElButton']
    ElCard: typeof import('element-plus/es')['ElCard']
    ElCascader: typeof import('element-plus/es')['ElCascader']
    ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
    ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
    ElCol: typeof import('element-plus/es')['ElCol']
    ElDatePicker: typeof import('element-plus/es')['ElDatePicker']
    ElDialog: typeof import('element-plus/es')['ElDialog']
    ElDropdown: typeof import('element-plus/es')['ElDropdown']
    ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
    ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
    ElForm: typeof import('element-plus/es')['ElForm']
    ElFormItem: typeof import('element-plus/es')['ElFormItem']
    ElIcon: typeof import('element-plus/es')['ElIcon']
    ElInput: typeof import('element-plus/es')['ElInput']
    ElMenu: typeof import('element-plus/es')['ElMenu']
    ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
    ElOption: typeof import('element-plus/es')['ElOption']
    ElPagination: typeof import('element-plus/es')['ElPagination']
    ElPopover: typeof import('element-plus/es')['ElPopover']
    ElRadio: typeof import('element-plus/es')['ElRadio']
    ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
    ElRow: typeof import('element-plus/es')['ElRow']
    ElSelect: typeof import('element-plus/es')['ElSelect']
    ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
    ElStep: typeof import('element-plus/es')['ElStep']
    ElSteps: typeof import('element-plus/es')['ElSteps']
    ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
    ElSwitch: typeof import('element-plus/es')['ElSwitch']
    ElTable: typeof import('element-plus/es')['ElTable']
    ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
    ElTabPane: typeof import('element-plus/es')['ElTabPane']
    ElTabs: typeof import('element-plus/es')['ElTabs']
    ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
    ElTransfer: typeof import('element-plus/es')['ElTransfer']
    ElUpload: typeof import('element-plus/es')['ElUpload']
    Hamburger: typeof import('./src/components/Hamburger/index.vue')['default']
    MultiUpload: typeof import('./src/components/Upload/multiUpload.vue')['default']
    RouterLink: typeof import('vue-router')['RouterLink']
    RouterView: typeof import('vue-router')['RouterView']
    ScrollBar: typeof import('./src/components/ScrollBar/index.vue')['default']
    SingleUpload: typeof import('./src/components/Upload/singleUpload.vue')['default']
    SvgIcon: typeof import('./src/components/SvgIcon/index.vue')['default']
    Tinymce: typeof import('./src/components/Tinymce/index.vue')['default']
  }
  export interface GlobalDirectives {
    vLoading: typeof import('element-plus/es')['ElLoadingDirective']
  }
}


================================================
FILE: env.d.ts
================================================
/// <reference types="vite/client" />
/** 扩展import.meta.env对象类型,配置.env文件中的环境变量 */
interface ImportMetaEnv {
  /** 后端API基础路径 */
  readonly VITE_BASE_SERVER_URL: string
  /** 是否使用OSS对象存储 */
  readonly VITE_USE_OSS: string
  /** OSS上传路径 */
  readonly VITE_OSS_UPLOAD_URL: string
  /** Minio上传相对路径 */
  readonly VITE_MINIO_UPLOAD_URL: string
}
/** 扩展import.meta对象类型 */
interface ImportMeta {
  readonly env: ImportMetaEnv
}


================================================
FILE: eslint.config.ts
================================================
import { globalIgnores } from 'eslint/config'
import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'
import pluginVue from 'eslint-plugin-vue'

// To allow more languages other than `ts` in `.vue` files, uncomment the following lines:
// import { configureVueProject } from '@vue/eslint-config-typescript'
// configureVueProject({ scriptLangs: ['ts', 'tsx'] })
// More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup

export default defineConfigWithVueTs(
  {
    name: 'app/files-to-lint',
    files: ['**/*.{ts,mts,tsx,vue}'],
  },

  globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']),

  pluginVue.configs['flat/essential'],
  vueTsConfigs.recommended,
  {
    name: 'app/custom-rules',
    rules: {
      'vue/multi-word-component-names': 'off',
    },
  },
)


================================================
FILE: index.html
================================================
<!doctype html>
<html lang="">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" href="/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>mall-admin-web</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>


================================================
FILE: package.json
================================================
{
  "name": "mall-admin-web",
  "version": "3.0.0",
  "private": true,
  "type": "module",
  "engines": {
    "node": "^20.19.0 || >=22.12.0"
  },
  "scripts": {
    "dev": "vite",
    "build": "run-p type-check \"build-only {@}\" --",
    "preview": "vite preview",
    "build-only": "vite build",
    "type-check": "vue-tsc --build",
    "lint": "eslint . --fix --cache"
  },
  "dependencies": {
    "@tinymce/tinymce-vue": "^5.1.1",
    "@types/js-cookie": "^3.0.6",
    "axios": "^1.13.2",
    "echarts": "^6.0.0",
    "element-china-area-data": "^6.1.0",
    "element-plus": "^2.12.0",
    "js-cookie": "^3.0.5",
    "normalize.css": "^8.0.1",
    "nprogress": "^0.2.0",
    "pinia": "^3.0.4",
    "pinia-plugin-persistedstate": "^4.7.1",
    "tinymce": "^6.8.6",
    "tinymce-i18n": "^26.1.12",
    "vue": "^3.5.25",
    "vue-echarts": "^8.0.1",
    "vue-router": "^4.6.3"
  },
  "devDependencies": {
    "@tsconfig/node24": "^24.0.3",
    "@types/node": "^24.10.1",
    "@types/nprogress": "^0.2.3",
    "@vitejs/plugin-vue": "^6.0.2",
    "@vue/eslint-config-typescript": "^14.6.0",
    "@vue/tsconfig": "^0.8.1",
    "eslint": "^9.39.1",
    "eslint-plugin-vue": "~10.5.1",
    "fast-glob": "^3.3.3",
    "globals": "^16.5.0",
    "jiti": "^2.6.1",
    "npm-run-all2": "^8.0.4",
    "prettier": "^3.7.4",
    "sass": "^1.96.0",
    "typescript": "~5.9.0",
    "unplugin-auto-import": "^20.3.0",
    "unplugin-element-plus": "^0.11.1",
    "unplugin-vue-components": "^30.0.0",
    "vite": "^7.2.4",
    "vite-plugin-svg-icons": "^2.0.1",
    "vite-plugin-vue-devtools": "^8.0.5",
    "vue-tsc": "^3.1.5"
  }
}


================================================
FILE: public/tinymce6.8.6/langs/zh_CN.js
================================================
tinymce.addI18n("zh_CN",{"#":"#","Accessibility":"\u8f85\u52a9\u529f\u80fd","Accordion":"\u6298\u53e0\u9762\u677f","Accordion body...":"\u6298\u53e0\u9762\u677f\u6b63\u6587...","Accordion summary...":"\u6298\u53e0\u9762\u677f\u6458\u8981...","Action":"\u52a8\u4f5c","Activity":"\u6d3b\u52a8","Address":"\u5730\u5740","Advanced":"\u9ad8\u7ea7","Align":"\u5bf9\u9f50","Align center":"\u5c45\u4e2d\u5bf9\u9f50","Align left":"\u5de6\u5bf9\u9f50","Align right":"\u53f3\u5bf9\u9f50","Alignment":"\u5bf9\u9f50","Alignment {0}":"\u5bf9\u9f50{0}","All":"\u5168\u90e8","Alternative description":"\u66ff\u4ee3\u63cf\u8ff0","Alternative source":"\u955c\u50cf","Alternative source URL":"\u66ff\u4ee3\u6765\u6e90\u7f51\u5740","Anchor":"\u951a\u70b9","Anchor...":"\u951a\u70b9...","Anchors":"\u951a\u70b9","Animals and Nature":"\u52a8\u7269\u548c\u81ea\u7136","Arrows":"\u7bad\u5934","B":"B","Background color":"\u80cc\u666f\u989c\u8272","Background color {0}":"\u80cc\u666f\u989c\u8272 {0}","Black":"\u9ed1\u8272","Block":"\u5757","Block {0}":"\u6587\u672c\u5757{0}","Blockquote":"Blockquote","Blocks":"\u6837\u5f0f","Blue":"\u84dd\u8272","Blue component":"\u767d\u8272\u90e8\u5206","Body":"\u8868\u4f53","Bold":"\u7c97\u4f53","Border":"\u6846\u7ebf","Border color":"\u6846\u7ebf\u989c\u8272","Border style":"\u8fb9\u6846\u6837\u5f0f","Border width":"\u8fb9\u6846\u5bbd\u5ea6","Bottom":"\u4e0b\u65b9\u5bf9\u9f50","Browse files":"\u6d4f\u89c8\u6587\u4ef6","Browse for an image":"\u6d4f\u89c8\u56fe\u7247","Browse links":"\u6d4f\u89c8\u94fe\u63a5","Bullet list":"\u65e0\u5e8f\u5217\u8868","Cancel":"\u53d6\u6d88","Caption":"\u6807\u9898","Cell":"\u5355\u5143\u683c","Cell padding":"\u5355\u5143\u683c\u5185\u8fb9\u8ddd","Cell properties":"\u5355\u5143\u683c\u5c5e\u6027","Cell spacing":"\u5355\u5143\u683c\u5916\u95f4\u8ddd","Cell styles":"\u5355\u5143\u683c\u6837\u5f0f","Cell type":"\u50a8\u5b58\u683c\u522b","Center":"\u5c45\u4e2d","Characters":"\u5b57\u7b26","Characters (no spaces)":"\u5b57\u7b26(\u65e0\u7a7a\u683c)","Circle":"\u7a7a\u5fc3\u5706","Class":"\u7c7b\u578b","Clear formatting":"\u6e05\u9664\u683c\u5f0f","Close":"\u5173\u95ed","Code":"\u4ee3\u7801","Code sample...":"\u793a\u4f8b\u4ee3\u7801...","Code view":"\u4ee3\u7801\u89c6\u56fe","Color Picker":"\u9009\u8272\u5668","Color swatch":"\u989c\u8272\u6837\u672c","Cols":"\u5217","Column":"\u5217","Column clipboard actions":"\u5217\u526a\u8d34\u677f\u64cd\u4f5c","Column group":"\u5217\u7ec4","Column header":"\u5217\u6807\u9898","Constrain proportions":"\u4fdd\u6301\u6bd4\u4f8b","Copy":"\u590d\u5236","Copy column":"\u590d\u5236\u5217","Copy row":"\u590d\u5236\u884c","Could not find the specified string.":"\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9\u3002","Could not load emojis":"\u65e0\u6cd5\u52a0\u8f7d\u8868\u60c5","Count":"\u8ba1\u6570","Currency":"\u8d27\u5e01","Current window":"\u5f53\u524d\u7a97\u53e3","Custom color":"\u81ea\u5b9a\u4e49\u989c\u8272","Custom...":"\u81ea\u5b9a\u4e49......","Cut":"Cut","Cut column":"\u526a\u5207\u5217","Cut row":"\u526a\u5207\u884c","Dark Blue":"\u6df1\u84dd\u8272","Dark Gray":"\u6df1\u7070\u8272","Dark Green":"\u6df1\u7eff\u8272","Dark Orange":"\u6df1\u6a59\u8272","Dark Purple":"\u6df1\u7d2b\u8272","Dark Red":"\u6df1\u7ea2\u8272","Dark Turquoise":"\u6df1\u84dd\u7eff\u8272","Dark Yellow":"\u6697\u9ec4\u8272","Dashed":"\u865a\u7ebf","Date/time":"\u65e5\u671f/\u65f6\u95f4","Decrease indent":"\u51cf\u5c11\u7f29\u8fdb","Default":"\u9884\u8bbe","Delete accordion":"\u5220\u9664\u6298\u53e0\u9762\u677f","Delete column":"\u5220\u9664\u5217","Delete row":"\u5220\u9664\u884c","Delete table":"\u5220\u9664\u8868\u683c","Dimensions":"\u5c3a\u5bf8","Disc":"\u5b9e\u5fc3\u5706","Div":"Div","Document":"\u6587\u6863","Dotted":"\u865a\u7ebf","Double":"\u53cc\u7cbe\u5ea6","Drop an image here":"\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64","Dropped file type is not supported":"\u6b64\u6587\u4ef6\u7c7b\u578b\u4e0d\u652f\u6301\u62d6\u653e","Edit":"\u7f16\u8f91","Embed":"\u5185\u5d4c","Emojis":"\u8868\u60c5\u7b26\u53f7","Emojis...":"Emojis...","Error":"\u9519\u8bef","Error: Form submit field collision.":"\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002","Error: No form element found.":"\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002","Extended Latin":"\u62c9\u4e01\u8bed\u6269\u5145","Failed to initialize plugin: {0}":"\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}","Failed to load plugin url: {0}":"\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}","Failed to load plugin: {0} from url {1}":"\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}","Failed to upload image: {0}":"\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}","File":"\u6587\u4ef6","Find":"\u5bfb\u627e","Find (if searchreplace plugin activated)":"\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)","Find and Replace":"\u67e5\u627e\u548c\u66ff\u6362","Find and replace...":"\u67e5\u627e\u5e76\u66ff\u6362...","Find in selection":"\u5728\u9009\u533a\u4e2d\u67e5\u627e","Find whole words only":"\u5168\u5b57\u5339\u914d","Flags":"\u65d7\u5e1c","Focus to contextual toolbar":"\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355","Focus to element path":"\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84","Focus to menubar":"\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f","Focus to toolbar":"\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f","Font":"\u5b57\u4f53","Font size {0}":"\u5b57\u4f53\u5927\u5c0f{0}","Font sizes":"\u5b57\u4f53\u5927\u5c0f","Font {0}":"\u5b57\u4f53{0}","Fonts":"\u5b57\u4f53","Food and Drink":"\u98df\u7269\u548c\u996e\u54c1","Footer":"\u8868\u5c3e","Format":"\u683c\u5f0f","Format {0}":"\u683c\u5f0f{0}","Formats":"\u683c\u5f0f","Fullscreen":"\u5168\u5c4f","G":"G","General":"\u4e00\u822c","Gray":"\u7070\u8272","Green":"\u7eff\u8272","Green component":"\u7eff\u8272\u90e8\u5206","Groove":"\u51f9\u69fd","Handy Shortcuts":"\u5feb\u6377\u952e","Header":"\u8868\u5934","Header cell":"\u8868\u5934\u5355\u5143\u683c","Heading 1":"\u4e00\u7ea7\u6807\u9898","Heading 2":"\u4e8c\u7ea7\u6807\u9898","Heading 3":"\u4e09\u7ea7\u6807\u9898","Heading 4":"\u56db\u7ea7\u6807\u9898","Heading 5":"\u4e94\u7ea7\u6807\u9898","Heading 6":"\u516d\u7ea7\u6807\u9898","Headings":"\u6807\u9898","Height":"\u9ad8\u5ea6","Help":"\u5e2e\u52a9","Hex color code":"\u5341\u516d\u8fdb\u5236\u989c\u8272\u4ee3\u7801","Hidden":"\u9690\u85cf","Horizontal align":"\u6c34\u5e73\u5bf9\u9f50","Horizontal line":"\u6c34\u5e73\u5206\u5272\u7ebf","Horizontal space":"\u6c34\u5e73\u95f4\u8ddd","ID":"ID","ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.":"ID\u5e94\u8be5\u4ee5\u82f1\u6587\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u9762\u53ea\u80fd\u6709\u82f1\u6587\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002","Image is decorative":"\u56fe\u50cf\u662f\u88c5\u9970\u6027\u7684","Image list":"\u56fe\u7247\u6e05\u5355","Image title":"\u56fe\u7247\u6807\u9898","Image...":"\u56fe\u7247...","ImageProxy HTTP error: Could not find Image Proxy":"\u56fe\u7247\u4ee3\u7406\u8bf7\u6c42\u9519\u8bef\uff1a\u65e0\u6cd5\u627e\u5230\u56fe\u7247\u4ee3\u7406","ImageProxy HTTP error: Incorrect Image Proxy URL":"\u56fe\u7247\u4ee3\u7406\u8bf7\u6c42\u9519\u8bef\uff1a\u56fe\u7247\u4ee3\u7406\u5730\u5740\u9519\u8bef","ImageProxy HTTP error: Rejected request":"\u56fe\u7247\u4ee3\u7406\u8bf7\u6c42\u9519\u8bef\uff1a\u8bf7\u6c42\u88ab\u62d2\u7edd","ImageProxy HTTP error: Unknown ImageProxy error":"\u56fe\u7247\u4ee3\u7406\u8bf7\u6c42\u9519\u8bef\uff1a\u672a\u77e5\u7684\u56fe\u7247\u4ee3\u7406\u9519\u8bef","Increase indent":"\u589e\u52a0\u7f29\u8fdb","Inline":"\u6587\u672c","Insert":"\u63d2\u5165","Insert Template":"\u63d2\u5165\u6a21\u677f","Insert accordion":"\u63d2\u5165\u6298\u53e0\u9762\u677f","Insert column after":"\u5728\u53f3\u4fa7\u63d2\u5165\u5217","Insert column before":"\u5728\u5de6\u4fa7\u63d2\u5165\u5217","Insert date/time":"\u63d2\u5165\u65e5\u671f/\u65f6\u95f4","Insert image":"\u63d2\u5165\u56fe\u7247","Insert link (if link plugin activated)":"\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)","Insert row after":"\u5728\u4e0b\u65b9\u63d2\u5165\u884c","Insert row before":"\u5728\u4e0a\u65b9\u63d2\u5165\u884c","Insert table":"\u63d2\u5165\u8868\u683c","Insert template...":"\u63d2\u5165\u6a21\u677f...","Insert video":"\u63d2\u5165\u89c6\u9891","Insert/Edit code sample":"\u63d2\u5165/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b","Insert/edit image":"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247","Insert/edit link":"\u63d2\u5165/\u7f16\u8f91\u94fe\u63a5","Insert/edit media":"\u63d2\u5165/\u7f16\u8f91\u5a92\u4f53","Insert/edit video":"\u63d2\u5165/\u7f16\u8f91\u89c6\u9891","Inset":"\u5d4c\u5165","Invalid hex color code: {0}":"\u5341\u516d\u8fdb\u5236\u989c\u8272\u4ee3\u7801\u65e0\u6548\uff1a {0}","Invalid input":"\u65e0\u6548\u8f93\u5165","Italic":"\u659c\u4f53","Justify":"\u4e24\u7aef\u5bf9\u9f50","Keyboard Navigation":"\u952e\u76d8\u6307\u5f15","Language":"\u8bed\u8a00","Learn more...":"\u4e86\u89e3\u66f4\u591a...","Left":"\u5de6","Left to right":"\u7531\u5de6\u5230\u53f3","Light Blue":"\u6d45\u84dd\u8272","Light Gray":"\u6d45\u7070\u8272","Light Green":"\u6d45\u7eff\u8272","Light Purple":"\u6d45\u7d2b\u8272","Light Red":"\u6d45\u7ea2\u8272","Light Yellow":"\u6d45\u9ec4\u8272","Line height":"Line height","Link list":"\u94fe\u63a5\u6e05\u5355","Link...":"\u94fe\u63a5...","List Properties":"\u5217\u8868\u5c5e\u6027","List properties...":"\u6807\u9898\u5b57\u4f53\u5c5e\u6027","Loading emojis...":"\u6b63\u5728\u52a0\u8f7dEmojis...","Loading...":"\u52a0\u8f7d\u4e2d...","Lower Alpha":"\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd","Lower Greek":"\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd","Lower Roman":"\u5c0f\u5199\u7f57\u9a6c\u6570\u5b57","Match case":"\u5927\u5c0f\u5199\u5339\u914d","Mathematical":"\u6570\u5b66","Media poster (Image URL)":"\u5c01\u9762(\u56fe\u7247\u5730\u5740)","Media...":"\u591a\u5a92\u4f53...","Medium Blue":"\u4e2d\u84dd\u8272","Medium Gray":"\u4e2d\u7070\u8272","Medium Purple":"\u4e2d\u7d2b\u8272","Merge cells":"\u5408\u5e76\u5355\u5143\u683c","Middle":"\u5c45\u4e2d\u5bf9\u9f50","Midnight Blue":"\u6df1\u84dd\u8272","More...":"\u66f4\u591a...","Name":"\u540d\u79f0","Navy Blue":"\u6d77\u519b\u84dd","New document":"\u65b0\u5efa\u6587\u6863","New window":"\u65b0\u7a97\u53e3","Next":"\u4e0b\u4e00\u4e2a","No":"\u5426","No alignment":"\u672a\u5bf9\u9f50","No color":"\u65e0","Nonbreaking space":"\u4e0d\u95f4\u65ad\u7a7a\u683c","None":"\u65e0","Numbered list":"\u6709\u5e8f\u5217\u8868","OR":"\u6216","Objects":"\u7269\u4ef6","Ok":"\u786e\u5b9a","Open help dialog":"\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846","Open link":"\u6253\u5f00\u94fe\u63a5","Open link in...":"\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...","Open popup menu for split buttons":"\u6253\u5f00\u5f39\u51fa\u5f0f\u83dc\u5355\uff0c\u7528\u4e8e\u62c6\u5206\u6309\u94ae","Orange":"\u6a59\u8272","Outset":"\u5916\u7f6e","Page break":"\u5206\u9875\u7b26","Paragraph":"\u6bb5\u843d","Paste":"\u7c98\u8d34","Paste as text":"\u7c98\u8d34\u4e3a\u6587\u672c","Paste column after":"\u7c98\u8d34\u540e\u9762\u7684\u5217","Paste column before":"\u7c98\u8d34\u6b64\u5217\u524d","Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.":"\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002","Paste or type a link":"\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5","Paste row after":"\u7c98\u8d34\u884c\u5230\u4e0b\u65b9","Paste row before":"\u7c98\u8d34\u884c\u5230\u4e0a\u65b9","Paste your embed code below:":"\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:","People":"\u4eba\u7c7b","Plugins":"\u63d2\u4ef6","Plugins installed ({0}):":"\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):","Powered by {0}":"\u7531{0}\u9a71\u52a8","Pre":"\u524d\u8a00","Preferences":"\u9996\u9009\u9879","Preformatted":"\u9884\u5148\u683c\u5f0f\u5316\u7684","Premium plugins:":"\u4f18\u79c0\u63d2\u4ef6\uff1a","Press the Up and Down arrow keys to resize the editor.":"\u6309\u4e0a\u4e0b\u7bad\u5934\u952e\u4ee5\u8c03\u6574\u7f16\u8f91\u5668\u5927\u5c0f\u3002","Press the arrow keys to resize the editor.":"\u6309\u7bad\u5934\u952e\u4ee5\u8c03\u6574\u7f16\u8f91\u5668\u5927\u5c0f\u3002","Press {0} for help":"\u6309 {0} \u83b7\u5f97\u5e2e\u52a9","Preview":"\u9884\u89c8","Previous":"\u4e0a\u4e00\u4e2a","Print":"\u6253\u5370","Print...":"\u6253\u5370...","Purple":"\u7d2b\u8272","Quotations":"\u5f15\u7528","R":"R","Range 0 to 255":"\u8303\u56f40\u81f3255","Red":"\u7ea2\u8272","Red component":"\u7ea2\u8272\u90e8\u5206","Redo":"\u91cd\u505a","Remove":"\u79fb\u9664","Remove color":"\u79fb\u9664\u989c\u8272","Remove link":"\u79fb\u9664\u94fe\u63a5","Replace":"\u66ff\u6362","Replace all":"\u66ff\u6362\u5168\u90e8","Replace with":"\u66ff\u6362\u4e3a","Resize":"\u8c03\u6574\u5927\u5c0f","Restore last draft":"\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f","Reveal or hide additional toolbar items":"\u663e\u793a\u6216\u9690\u85cf\u5176\u4ed6\u5de5\u5177\u680f\u9879","Rich Text Area":"\u5bcc\u6587\u672c\u533a\u57df","Rich Text Area. Press ALT-0 for help.":"\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002","Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help":"\u7f16\u8f91\u533a\u3002\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9","Ridge":"\u6d77\u810a\u5ea7","Right":"\u53f3","Right to left":"\u7531\u53f3\u5230\u5de6","Row":"\u884c","Row clipboard actions":"\u884c\u526a\u8d34\u677f\u64cd\u4f5c","Row group":"\u884c\u7ec4","Row header":"\u884c\u5934","Row properties":"\u884c\u5c5e\u6027","Row type":"\u884c\u7c7b\u578b","Rows":"\u884c\u6570","Save":"\u4fdd\u5b58","Save (if save plugin activated)":"\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)","Scope":"\u8303\u56f4","Search":"\u641c\u7d22","Select all":"\u5168\u9009","Select...":"\u9009\u62e9...","Selection":"\u9009\u62e9","Shortcut":"\u5feb\u6377\u65b9\u5f0f","Show blocks":"\u663e\u793a\u533a\u5757\u8fb9\u6846","Show caption":"\u663e\u793a\u6807\u9898","Show invisible characters":"\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26","Size":"\u5b57\u53f7","Solid":"\u5b9e\u7ebf","Source":"\u5730\u5740","Source code":"\u6e90\u4ee3\u7801","Special Character":"\u7279\u6b8a\u5b57\u7b26","Special character...":"\u7279\u6b8a\u5b57\u7b26...","Split cell":"\u62c6\u5206\u5355\u5143\u683c","Square":"\u5b9e\u5fc3\u65b9\u5757","Start list at number":"\u4ee5\u6570\u5b57\u5f00\u59cb\u5217\u8868","Strikethrough":"\u5220\u9664\u7ebf","Style":"\u6837\u5f0f","Subscript":"\u4e0b\u6807","Superscript":"\u4e0a\u6807","Switch to or from fullscreen mode":"\u5207\u6362\u5168\u5c4f\u6a21\u5f0f","Symbols":"\u7b26\u53f7","System Font":"\u7cfb\u7edf\u5b57\u4f53","Table":"\u8868\u683c","Table caption":"\u8868\u683c\u6807\u9898","Table properties":"\u8868\u683c\u5c5e\u6027","Table styles":"\u8868\u683c\u6837\u5f0f","Template":"\u6a21\u677f","Templates":"\u6a21\u677f","Text":"\u6587\u5b57","Text color":"\u5b57\u4f53\u989c\u8272","Text color {0}":"\u5b57\u4f53\u989c\u8272 {0}","Text to display":"\u8981\u663e\u793a\u7684\u6587\u672c","The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?":"\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto: \u524d\u7f00\u5417\uff1f","The URL you entered seems to be an external link. Do you want to add the required http:// prefix?":"\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:// \u524d\u7f00\u5417\uff1f","The URL you entered seems to be an external link. Do you want to add the required https:// prefix?":"\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\u3002\u60a8\u60f3\u6dfb\u52a0\u6240\u9700\u7684 https:// \u524d\u7f00\u5417\uff1f","Title":"\u6807\u9898","To open the popup, press Shift+Enter":"\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846","Toggle accordion":"\u5207\u6362\u6298\u53e0\u9762\u677f","Tools":"\u5de5\u5177","Top":"\u4e0a\u65b9\u5bf9\u9f50","Travel and Places":"\u65c5\u6e38\u548c\u5730\u70b9","Turquoise":"Turquoise","Underline":"\u4e0b\u5212\u7ebf","Undo":"\u6062\u590d","Upload":"\u4e0a\u4f20","Uploading image":"\u4e0a\u4f20\u56fe\u7247","Upper Alpha":"\u5927\u5199\u82f1\u6587\u5b57\u6bcd","Upper Roman":"\u5927\u5199\u7f57\u9a6c\u6570\u5b57","Url":"\u5730\u5740","User Defined":"\u81ea\u5b9a\u4e49","Valid":"\u6709\u6548","Version":"\u7248\u672c","Vertical align":"\u5782\u76f4\u5bf9\u9f50","Vertical space":"\u5782\u76f4\u95f4\u8ddd","View":"\u67e5\u770b","Visual aids":"\u7f51\u683c\u7ebf","Warn":"\u8b66\u544a","White":"\u767d\u8272","Width":"\u5bbd\u5ea6","Word count":"\u5b57\u6570","Words":"\u5355\u8bcd","Words: {0}":"\u5b57\u6570\uff1a{0}","Yellow":"\u9ec4\u8272","Yes":"\u662f","You are using {0}":"\u4f60\u6b63\u5728\u4f7f\u7528 {0}","You have unsaved changes are you sure you want to navigate away?":"\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f","Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.":"\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X/C/V\u7b49\u5feb\u6377\u952e\u3002","alignment":"\u5bf9\u9f50","austral sign":"\u6fb3\u5143\u7b26\u53f7","cedi sign":"\u585e\u5730\u7b26\u53f7","colon sign":"\u5192\u53f7","cruzeiro sign":"\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7","currency sign":"\u8d27\u5e01\u7b26\u53f7","dollar sign":"\u7f8e\u5143\u7b26\u53f7","dong sign":"\u8d8a\u5357\u76fe\u7b26\u53f7","drachma sign":"\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7","euro-currency sign":"\u6b27\u5143\u7b26\u53f7","example":"\u793a\u4f8b","formatting":"\u683c\u5f0f\u5316","french franc sign":"\u6cd5\u90ce\u7b26\u53f7","german penny symbol":"\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7","guarani sign":"\u74dc\u62c9\u5c3c\u7b26\u53f7","history":"\u5386\u53f2","hryvnia sign":"\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7","indentation":"\u7f29\u8fdb","indian rupee sign":"\u5370\u5ea6\u5362\u6bd4","kip sign":"\u8001\u631d\u57fa\u666e\u7b26\u53f7","lira sign":"\u91cc\u62c9\u7b26\u53f7","livre tournois sign":"\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7","manat sign":"\u9a6c\u7eb3\u7279\u7b26\u53f7","mill sign":"\u5bc6\u5c14\u7b26\u53f7","naira sign":"\u5948\u62c9\u7b26\u53f7","new sheqel sign":"\u65b0\u8c22\u514b\u5c14\u7b26\u53f7","nordic mark sign":"\u5317\u6b27\u9a6c\u514b","peseta sign":"\u6bd4\u585e\u5854\u7b26\u53f7","peso sign":"\u6bd4\u7d22\u7b26\u53f7","ruble sign":"\u5362\u5e03\u7b26\u53f7","rupee sign":"\u5362\u6bd4\u7b26\u53f7","spesmilo sign":"spesmilo\u7b26\u53f7","styles":"\u6837\u5f0f","tenge sign":"\u575a\u6208\u7b26\u53f7","tugrik sign":"\u56fe\u683c\u91cc\u514b\u7b26\u53f7","turkish lira sign":"\u571f\u8033\u5176\u91cc\u62c9","won sign":"\u97e9\u5143\u7b26\u53f7","yen character":"\u65e5\u5143\u5b57\u6837","yen/yuan character variant one":"\u5143\u5b57\u6837\uff08\u5927\u5199\uff09","yuan character":"\u4eba\u6c11\u5e01\u5143\u5b57\u6837","yuan character, in hong kong and taiwan":"\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09","{0} characters":"{0} \u4e2a\u5b57\u7b26","{0} columns, {1} rows":"{0} \u5217\uff0c{1} \u884c","{0} words":"{0} \u5b57"});

================================================
FILE: public/tinymce6.8.6/license.txt
================================================
MIT License

Copyright (c) 2022 Ephox Corporation DBA Tiny Technologies, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: public/tinymce6.8.6/notices.txt
================================================
Below is a list of third party libraries that this software uses:
----------------------------------------------------------------

dompurify - Patched by Tiny
owner: Mario Heiderich
repo: https://github.com/cure53/DOMPurify
version: 3.2.4
license: MPL-2.0 OR Apache-2.0

prismjs
owner: Lea Verou
repo: https://github.com/PrismJS/prism
version: 1.25.0
license: MIT


prism-themes
owner: Lea Verou
repo: https://github.com/PrismJS/prism-themes
version: 1.9.0
license: MIT


================================================
FILE: public/tinymce6.8.6/plugins/emoticons/js/emojiimages.js
================================================
window.tinymce.Resource.add("tinymce.plugins.emoticons",{100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💯" src="1f4af.png"/>',fitzpatrick_scale:false,category:"symbols"},1234:{keywords:["numbers","blue-square"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🔢" src="1f522.png"/>',fitzpatrick_scale:false,category:"symbols"},grinning:{keywords:["face","smile","happy","joy",":D","grin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😀" src="1f600.png"/>',fitzpatrick_scale:false,category:"people"},grimacing:{keywords:["face","grimace","teeth"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😬" src="1f62c.png"/>',fitzpatrick_scale:false,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😁" src="1f601.png"/>',fitzpatrick_scale:false,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😂" src="1f602.png"/>',fitzpatrick_scale:false,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤣" src="1f923.png"/>',fitzpatrick_scale:false,category:"people"},partying:{keywords:["face","celebration","woohoo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥳" src="1f973.png"/>',fitzpatrick_scale:false,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😃" src="1f603.png"/>',fitzpatrick_scale:false,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😄" src="1f604.png"/>',fitzpatrick_scale:false,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😅" src="1f605.png"/>',fitzpatrick_scale:false,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😆" src="1f606.png"/>',fitzpatrick_scale:false,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😇" src="1f607.png"/>',fitzpatrick_scale:false,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😉" src="1f609.png"/>',fitzpatrick_scale:false,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😊" src="1f60a.png"/>',fitzpatrick_scale:false,category:"people"},slightly_smiling_face:{keywords:["face","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙂" src="1f642.png"/>',fitzpatrick_scale:false,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙃" src="1f643.png"/>',fitzpatrick_scale:false,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☺️" src="263a.png"/>',fitzpatrick_scale:false,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😋" src="1f60b.png"/>',fitzpatrick_scale:false,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😌" src="1f60c.png"/>',fitzpatrick_scale:false,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😍" src="1f60d.png"/>',fitzpatrick_scale:false,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥰" src="1f970.png"/>',fitzpatrick_scale:false,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😘" src="1f618.png"/>',fitzpatrick_scale:false,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😗" src="1f617.png"/>',fitzpatrick_scale:false,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😙" src="1f619.png"/>',fitzpatrick_scale:false,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😚" src="1f61a.png"/>',fitzpatrick_scale:false,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😜" src="1f61c.png"/>',fitzpatrick_scale:false,category:"people"},zany:{keywords:["face","goofy","crazy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤪" src="1f92a.png"/>',fitzpatrick_scale:false,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤨" src="1f928.png"/>',fitzpatrick_scale:false,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧐" src="1f9d0.png"/>',fitzpatrick_scale:false,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😝" src="1f61d.png"/>',fitzpatrick_scale:false,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😛" src="1f61b.png"/>',fitzpatrick_scale:false,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤑" src="1f911.png"/>',fitzpatrick_scale:false,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤓" src="1f913.png"/>',fitzpatrick_scale:false,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😎" src="1f60e.png"/>',fitzpatrick_scale:false,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤩" src="1f929.png"/>',fitzpatrick_scale:false,category:"people"},clown_face:{keywords:["face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤡" src="1f921.png"/>',fitzpatrick_scale:false,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤠" src="1f920.png"/>',fitzpatrick_scale:false,category:"people"},hugs:{keywords:["face","smile","hug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤗" src="1f917.png"/>',fitzpatrick_scale:false,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😏" src="1f60f.png"/>',fitzpatrick_scale:false,category:"people"},no_mouth:{keywords:["face","hellokitty"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😶" src="1f636.png"/>',fitzpatrick_scale:false,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😐" src="1f610.png"/>',fitzpatrick_scale:false,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😑" src="1f611.png"/>',fitzpatrick_scale:false,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😒" src="1f612.png"/>',fitzpatrick_scale:false,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙄" src="1f644.png"/>',fitzpatrick_scale:false,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤔" src="1f914.png"/>',fitzpatrick_scale:false,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤥" src="1f925.png"/>',fitzpatrick_scale:false,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤭" src="1f92d.png"/>',fitzpatrick_scale:false,category:"people"},shushing:{keywords:["face","quiet","shhh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤫" src="1f92b.png"/>',fitzpatrick_scale:false,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤬" src="1f92c.png"/>',fitzpatrick_scale:false,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤯" src="1f92f.png"/>',fitzpatrick_scale:false,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😳" src="1f633.png"/>',fitzpatrick_scale:false,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😞" src="1f61e.png"/>',fitzpatrick_scale:false,category:"people"},worried:{keywords:["face","concern","nervous",":("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😟" src="1f61f.png"/>',fitzpatrick_scale:false,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😠" src="1f620.png"/>',fitzpatrick_scale:false,category:"people"},rage:{keywords:["angry","mad","hate","despise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😡" src="1f621.png"/>',fitzpatrick_scale:false,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😔" src="1f614.png"/>',fitzpatrick_scale:false,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😕" src="1f615.png"/>',fitzpatrick_scale:false,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙁" src="1f641.png"/>',fitzpatrick_scale:false,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☹" src="2639.png"/>',fitzpatrick_scale:false,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😣" src="1f623.png"/>',fitzpatrick_scale:false,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😖" src="1f616.png"/>',fitzpatrick_scale:false,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😫" src="1f62b.png"/>',fitzpatrick_scale:false,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😩" src="1f629.png"/>',fitzpatrick_scale:false,category:"people"},pleading:{keywords:["face","begging","mercy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥺" src="1f97a.png"/>',fitzpatrick_scale:false,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😤" src="1f624.png"/>',fitzpatrick_scale:false,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😮" src="1f62e.png"/>',fitzpatrick_scale:false,category:"people"},scream:{keywords:["face","munch","scared","omg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😱" src="1f631.png"/>',fitzpatrick_scale:false,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😨" src="1f628.png"/>',fitzpatrick_scale:false,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😰" src="1f630.png"/>',fitzpatrick_scale:false,category:"people"},hushed:{keywords:["face","woo","shh"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😯" src="1f62f.png"/>',fitzpatrick_scale:false,category:"people"},frowning:{keywords:["face","aw","what"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😦" src="1f626.png"/>',fitzpatrick_scale:false,category:"people"},anguished:{keywords:["face","stunned","nervous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😧" src="1f627.png"/>',fitzpatrick_scale:false,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😢" src="1f622.png"/>',fitzpatrick_scale:false,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😥" src="1f625.png"/>',fitzpatrick_scale:false,category:"people"},drooling_face:{keywords:["face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤤" src="1f924.png"/>',fitzpatrick_scale:false,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😪" src="1f62a.png"/>',fitzpatrick_scale:false,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😓" src="1f613.png"/>',fitzpatrick_scale:false,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥵" src="1f975.png"/>',fitzpatrick_scale:false,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥶" src="1f976.png"/>',fitzpatrick_scale:false,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😭" src="1f62d.png"/>',fitzpatrick_scale:false,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😵" src="1f635.png"/>',fitzpatrick_scale:false,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😲" src="1f632.png"/>',fitzpatrick_scale:false,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤐" src="1f910.png"/>',fitzpatrick_scale:false,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤢" src="1f922.png"/>',fitzpatrick_scale:false,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤧" src="1f927.png"/>',fitzpatrick_scale:false,category:"people"},vomiting:{keywords:["face","sick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤮" src="1f92e.png"/>',fitzpatrick_scale:false,category:"people"},mask:{keywords:["face","sick","ill","disease"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😷" src="1f637.png"/>',fitzpatrick_scale:false,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤒" src="1f912.png"/>',fitzpatrick_scale:false,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤕" src="1f915.png"/>',fitzpatrick_scale:false,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥴" src="1f974.png"/>',fitzpatrick_scale:false,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😴" src="1f634.png"/>',fitzpatrick_scale:false,category:"people"},zzz:{keywords:["sleepy","tired","dream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💤" src="1f4a4.png"/>',fitzpatrick_scale:false,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💩" src="1f4a9.png"/>',fitzpatrick_scale:false,category:"people"},smiling_imp:{keywords:["devil","horns"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😈" src="1f608.png"/>',fitzpatrick_scale:false,category:"people"},imp:{keywords:["devil","angry","horns"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👿" src="1f47f.png"/>',fitzpatrick_scale:false,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👹" src="1f479.png"/>',fitzpatrick_scale:false,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👺" src="1f47a.png"/>',fitzpatrick_scale:false,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💀" src="1f480.png"/>',fitzpatrick_scale:false,category:"people"},ghost:{keywords:["halloween","spooky","scary"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👻" src="1f47b.png"/>',fitzpatrick_scale:false,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👽" src="1f47d.png"/>',fitzpatrick_scale:false,category:"people"},robot:{keywords:["computer","machine","bot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤖" src="1f916.png"/>',fitzpatrick_scale:false,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😺" src="1f63a.png"/>',fitzpatrick_scale:false,category:"people"},smile_cat:{keywords:["animal","cats","smile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😸" src="1f638.png"/>',fitzpatrick_scale:false,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😹" src="1f639.png"/>',fitzpatrick_scale:false,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😻" src="1f63b.png"/>',fitzpatrick_scale:false,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😼" src="1f63c.png"/>',fitzpatrick_scale:false,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😽" src="1f63d.png"/>',fitzpatrick_scale:false,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙀" src="1f640.png"/>',fitzpatrick_scale:false,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😿" src="1f63f.png"/>',fitzpatrick_scale:false,category:"people"},pouting_cat:{keywords:["animal","cats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="😾" src="1f63e.png"/>',fitzpatrick_scale:false,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤲" src="1f932.png"/>',fitzpatrick_scale:true,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙌" src="1f64c.png"/>',fitzpatrick_scale:true,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👏" src="1f44f.png"/>',fitzpatrick_scale:true,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👋" src="1f44b.png"/>',fitzpatrick_scale:true,category:"people"},call_me_hand:{keywords:["hands","gesture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤙" src="1f919.png"/>',fitzpatrick_scale:true,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👍" src="1f44d.png"/>',fitzpatrick_scale:true,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👎" src="1f44e.png"/>',fitzpatrick_scale:true,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👊" src="1f44a.png"/>',fitzpatrick_scale:true,category:"people"},fist:{keywords:["fingers","hand","grasp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="✊" src="270a.png"/>',fitzpatrick_scale:true,category:"people"},fist_left:{keywords:["hand","fistbump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤛" src="1f91b.png"/>',fitzpatrick_scale:true,category:"people"},fist_right:{keywords:["hand","fistbump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤜" src="1f91c.png"/>',fitzpatrick_scale:true,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="✌" src="270c.png"/>',fitzpatrick_scale:true,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👌" src="1f44c.png"/>',fitzpatrick_scale:true,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="✋" src="270b.png"/>',fitzpatrick_scale:true,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤚" src="1f91a.png"/>',fitzpatrick_scale:true,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👐" src="1f450.png"/>',fitzpatrick_scale:true,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💪" src="1f4aa.png"/>',fitzpatrick_scale:true,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙏" src="1f64f.png"/>',fitzpatrick_scale:true,category:"people"},foot:{keywords:["kick","stomp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦶" src="1f9b6.png"/>',fitzpatrick_scale:true,category:"people"},leg:{keywords:["kick","limb"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦵" src="1f9b5.png"/>',fitzpatrick_scale:true,category:"people"},handshake:{keywords:["agreement","shake"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤝" src="1f91d.png"/>',fitzpatrick_scale:false,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☝" src="261d.png"/>',fitzpatrick_scale:true,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👆" src="1f446.png"/>',fitzpatrick_scale:true,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👇" src="1f447.png"/>',fitzpatrick_scale:true,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👈" src="1f448.png"/>',fitzpatrick_scale:true,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👉" src="1f449.png"/>',fitzpatrick_scale:true,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🖕" src="1f595.png"/>',fitzpatrick_scale:true,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🖐" src="1f590.png"/>',fitzpatrick_scale:true,category:"people"},love_you:{keywords:["hand","fingers","gesture"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤟" src="1f91f.png"/>',fitzpatrick_scale:true,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤘" src="1f918.png"/>',fitzpatrick_scale:true,category:"people"},crossed_fingers:{keywords:["good","lucky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤞" src="1f91e.png"/>',fitzpatrick_scale:true,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🖖" src="1f596.png"/>',fitzpatrick_scale:true,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="✍" src="270d.png"/>',fitzpatrick_scale:true,category:"people"},selfie:{keywords:["camera","phone"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤳" src="1f933.png"/>',fitzpatrick_scale:true,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💅" src="1f485.png"/>',fitzpatrick_scale:true,category:"people"},lips:{keywords:["mouth","kiss"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👄" src="1f444.png"/>',fitzpatrick_scale:false,category:"people"},tooth:{keywords:["teeth","dentist"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦷" src="1f9b7.png"/>',fitzpatrick_scale:false,category:"people"},tongue:{keywords:["mouth","playful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👅" src="1f445.png"/>',fitzpatrick_scale:false,category:"people"},ear:{keywords:["face","hear","sound","listen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👂" src="1f442.png"/>',fitzpatrick_scale:true,category:"people"},nose:{keywords:["smell","sniff"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👃" src="1f443.png"/>',fitzpatrick_scale:true,category:"people"},eye:{keywords:["face","look","see","watch","stare"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👁" src="1f441.png"/>',fitzpatrick_scale:false,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👀" src="1f440.png"/>',fitzpatrick_scale:false,category:"people"},brain:{keywords:["smart","intelligent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧠" src="1f9e0.png"/>',fitzpatrick_scale:false,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👤" src="1f464.png"/>',fitzpatrick_scale:false,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👥" src="1f465.png"/>',fitzpatrick_scale:false,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🗣" src="1f5e3.png"/>',fitzpatrick_scale:false,category:"people"},baby:{keywords:["child","boy","girl","toddler"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👶" src="1f476.png"/>',fitzpatrick_scale:true,category:"people"},child:{keywords:["gender-neutral","young"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧒" src="1f9d2.png"/>',fitzpatrick_scale:true,category:"people"},boy:{keywords:["man","male","guy","teenager"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👦" src="1f466.png"/>',fitzpatrick_scale:true,category:"people"},girl:{keywords:["female","woman","teenager"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👧" src="1f467.png"/>',fitzpatrick_scale:true,category:"people"},adult:{keywords:["gender-neutral","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧑" src="1f9d1.png"/>',fitzpatrick_scale:true,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨" src="1f468.png"/>',fitzpatrick_scale:true,category:"people"},woman:{keywords:["female","girls","lady"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩" src="1f469.png"/>',fitzpatrick_scale:true,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👱‍♀️" src="1f471-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👱" src="1f471.png"/>',fitzpatrick_scale:true,category:"people"},bearded_person:{keywords:["person","bewhiskered"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧔" src="1f9d4.png"/>',fitzpatrick_scale:true,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧓" src="1f9d3.png"/>',fitzpatrick_scale:true,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👴" src="1f474.png"/>',fitzpatrick_scale:true,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👵" src="1f475.png"/>',fitzpatrick_scale:true,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👲" src="1f472.png"/>',fitzpatrick_scale:true,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧕" src="1f9d5.png"/>',fitzpatrick_scale:true,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👳‍♀️" src="1f473-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👳" src="1f473.png"/>',fitzpatrick_scale:true,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👮‍♀️" src="1f46e-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👮" src="1f46e.png"/>',fitzpatrick_scale:true,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👷‍♀️" src="1f477-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👷" src="1f477.png"/>',fitzpatrick_scale:true,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💂‍♀️" src="1f482-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💂" src="1f482.png"/>',fitzpatrick_scale:true,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🕵️‍♀️" src="1f575-fe0f-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},male_detective:{keywords:["human","spy","detective"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🕵" src="1f575.png"/>',fitzpatrick_scale:true,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍⚕️" src="1f469-200d-2695-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍⚕️" src="1f468-200d-2695-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🌾" src="1f469-200d-1f33e.png"/>',fitzpatrick_scale:true,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🌾" src="1f468-200d-1f33e.png"/>',fitzpatrick_scale:true,category:"people"},woman_cook:{keywords:["chef","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🍳" src="1f469-200d-1f373.png"/>',fitzpatrick_scale:true,category:"people"},man_cook:{keywords:["chef","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🍳" src="1f468-200d-1f373.png"/>',fitzpatrick_scale:true,category:"people"},woman_student:{keywords:["graduate","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🎓" src="1f469-200d-1f393.png"/>',fitzpatrick_scale:true,category:"people"},man_student:{keywords:["graduate","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🎓" src="1f468-200d-1f393.png"/>',fitzpatrick_scale:true,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🎤" src="1f469-200d-1f3a4.png"/>',fitzpatrick_scale:true,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🎤" src="1f468-200d-1f3a4.png"/>',fitzpatrick_scale:true,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🏫" src="1f469-200d-1f3eb.png"/>',fitzpatrick_scale:true,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🏫" src="1f468-200d-1f3eb.png"/>',fitzpatrick_scale:true,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🏭" src="1f469-200d-1f3ed.png"/>',fitzpatrick_scale:true,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🏭" src="1f468-200d-1f3ed.png"/>',fitzpatrick_scale:true,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍💻" src="1f469-200d-1f4bb.png"/>',fitzpatrick_scale:true,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍💻" src="1f468-200d-1f4bb.png"/>',fitzpatrick_scale:true,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍💼" src="1f469-200d-1f4bc.png"/>',fitzpatrick_scale:true,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍💼" src="1f468-200d-1f4bc.png"/>',fitzpatrick_scale:true,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🔧" src="1f469-200d-1f527.png"/>',fitzpatrick_scale:true,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🔧" src="1f468-200d-1f527.png"/>',fitzpatrick_scale:true,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🔬" src="1f469-200d-1f52c.png"/>',fitzpatrick_scale:true,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🔬" src="1f468-200d-1f52c.png"/>',fitzpatrick_scale:true,category:"people"},woman_artist:{keywords:["painter","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🎨" src="1f469-200d-1f3a8.png"/>',fitzpatrick_scale:true,category:"people"},man_artist:{keywords:["painter","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🎨" src="1f468-200d-1f3a8.png"/>',fitzpatrick_scale:true,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🚒" src="1f469-200d-1f692.png"/>',fitzpatrick_scale:true,category:"people"},man_firefighter:{keywords:["fireman","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🚒" src="1f468-200d-1f692.png"/>',fitzpatrick_scale:true,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍✈️" src="1f469-200d-2708-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍✈️" src="1f468-200d-2708-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍🚀" src="1f469-200d-1f680.png"/>',fitzpatrick_scale:true,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍🚀" src="1f468-200d-1f680.png"/>',fitzpatrick_scale:true,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍⚖️" src="1f469-200d-2696-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_judge:{keywords:["justice","court","man","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍⚖️" src="1f468-200d-2696-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦸‍♀️" src="1f9b8-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦸‍♂️" src="1f9b8-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦹‍♀️" src="1f9b9-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦹‍♂️" src="1f9b9-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤶" src="1f936.png"/>',fitzpatrick_scale:true,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🎅" src="1f385.png"/>',fitzpatrick_scale:true,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧙‍♀️" src="1f9d9-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧙‍♂️" src="1f9d9-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_elf:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧝‍♀️" src="1f9dd-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_elf:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧝‍♂️" src="1f9dd-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_vampire:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧛‍♀️" src="1f9db-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_vampire:{keywords:["man","male","dracula"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧛‍♂️" src="1f9db-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧟‍♀️" src="1f9df-200d-2640-fe0f.png"/>',fitzpatrick_scale:false,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧟‍♂️" src="1f9df-200d-2642-fe0f.png"/>',fitzpatrick_scale:false,category:"people"},woman_genie:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧞‍♀️" src="1f9de-200d-2640-fe0f.png"/>',fitzpatrick_scale:false,category:"people"},man_genie:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧞‍♂️" src="1f9de-200d-2642-fe0f.png"/>',fitzpatrick_scale:false,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧜‍♀️" src="1f9dc-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},merman:{keywords:["man","male","triton"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧜‍♂️" src="1f9dc-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_fairy:{keywords:["woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧚‍♀️" src="1f9da-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_fairy:{keywords:["man","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧚‍♂️" src="1f9da-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},angel:{keywords:["heaven","wings","halo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👼" src="1f47c.png"/>',fitzpatrick_scale:true,category:"people"},pregnant_woman:{keywords:["baby"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤰" src="1f930.png"/>',fitzpatrick_scale:true,category:"people"},breastfeeding:{keywords:["nursing","baby"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤱" src="1f931.png"/>',fitzpatrick_scale:true,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👸" src="1f478.png"/>',fitzpatrick_scale:true,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤴" src="1f934.png"/>',fitzpatrick_scale:true,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👰" src="1f470.png"/>',fitzpatrick_scale:true,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤵" src="1f935.png"/>',fitzpatrick_scale:true,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🏃‍♀️" src="1f3c3-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🏃" src="1f3c3.png"/>',fitzpatrick_scale:true,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🚶‍♀️" src="1f6b6-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},walking_man:{keywords:["human","feet","steps"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🚶" src="1f6b6.png"/>',fitzpatrick_scale:true,category:"people"},dancer:{keywords:["female","girl","woman","fun"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💃" src="1f483.png"/>',fitzpatrick_scale:true,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🕺" src="1f57a.png"/>',fitzpatrick_scale:true,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👯" src="1f46f.png"/>',fitzpatrick_scale:false,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👯‍♂️" src="1f46f-200d-2642-fe0f.png"/>',fitzpatrick_scale:false,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👫" src="1f46b.png"/>',fitzpatrick_scale:false,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👬" src="1f46c.png"/>',fitzpatrick_scale:false,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👭" src="1f46d.png"/>',fitzpatrick_scale:false,category:"people"},bowing_woman:{keywords:["woman","female","girl"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙇‍♀️" src="1f647-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},bowing_man:{keywords:["man","male","boy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙇" src="1f647.png"/>',fitzpatrick_scale:true,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤦‍♂️" src="1f926-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤦‍♀️" src="1f926-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤷" src="1f937.png"/>',fitzpatrick_scale:true,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🤷‍♂️" src="1f937-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💁" src="1f481.png"/>',fitzpatrick_scale:true,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💁‍♂️" src="1f481-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙅" src="1f645.png"/>',fitzpatrick_scale:true,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙅‍♂️" src="1f645-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙆" src="1f646.png"/>',fitzpatrick_scale:true,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙆‍♂️" src="1f646-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙋" src="1f64b.png"/>',fitzpatrick_scale:true,category:"people"},raising_hand_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙋‍♂️" src="1f64b-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},pouting_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙎" src="1f64e.png"/>',fitzpatrick_scale:true,category:"people"},pouting_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙎‍♂️" src="1f64e-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙍" src="1f64d.png"/>',fitzpatrick_scale:true,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙍‍♂️" src="1f64d-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},haircut_woman:{keywords:["female","girl","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💇" src="1f487.png"/>',fitzpatrick_scale:true,category:"people"},haircut_man:{keywords:["male","boy","man"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💇‍♂️" src="1f487-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💆" src="1f486.png"/>',fitzpatrick_scale:true,category:"people"},massage_man:{keywords:["male","boy","man","head"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💆‍♂️" src="1f486-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧖‍♀️" src="1f9d6-200d-2640-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧖‍♂️" src="1f9d6-200d-2642-fe0f.png"/>',fitzpatrick_scale:true,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💑" src="1f491.png"/>',fitzpatrick_scale:false,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍❤️‍👩" src="1f469-200d-2764-fe0f-200d-1f469.png"/>',fitzpatrick_scale:false,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍❤️‍👨" src="1f468-200d-2764-fe0f-200d-1f468.png"/>',fitzpatrick_scale:false,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💏" src="1f48f.png"/>',fitzpatrick_scale:false,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍❤️‍💋‍👩" src="1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.png"/>',fitzpatrick_scale:false,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍❤️‍💋‍👨" src="1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.png"/>',fitzpatrick_scale:false,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👪" src="1f46a.png"/>',fitzpatrick_scale:false,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👩‍👧" src="1f468-200d-1f469-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👩‍👧‍👦" src="1f468-200d-1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👩‍👦‍👦" src="1f468-200d-1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👩‍👧‍👧" src="1f468-200d-1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👩‍👦" src="1f469-200d-1f469-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👩‍👧" src="1f469-200d-1f469-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👩‍👧‍👦" src="1f469-200d-1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👩‍👦‍👦" src="1f469-200d-1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👩‍👧‍👧" src="1f469-200d-1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👨‍👦" src="1f468-200d-1f468-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👨‍👧" src="1f468-200d-1f468-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👨‍👧‍👦" src="1f468-200d-1f468-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👨‍👦‍👦" src="1f468-200d-1f468-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👨‍👧‍👧" src="1f468-200d-1f468-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👦" src="1f469-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👧" src="1f469-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👧‍👦" src="1f469-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👦‍👦" src="1f469-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👩‍👧‍👧" src="1f469-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👦" src="1f468-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👧" src="1f468-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👧‍👦" src="1f468-200d-1f467-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👦‍👦" src="1f468-200d-1f466-200d-1f466.png"/>',fitzpatrick_scale:false,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👨‍👧‍👧" src="1f468-200d-1f467-200d-1f467.png"/>',fitzpatrick_scale:false,category:"people"},yarn:{keywords:["ball","crochet","knit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧶" src="1f9f6.png"/>',fitzpatrick_scale:false,category:"people"},thread:{keywords:["needle","sewing","spool","string"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧵" src="1f9f5.png"/>',fitzpatrick_scale:false,category:"people"},coat:{keywords:["jacket"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧥" src="1f9e5.png"/>',fitzpatrick_scale:false,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥼" src="1f97c.png"/>',fitzpatrick_scale:false,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👚" src="1f45a.png"/>',fitzpatrick_scale:false,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👕" src="1f455.png"/>',fitzpatrick_scale:false,category:"people"},jeans:{keywords:["fashion","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👖" src="1f456.png"/>',fitzpatrick_scale:false,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👔" src="1f454.png"/>',fitzpatrick_scale:false,category:"people"},dress:{keywords:["clothes","fashion","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👗" src="1f457.png"/>',fitzpatrick_scale:false,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👙" src="1f459.png"/>',fitzpatrick_scale:false,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👘" src="1f458.png"/>',fitzpatrick_scale:false,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💄" src="1f484.png"/>',fitzpatrick_scale:false,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💋" src="1f48b.png"/>',fitzpatrick_scale:false,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👣" src="1f463.png"/>',fitzpatrick_scale:false,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥿" src="1f97f.png"/>',fitzpatrick_scale:false,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👠" src="1f460.png"/>',fitzpatrick_scale:false,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👡" src="1f461.png"/>',fitzpatrick_scale:false,category:"people"},boot:{keywords:["shoes","fashion"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👢" src="1f462.png"/>',fitzpatrick_scale:false,category:"people"},mans_shoe:{keywords:["fashion","male"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👞" src="1f45e.png"/>',fitzpatrick_scale:false,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👟" src="1f45f.png"/>',fitzpatrick_scale:false,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥾" src="1f97e.png"/>',fitzpatrick_scale:false,category:"people"},socks:{keywords:["stockings","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧦" src="1f9e6.png"/>',fitzpatrick_scale:false,category:"people"},gloves:{keywords:["hands","winter","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧤" src="1f9e4.png"/>',fitzpatrick_scale:false,category:"people"},scarf:{keywords:["neck","winter","clothes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧣" src="1f9e3.png"/>',fitzpatrick_scale:false,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👒" src="1f452.png"/>',fitzpatrick_scale:false,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🎩" src="1f3a9.png"/>',fitzpatrick_scale:false,category:"people"},billed_hat:{keywords:["cap","baseball"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧢" src="1f9e2.png"/>',fitzpatrick_scale:false,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="⛑" src="26d1.png"/>',fitzpatrick_scale:false,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🎓" src="1f393.png"/>',fitzpatrick_scale:false,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👑" src="1f451.png"/>',fitzpatrick_scale:false,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🎒" src="1f392.png"/>',fitzpatrick_scale:false,category:"people"},luggage:{keywords:["packing","travel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧳" src="1f9f3.png"/>',fitzpatrick_scale:false,category:"people"},pouch:{keywords:["bag","accessories","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👝" src="1f45d.png"/>',fitzpatrick_scale:false,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👛" src="1f45b.png"/>',fitzpatrick_scale:false,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👜" src="1f45c.png"/>',fitzpatrick_scale:false,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💼" src="1f4bc.png"/>',fitzpatrick_scale:false,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="👓" src="1f453.png"/>',fitzpatrick_scale:false,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🕶" src="1f576.png"/>',fitzpatrick_scale:false,category:"people"},goggles:{keywords:["eyes","protection","safety"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥽" src="1f97d.png"/>',fitzpatrick_scale:false,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💍" src="1f48d.png"/>',fitzpatrick_scale:false,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌂" src="1f302.png"/>',fitzpatrick_scale:false,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐶" src="1f436.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐱" src="1f431.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐭" src="1f42d.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐹" src="1f439.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐰" src="1f430.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦊" src="1f98a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐻" src="1f43b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐼" src="1f43c.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},koala:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐨" src="1f428.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐯" src="1f42f.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},lion:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦁" src="1f981.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐮" src="1f42e.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐷" src="1f437.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐽" src="1f43d.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐸" src="1f438.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦑" src="1f991.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐙" src="1f419.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦐" src="1f990.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐵" src="1f435.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦍" src="1f98d.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙈" src="1f648.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙉" src="1f649.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🙊" src="1f64a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐒" src="1f412.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐔" src="1f414.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐧" src="1f427.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐦" src="1f426.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐤" src="1f424.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐣" src="1f423.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐥" src="1f425.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦆" src="1f986.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦅" src="1f985.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦉" src="1f989.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦇" src="1f987.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐺" src="1f43a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},boar:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐗" src="1f417.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐴" src="1f434.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦄" src="1f984.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐝" src="1f41d.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐛" src="1f41b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦋" src="1f98b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐌" src="1f40c.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐞" src="1f41e.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐜" src="1f41c.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦗" src="1f997.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🕷" src="1f577.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦂" src="1f982.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦀" src="1f980.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐍" src="1f40d.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦎" src="1f98e.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦖" src="1f996.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦕" src="1f995.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐢" src="1f422.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐠" src="1f420.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐟" src="1f41f.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐡" src="1f421.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐬" src="1f42c.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦈" src="1f988.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐳" src="1f433.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐋" src="1f40b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐊" src="1f40a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐆" src="1f406.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦓" src="1f993.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐅" src="1f405.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐃" src="1f403.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐂" src="1f402.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐄" src="1f404.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦌" src="1f98c.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐪" src="1f42a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐫" src="1f42b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦒" src="1f992.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐘" src="1f418.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦏" src="1f98f.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},goat:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐐" src="1f410.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐏" src="1f40f.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐑" src="1f411.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐎" src="1f40e.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐖" src="1f416.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐀" src="1f400.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐁" src="1f401.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐓" src="1f413.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦃" src="1f983.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},dove:{keywords:["animal","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🕊" src="1f54a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐕" src="1f415.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐩" src="1f429.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐈" src="1f408.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐇" src="1f407.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐿" src="1f43f.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦔" src="1f994.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦝" src="1f99d.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦙" src="1f999.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦛" src="1f99b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦘" src="1f998.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦡" src="1f9a1.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦢" src="1f9a2.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦚" src="1f99a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦜" src="1f99c.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦞" src="1f99e.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦟" src="1f99f.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐾" src="1f43e.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐉" src="1f409.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐲" src="1f432.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌵" src="1f335.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🎄" src="1f384.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌲" src="1f332.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌳" src="1f333.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌴" src="1f334.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌱" src="1f331.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌿" src="1f33f.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☘" src="2618.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍀" src="1f340.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🎍" src="1f38d.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🎋" src="1f38b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍃" src="1f343.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍂" src="1f342.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍁" src="1f341.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌾" src="1f33e.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌺" src="1f33a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌻" src="1f33b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌹" src="1f339.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥀" src="1f940.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌷" src="1f337.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌼" src="1f33c.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌸" src="1f338.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💐" src="1f490.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍄" src="1f344.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌰" src="1f330.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🎃" src="1f383.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🐚" src="1f41a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🕸" src="1f578.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌎" src="1f30e.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌍" src="1f30d.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌏" src="1f30f.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌕" src="1f315.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌖" src="1f316.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌗" src="1f317.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌘" src="1f318.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌑" src="1f311.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌒" src="1f312.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌓" src="1f313.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌔" src="1f314.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌚" src="1f31a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌝" src="1f31d.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌛" src="1f31b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌜" src="1f31c.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌞" src="1f31e.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌙" src="1f319.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},star:{keywords:["night","yellow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="⭐" src="2b50.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌟" src="1f31f.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💫" src="1f4ab.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="✨" src="2728.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},comet:{keywords:["space"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☄" src="2604.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☀️" src="2600.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌤" src="1f324.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="⛅" src="26c5.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌥" src="1f325.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌦" src="1f326.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☁️" src="2601.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌧" src="1f327.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="⛈" src="26c8.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌩" src="1f329.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="⚡" src="26a1.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🔥" src="1f525.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💥" src="1f4a5.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="❄️" src="2744.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌨" src="1f328.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="⛄" src="26c4.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☃" src="2603.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌬" src="1f32c.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💨" src="1f4a8.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌪" src="1f32a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},fog:{keywords:["weather"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌫" src="1f32b.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☂" src="2602.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="☔" src="2614.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💧" src="1f4a7.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="💦" src="1f4a6.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌊" src="1f30a.png"/>',fitzpatrick_scale:false,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍏" src="1f34f.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍎" src="1f34e.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍐" src="1f350.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍊" src="1f34a.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍋" src="1f34b.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍌" src="1f34c.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍉" src="1f349.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍇" src="1f347.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍓" src="1f353.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍈" src="1f348.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},cherries:{keywords:["food","fruit"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍒" src="1f352.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍑" src="1f351.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍍" src="1f34d.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥥" src="1f965.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥝" src="1f95d.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥭" src="1f96d.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},avocado:{keywords:["fruit","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥑" src="1f951.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥦" src="1f966.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍅" src="1f345.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍆" src="1f346.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥒" src="1f952.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥕" src="1f955.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌶" src="1f336.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥔" src="1f954.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌽" src="1f33d.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥬" src="1f96c.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍠" src="1f360.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},peanuts:{keywords:["food","nut"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥜" src="1f95c.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍯" src="1f36f.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥐" src="1f950.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍞" src="1f35e.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥖" src="1f956.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥯" src="1f96f.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥨" src="1f968.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},cheese:{keywords:["food","chadder"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🧀" src="1f9c0.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥚" src="1f95a.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥓" src="1f953.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥩" src="1f969.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥞" src="1f95e.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍗" src="1f357.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍖" src="1f356.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},bone:{keywords:["skeleton"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🦴" src="1f9b4.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍤" src="1f364.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍳" src="1f373.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍔" src="1f354.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍟" src="1f35f.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥙" src="1f959.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌭" src="1f32d.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},pizza:{keywords:["food","party"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍕" src="1f355.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥪" src="1f96a.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},canned_food:{keywords:["food","soup"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥫" src="1f96b.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍝" src="1f35d.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},taco:{keywords:["food","mexican"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌮" src="1f32e.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},burrito:{keywords:["food","mexican"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🌯" src="1f32f.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥗" src="1f957.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥘" src="1f958.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍜" src="1f35c.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍲" src="1f372.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍥" src="1f365.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🥠" src="1f960.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍣" src="1f363.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍱" src="1f371.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍛" src="1f35b.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍙" src="1f359.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},rice:{keywords:["food","china","asian"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍚" src="1f35a.png"/>',fitzpatrick_scale:false,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],char:'<img data-emoticon="true" style="width:1em;height:1em;margin:0 .05em 0 .1em;vertical-align:-.1em" draggable="false" alt="🍘" src="1f358.p
Download .txt
gitextract_9pueadna/

├── .editorconfig
├── .gitattributes
├── .gitignore
├── .prettierrc
├── .vscode/
│   └── extensions.json
├── LICENSE
├── README.md
├── auto-imports.d.ts
├── components.d.ts
├── env.d.ts
├── eslint.config.ts
├── index.html
├── package.json
├── public/
│   └── tinymce6.8.6/
│       ├── langs/
│       │   └── zh_CN.js
│       ├── license.txt
│       ├── notices.txt
│       ├── plugins/
│       │   ├── emoticons/
│       │   │   └── js/
│       │   │       ├── emojiimages.js
│       │   │       └── emojis.js
│       │   └── help/
│       │       └── js/
│       │           └── i18n/
│       │               └── keynav/
│       │                   ├── ar.js
│       │                   ├── bg_BG.js
│       │                   ├── ca.js
│       │                   ├── cs.js
│       │                   ├── da.js
│       │                   ├── de.js
│       │                   ├── el.js
│       │                   ├── en.js
│       │                   ├── es.js
│       │                   ├── eu.js
│       │                   ├── fa.js
│       │                   ├── fi.js
│       │                   ├── fr_FR.js
│       │                   ├── he_IL.js
│       │                   ├── hi.js
│       │                   ├── hr.js
│       │                   ├── hu_HU.js
│       │                   ├── id.js
│       │                   ├── it.js
│       │                   ├── ja.js
│       │                   ├── kk.js
│       │                   ├── ko_KR.js
│       │                   ├── ms.js
│       │                   ├── nb_NO.js
│       │                   ├── nl.js
│       │                   ├── pl.js
│       │                   ├── pt_BR.js
│       │                   ├── pt_PT.js
│       │                   ├── ro.js
│       │                   ├── ru.js
│       │                   ├── sk.js
│       │                   ├── sl_SI.js
│       │                   ├── sv_SE.js
│       │                   ├── th_TH.js
│       │                   ├── tr.js
│       │                   ├── uk.js
│       │                   ├── vi.js
│       │                   ├── zh_CN.js
│       │                   └── zh_TW.js
│       ├── skins/
│       │   ├── content/
│       │   │   ├── dark/
│       │   │   │   └── content.js
│       │   │   ├── default/
│       │   │   │   └── content.js
│       │   │   ├── document/
│       │   │   │   └── content.js
│       │   │   ├── tinymce-5/
│       │   │   │   └── content.js
│       │   │   ├── tinymce-5-dark/
│       │   │   │   └── content.js
│       │   │   └── writer/
│       │   │       └── content.js
│       │   └── ui/
│       │       ├── oxide/
│       │       │   ├── content.inline.js
│       │       │   ├── content.js
│       │       │   ├── skin.js
│       │       │   └── skin.shadowdom.js
│       │       ├── oxide-dark/
│       │       │   ├── content.inline.js
│       │       │   ├── content.js
│       │       │   ├── skin.js
│       │       │   └── skin.shadowdom.js
│       │       ├── tinymce-5/
│       │       │   ├── content.inline.js
│       │       │   ├── content.js
│       │       │   ├── skin.js
│       │       │   └── skin.shadowdom.js
│       │       └── tinymce-5-dark/
│       │           ├── content.inline.js
│       │           ├── content.js
│       │           ├── skin.js
│       │           └── skin.shadowdom.js
│       └── tinymce.d.ts
├── src/
│   ├── App.vue
│   ├── apis/
│   │   ├── admin.ts
│   │   ├── brand.ts
│   │   ├── companyAddress.ts
│   │   ├── coupon.ts
│   │   ├── flash.ts
│   │   ├── flashProductRelation.ts
│   │   ├── flashSession.ts
│   │   ├── homeAdvertise.ts
│   │   ├── homeBrand.ts
│   │   ├── homeSubject.ts
│   │   ├── memberLevel.ts
│   │   ├── menu.ts
│   │   ├── newProduct.ts
│   │   ├── order.ts
│   │   ├── orderSetting.ts
│   │   ├── oss.ts
│   │   ├── prefrenceArea.ts
│   │   ├── product.ts
│   │   ├── productAttr.ts
│   │   ├── productAttrCate.ts
│   │   ├── productCate.ts
│   │   ├── recommendProduct.ts
│   │   ├── resource.ts
│   │   ├── resourceCategory.ts
│   │   ├── returnApply.ts
│   │   ├── returnReason.ts
│   │   ├── role.ts
│   │   ├── skuStock.ts
│   │   └── subject.ts
│   ├── components/
│   │   ├── Breadcrumb/
│   │   │   └── index.vue
│   │   ├── Hamburger/
│   │   │   └── index.vue
│   │   ├── ScrollBar/
│   │   │   └── index.vue
│   │   ├── SvgIcon/
│   │   │   └── index.vue
│   │   ├── Tinymce/
│   │   │   └── index.vue
│   │   └── Upload/
│   │       ├── multiUpload.vue
│   │       └── singleUpload.vue
│   ├── icons/
│   │   └── index.ts
│   ├── main.ts
│   ├── router/
│   │   ├── guard.ts
│   │   └── index.ts
│   ├── stores/
│   │   ├── app.ts
│   │   ├── counter.ts
│   │   ├── order.ts
│   │   ├── permission.ts
│   │   └── user.ts
│   ├── styles/
│   │   ├── element/
│   │   │   └── index.scss
│   │   ├── element-ui.scss
│   │   ├── index.scss
│   │   ├── mixin.scss
│   │   ├── sidebar.scss
│   │   ├── transition.scss
│   │   ├── var.scss
│   │   └── variables.scss
│   ├── types/
│   │   ├── admin.d.ts
│   │   ├── brand.d.ts
│   │   ├── common.d.ts
│   │   ├── companyAddress.d.ts
│   │   ├── coupon.d.ts
│   │   ├── flash.d.ts
│   │   ├── homeAdvertist.d.ts
│   │   ├── homeBrand.d.ts
│   │   ├── homeSubject.d.ts
│   │   ├── memberLevel.d.ts
│   │   ├── menu.d.ts
│   │   ├── newProduct.d.ts
│   │   ├── order.d.ts
│   │   ├── orderSetting.d.ts
│   │   ├── oss.d.ts
│   │   ├── prefrenceArea.d.ts
│   │   ├── product.d.ts
│   │   ├── productAttr.d.ts
│   │   ├── productCate.d.ts
│   │   ├── recommendProduct.d.ts
│   │   ├── resource.d.ts
│   │   ├── returnApply.d.ts
│   │   ├── returnReason.d.ts
│   │   ├── role.d.ts
│   │   ├── router.d.ts
│   │   ├── skuStock.d.ts
│   │   └── subject.d.ts
│   ├── utils/
│   │   ├── constant.ts
│   │   ├── cookie.ts
│   │   ├── datetime.ts
│   │   ├── http.ts
│   │   └── validate.ts
│   └── views/
│       ├── home/
│       │   └── index.vue
│       ├── layout/
│       │   ├── Layout.vue
│       │   ├── components/
│       │   │   ├── AppMain.vue
│       │   │   ├── Navbar.vue
│       │   │   └── Sidebar/
│       │   │       ├── SidebarItem.vue
│       │   │       └── index.vue
│       │   └── composables/
│       │       └── useResizeHandler.ts
│       ├── normal/
│       │   ├── 404/
│       │   │   └── index.vue
│       │   ├── link/
│       │   │   └── index.vue
│       │   └── login/
│       │       └── index.vue
│       ├── oms/
│       │   ├── apply/
│       │   │   ├── applyDetail.vue
│       │   │   ├── index.vue
│       │   │   └── reason.vue
│       │   └── order/
│       │       ├── components/
│       │       │   └── logisticsDialog.vue
│       │       ├── deliverOrderList.vue
│       │       ├── index.vue
│       │       ├── orderDetail.vue
│       │       └── setting.vue
│       ├── pms/
│       │   ├── brand/
│       │   │   ├── add.vue
│       │   │   ├── components/
│       │   │   │   └── BrandDetail.vue
│       │   │   ├── index.vue
│       │   │   └── update.vue
│       │   ├── product/
│       │   │   ├── add.vue
│       │   │   ├── components/
│       │   │   │   ├── ProductAttrDetail.vue
│       │   │   │   ├── ProductDetail.vue
│       │   │   │   ├── ProductInfoDetail.vue
│       │   │   │   ├── ProductRelationDetail.vue
│       │   │   │   └── ProductSaleDetail.vue
│       │   │   ├── index.vue
│       │   │   └── update.vue
│       │   ├── productAttr/
│       │   │   ├── addProductAttr.vue
│       │   │   ├── components/
│       │   │   │   └── ProductAttrDetail.vue
│       │   │   ├── index.vue
│       │   │   ├── productAttrList.vue
│       │   │   └── updateProductAttr.vue
│       │   └── productCate/
│       │       ├── add.vue
│       │       ├── components/
│       │       │   └── ProductCateDetail.vue
│       │       ├── index.vue
│       │       └── update.vue
│       ├── sms/
│       │   ├── advertise/
│       │   │   ├── add.vue
│       │   │   ├── components/
│       │   │   │   └── HomeAdvertiseDetail.vue
│       │   │   ├── index.vue
│       │   │   └── update.vue
│       │   ├── brand/
│       │   │   └── index.vue
│       │   ├── coupon/
│       │   │   ├── add.vue
│       │   │   ├── components/
│       │   │   │   └── CouponDetail.vue
│       │   │   ├── history.vue
│       │   │   ├── index.vue
│       │   │   └── update.vue
│       │   ├── flash/
│       │   │   ├── index.vue
│       │   │   ├── productRelationList.vue
│       │   │   ├── selectSessionList.vue
│       │   │   └── sessionList.vue
│       │   ├── hot/
│       │   │   └── index.vue
│       │   ├── new/
│       │   │   └── index.vue
│       │   └── subject/
│       │       └── index.vue
│       ├── test/
│       │   ├── axios/
│       │   │   └── index.vue
│       │   ├── element/
│       │   │   └── index.vue
│       │   ├── index.vue
│       │   ├── pinia/
│       │   │   └── index.vue
│       │   └── vrouter/
│       │       ├── category/
│       │       │   └── index.vue
│       │       ├── home/
│       │       │   └── index.vue
│       │       ├── layout/
│       │       │   ├── components/
│       │       │   │   ├── LayoutFooter.vue
│       │       │   │   └── LayoutHeader.vue
│       │       │   └── index.vue
│       │       └── login/
│       │           └── index.vue
│       └── ums/
│           ├── admin/
│           │   └── index.vue
│           ├── menu/
│           │   ├── add.vue
│           │   ├── components/
│           │   │   └── MenuDetail.vue
│           │   ├── index.vue
│           │   └── update.vue
│           ├── resource/
│           │   ├── categoryList.vue
│           │   └── index.vue
│           └── role/
│               ├── allocMenu.vue
│               ├── allocResource.vue
│               └── index.vue
├── tsconfig.app.json
├── tsconfig.json
├── tsconfig.node.json
└── vite.config.ts
Download .txt
SYMBOL INDEX (863 symbols across 67 files)

FILE: components.d.ts
  type GlobalComponents (line 13) | interface GlobalComponents {
  type GlobalDirectives (line 61) | interface GlobalDirectives {

FILE: env.d.ts
  type ImportMetaEnv (line 3) | interface ImportMetaEnv {
  type ImportMeta (line 14) | interface ImportMeta {

FILE: public/tinymce6.8.6/tinymce.d.ts
  type StringPathBookmark (line 1) | interface StringPathBookmark {
  type RangeBookmark (line 6) | interface RangeBookmark {
  type IdBookmark (line 10) | interface IdBookmark {
  type IndexBookmark (line 15) | interface IndexBookmark {
  type PathBookmark (line 19) | interface PathBookmark {
  type Bookmark (line 25) | type Bookmark = StringPathBookmark | RangeBookmark | IdBookmark | IndexB...
  type NormalizedEvent (line 26) | type NormalizedEvent<E, T = any> = E & {
  type MappedEvent (line 36) | type MappedEvent<T extends {}, K extends string> = K extends keyof T ? T...
  type NativeEventMap (line 37) | interface NativeEventMap {
  type EditorEvent (line 79) | type EditorEvent<T> = NormalizedEvent<T>;
  type EventDispatcherSettings (line 80) | interface EventDispatcherSettings {
  type EventDispatcherConstructor (line 85) | interface EventDispatcherConstructor<T extends {}> {
  class EventDispatcher (line 90) | class EventDispatcher<T extends {}> {
  type UndoLevelType (line 104) | type UndoLevelType = 'fragmented' | 'complete';
  type BaseUndoLevel (line 105) | interface BaseUndoLevel {
  type FragmentedUndoLevel (line 110) | interface FragmentedUndoLevel extends BaseUndoLevel {
  type CompleteUndoLevel (line 115) | interface CompleteUndoLevel extends BaseUndoLevel {
  type NewUndoLevel (line 120) | type NewUndoLevel = CompleteUndoLevel | FragmentedUndoLevel;
  type UndoLevel (line 121) | type UndoLevel = NewUndoLevel & {
  type UndoManager (line 124) | interface UndoManager {
  type SchemaType (line 140) | type SchemaType = 'html4' | 'html5' | 'html5-strict';
  type ElementSettings (line 141) | interface ElementSettings {
  type SchemaSettings (line 154) | interface SchemaSettings extends ElementSettings {
  type Attribute (line 167) | interface Attribute {
  type DefaultAttribute (line 173) | interface DefaultAttribute {
  type AttributePattern (line 177) | interface AttributePattern extends Attribute {
  type ElementRule (line 180) | interface ElementRule {
  type SchemaElement (line 192) | interface SchemaElement extends ElementRule {
  type SchemaMap (line 197) | interface SchemaMap {
  type SchemaRegExpMap (line 200) | interface SchemaRegExpMap {
  type Schema (line 203) | interface Schema {
  type Attributes$1 (line 233) | type Attributes$1 = Array<{
  type AstNodeConstructor (line 239) | interface AstNodeConstructor {
  class AstNode (line 244) | class AstNode {
  type Content (line 273) | type Content = string | AstNode;
  type ContentFormat (line 274) | type ContentFormat = 'raw' | 'text' | 'html' | 'tree';
  type GetContentArgs (line 275) | interface GetContentArgs {
  type SetContentArgs (line 284) | interface SetContentArgs {
  type GetSelectionContentArgs (line 295) | interface GetSelectionContentArgs extends GetContentArgs {
  type SetSelectionContentArgs (line 299) | interface SetSelectionContentArgs extends SetContentArgs {
  type BlobInfoData (line 303) | interface BlobInfoData {
  type BlobInfo (line 312) | interface BlobInfo {
  type BlobCache (line 321) | interface BlobCache {
  type BlobInfoImagePair (line 334) | interface BlobInfoImagePair {
  class NodeChange (line 338) | class NodeChange {
  type SelectionOverrides (line 345) | interface SelectionOverrides {
  type Quirks (line 351) | interface Quirks {
  type DecoratorData (line 355) | type DecoratorData = Record<string, any>;
  type Decorator (line 356) | type Decorator = (uid: string, data: DecoratorData) => {
  type AnnotationListener (line 360) | type AnnotationListener = (state: boolean, name: string, data?: {
  type AnnotationListenerApi (line 364) | type AnnotationListenerApi = AnnotationListener;
  type AnnotatorSettings (line 365) | interface AnnotatorSettings {
  type Annotator (line 369) | interface Annotator {
  type GeomRect (line 377) | interface GeomRect {
  type Rect (line 383) | interface Rect {
  type NotificationManagerImpl (line 392) | interface NotificationManagerImpl {
  type NotificationSpec (line 397) | interface NotificationSpec {
  type NotificationApi (line 405) | interface NotificationApi {
  type NotificationManager (line 415) | interface NotificationManager {
  type UploadFailure (line 420) | interface UploadFailure {
  type ProgressFn (line 424) | type ProgressFn = (percent: number) => void;
  type UploadHandler (line 425) | type UploadHandler = (blobInfo: BlobInfo, progress: ProgressFn) => Promi...
  type UploadResult$2 (line 426) | interface UploadResult$2 {
  type RawPattern (line 432) | interface RawPattern {
  type InlineBasePattern (line 440) | interface InlineBasePattern {
  type InlineFormatPattern (line 444) | interface InlineFormatPattern extends InlineBasePattern {
  type InlineCmdPattern (line 448) | interface InlineCmdPattern extends InlineBasePattern {
  type InlinePattern (line 453) | type InlinePattern = InlineFormatPattern | InlineCmdPattern;
  type BlockBasePattern (line 454) | interface BlockBasePattern {
  type BlockFormatPattern (line 457) | interface BlockFormatPattern extends BlockBasePattern {
  type BlockCmdPattern (line 461) | interface BlockCmdPattern extends BlockBasePattern {
  type BlockPattern (line 466) | type BlockPattern = BlockFormatPattern | BlockCmdPattern;
  type Pattern (line 467) | type Pattern = InlinePattern | BlockPattern;
  type DynamicPatternContext (line 468) | interface DynamicPatternContext {
  type DynamicPatternsLookup (line 472) | type DynamicPatternsLookup = (ctx: DynamicPatternContext) => Pattern[];
  type RawDynamicPatternsLookup (line 473) | type RawDynamicPatternsLookup = (ctx: DynamicPatternContext) => RawPatte...
  type AlertBannerSpec (line 474) | interface AlertBannerSpec {
  type ButtonSpec (line 481) | interface ButtonSpec {
  type FormComponentSpec (line 491) | interface FormComponentSpec {
  type FormComponentWithLabelSpec (line 495) | interface FormComponentWithLabelSpec extends FormComponentSpec {
  type CheckboxSpec (line 498) | interface CheckboxSpec extends FormComponentSpec {
  type CollectionSpec (line 503) | interface CollectionSpec extends FormComponentWithLabelSpec {
  type CollectionItem (line 506) | interface CollectionItem {
  type ColorInputSpec (line 511) | interface ColorInputSpec extends FormComponentWithLabelSpec {
  type ColorPickerSpec (line 515) | interface ColorPickerSpec extends FormComponentWithLabelSpec {
  type CustomEditorInit (line 518) | interface CustomEditorInit {
  type CustomEditorInitFn (line 523) | type CustomEditorInitFn = (elm: HTMLElement, settings: any) => Promise<C...
  type CustomEditorOldSpec (line 524) | interface CustomEditorOldSpec extends FormComponentSpec {
  type CustomEditorNewSpec (line 529) | interface CustomEditorNewSpec extends FormComponentSpec {
  type CustomEditorSpec (line 536) | type CustomEditorSpec = CustomEditorOldSpec | CustomEditorNewSpec;
  type DropZoneSpec (line 537) | interface DropZoneSpec extends FormComponentWithLabelSpec {
  type GridSpec (line 540) | interface GridSpec {
  type HtmlPanelSpec (line 545) | interface HtmlPanelSpec {
  type IframeSpec (line 550) | interface IframeSpec extends FormComponentWithLabelSpec {
  type ImagePreviewSpec (line 557) | interface ImagePreviewSpec extends FormComponentSpec {
  type InputSpec (line 561) | interface InputSpec extends FormComponentWithLabelSpec {
  type Alignment (line 568) | type Alignment = 'start' | 'center' | 'end';
  type LabelSpec (line 569) | interface LabelSpec {
  type ListBoxSingleItemSpec (line 575) | interface ListBoxSingleItemSpec {
  type ListBoxNestedItemSpec (line 579) | interface ListBoxNestedItemSpec {
  type ListBoxItemSpec (line 583) | type ListBoxItemSpec = ListBoxNestedItemSpec | ListBoxSingleItemSpec;
  type ListBoxSpec (line 584) | interface ListBoxSpec extends FormComponentWithLabelSpec {
  type PanelSpec (line 589) | interface PanelSpec {
  type SelectBoxItemSpec (line 594) | interface SelectBoxItemSpec {
  type SelectBoxSpec (line 598) | interface SelectBoxSpec extends FormComponentWithLabelSpec {
  type SizeInputSpec (line 604) | interface SizeInputSpec extends FormComponentWithLabelSpec {
  type SliderSpec (line 609) | interface SliderSpec extends FormComponentSpec {
  type TableSpec (line 615) | interface TableSpec {
  type TextAreaSpec (line 620) | interface TextAreaSpec extends FormComponentWithLabelSpec {
  type BaseToolbarButtonSpec (line 626) | interface BaseToolbarButtonSpec<I extends BaseToolbarButtonInstanceApi> {
  type BaseToolbarButtonInstanceApi (line 633) | interface BaseToolbarButtonInstanceApi {
  type ToolbarButtonSpec (line 639) | interface ToolbarButtonSpec extends BaseToolbarButtonSpec<ToolbarButtonI...
  type ToolbarButtonInstanceApi (line 643) | interface ToolbarButtonInstanceApi extends BaseToolbarButtonInstanceApi {
  type ToolbarGroupSetting (line 645) | interface ToolbarGroupSetting {
  type ToolbarConfig (line 649) | type ToolbarConfig = string | ToolbarGroupSetting[];
  type GroupToolbarButtonInstanceApi (line 650) | interface GroupToolbarButtonInstanceApi extends BaseToolbarButtonInstanc...
  type GroupToolbarButtonSpec (line 652) | interface GroupToolbarButtonSpec extends BaseToolbarButtonSpec<GroupTool...
  type CardImageSpec (line 656) | interface CardImageSpec {
  type CardTextSpec (line 662) | interface CardTextSpec {
  type CardItemSpec (line 668) | type CardItemSpec = CardContainerSpec | CardImageSpec | CardTextSpec;
  type CardContainerDirection (line 669) | type CardContainerDirection = 'vertical' | 'horizontal';
  type CardContainerAlign (line 670) | type CardContainerAlign = 'left' | 'right';
  type CardContainerValign (line 671) | type CardContainerValign = 'top' | 'middle' | 'bottom';
  type CardContainerSpec (line 672) | interface CardContainerSpec {
  type CommonMenuItemSpec (line 679) | interface CommonMenuItemSpec {
  type CommonMenuItemInstanceApi (line 686) | interface CommonMenuItemInstanceApi {
  type CardMenuItemInstanceApi (line 690) | interface CardMenuItemInstanceApi extends CommonMenuItemInstanceApi {
  type CardMenuItemSpec (line 692) | interface CardMenuItemSpec extends Omit<CommonMenuItemSpec, 'text' | 'sh...
  type ChoiceMenuItemSpec (line 699) | interface ChoiceMenuItemSpec extends CommonMenuItemSpec {
  type ChoiceMenuItemInstanceApi (line 703) | interface ChoiceMenuItemInstanceApi extends CommonMenuItemInstanceApi {
  type ContextMenuItem (line 707) | interface ContextMenuItem extends CommonMenuItemSpec {
  type ContextSubMenu (line 713) | interface ContextSubMenu extends CommonMenuItemSpec {
  type ContextMenuContents (line 719) | type ContextMenuContents = string | ContextMenuItem | SeparatorMenuItemS...
  type ContextMenuApi (line 720) | interface ContextMenuApi {
  type FancyActionArgsMap (line 723) | interface FancyActionArgsMap {
  type BaseFancyMenuItemSpec (line 732) | interface BaseFancyMenuItemSpec<T extends keyof FancyActionArgsMap> {
  type InsertTableMenuItemSpec (line 738) | interface InsertTableMenuItemSpec extends BaseFancyMenuItemSpec<'insertt...
  type ColorSwatchMenuItemSpec (line 742) | interface ColorSwatchMenuItemSpec extends BaseFancyMenuItemSpec<'colorsw...
  type FancyMenuItemSpec (line 751) | type FancyMenuItemSpec = InsertTableMenuItemSpec | ColorSwatchMenuItemSpec;
  type MenuItemSpec (line 752) | interface MenuItemSpec extends CommonMenuItemSpec {
  type MenuItemInstanceApi (line 758) | interface MenuItemInstanceApi extends CommonMenuItemInstanceApi {
  type SeparatorMenuItemSpec (line 760) | interface SeparatorMenuItemSpec {
  type ToggleMenuItemSpec (line 764) | interface ToggleMenuItemSpec extends CommonMenuItemSpec {
  type ToggleMenuItemInstanceApi (line 771) | interface ToggleMenuItemInstanceApi extends CommonMenuItemInstanceApi {
  type NestedMenuItemContents (line 775) | type NestedMenuItemContents = string | MenuItemSpec | NestedMenuItemSpec...
  type NestedMenuItemSpec (line 776) | interface NestedMenuItemSpec extends CommonMenuItemSpec {
  type NestedMenuItemInstanceApi (line 782) | interface NestedMenuItemInstanceApi extends CommonMenuItemInstanceApi {
  type MenuButtonItemTypes (line 786) | type MenuButtonItemTypes = NestedMenuItemContents;
  type SuccessCallback$1 (line 787) | type SuccessCallback$1 = (menu: string | MenuButtonItemTypes[]) => void;
  type MenuButtonFetchContext (line 788) | interface MenuButtonFetchContext {
  type BaseMenuButtonSpec (line 791) | interface BaseMenuButtonSpec {
  type BaseMenuButtonInstanceApi (line 801) | interface BaseMenuButtonInstanceApi {
  type ToolbarMenuButtonSpec (line 809) | interface ToolbarMenuButtonSpec extends BaseMenuButtonSpec {
  type ToolbarMenuButtonInstanceApi (line 813) | interface ToolbarMenuButtonInstanceApi extends BaseMenuButtonInstanceApi {
  type ToolbarSplitButtonItemTypes (line 815) | type ToolbarSplitButtonItemTypes = ChoiceMenuItemSpec | SeparatorMenuIte...
  type SuccessCallback (line 816) | type SuccessCallback = (menu: ToolbarSplitButtonItemTypes[]) => void;
  type SelectPredicate (line 817) | type SelectPredicate = (value: string) => boolean;
  type PresetTypes (line 818) | type PresetTypes = 'color' | 'normal' | 'listpreview';
  type ColumnTypes$1 (line 819) | type ColumnTypes$1 = number | 'auto';
  type ToolbarSplitButtonSpec (line 820) | interface ToolbarSplitButtonSpec {
  type ToolbarSplitButtonInstanceApi (line 833) | interface ToolbarSplitButtonInstanceApi {
  type BaseToolbarToggleButtonSpec (line 843) | interface BaseToolbarToggleButtonSpec<I extends BaseToolbarButtonInstanc...
  type BaseToolbarToggleButtonInstanceApi (line 846) | interface BaseToolbarToggleButtonInstanceApi extends BaseToolbarButtonIn...
  type ToolbarToggleButtonSpec (line 850) | interface ToolbarToggleButtonSpec extends BaseToolbarToggleButtonSpec<To...
  type ToolbarToggleButtonInstanceApi (line 854) | interface ToolbarToggleButtonInstanceApi extends BaseToolbarToggleButton...
  type Id (line 856) | type Id = string;
  type TreeSpec (line 857) | interface TreeSpec {
  type BaseTreeItemSpec (line 868) | interface BaseTreeItemSpec {
  type DirectorySpec (line 873) | interface DirectorySpec extends BaseTreeItemSpec {
  type LeafSpec (line 877) | interface LeafSpec extends BaseTreeItemSpec {
  type TreeItemSpec (line 880) | type TreeItemSpec = DirectorySpec | LeafSpec;
  type UrlInputSpec (line 881) | interface UrlInputSpec extends FormComponentWithLabelSpec {
  type UrlInputData (line 887) | interface UrlInputData {
  type BodyComponentSpec (line 893) | type BodyComponentSpec = BarSpec | ButtonSpec | CheckboxSpec | TextAreaS...
  type BarSpec (line 894) | interface BarSpec {
  type DialogToggleMenuItemSpec (line 898) | interface DialogToggleMenuItemSpec extends CommonMenuItemSpec {
  type DialogFooterMenuButtonItemSpec (line 902) | type DialogFooterMenuButtonItemSpec = DialogToggleMenuItemSpec;
  type BaseDialogFooterButtonSpec (line 903) | interface BaseDialogFooterButtonSpec {
  type DialogFooterNormalButtonSpec (line 911) | interface DialogFooterNormalButtonSpec extends BaseDialogFooterButtonSpec {
  type DialogFooterMenuButtonSpec (line 915) | interface DialogFooterMenuButtonSpec extends BaseDialogFooterButtonSpec {
  type DialogFooterToggleButtonSpec (line 922) | interface DialogFooterToggleButtonSpec extends BaseDialogFooterButtonSpec {
  type DialogFooterButtonSpec (line 929) | type DialogFooterButtonSpec = DialogFooterNormalButtonSpec | DialogFoote...
  type TabSpec (line 930) | interface TabSpec {
  type TabPanelSpec (line 935) | interface TabPanelSpec {
  type DialogDataItem (line 939) | type DialogDataItem = any;
  type DialogData (line 940) | type DialogData = Record<string, DialogDataItem>;
  type DialogInstanceApi (line 941) | interface DialogInstanceApi<T extends DialogData> {
  type DialogActionDetails (line 953) | interface DialogActionDetails {
  type DialogChangeDetails (line 957) | interface DialogChangeDetails<T> {
  type DialogTabChangeDetails (line 960) | interface DialogTabChangeDetails {
  type DialogActionHandler (line 964) | type DialogActionHandler<T extends DialogData> = (api: DialogInstanceApi...
  type DialogChangeHandler (line 965) | type DialogChangeHandler<T extends DialogData> = (api: DialogInstanceApi...
  type DialogSubmitHandler (line 966) | type DialogSubmitHandler<T extends DialogData> = (api: DialogInstanceApi...
  type DialogCloseHandler (line 967) | type DialogCloseHandler = () => void;
  type DialogCancelHandler (line 968) | type DialogCancelHandler<T extends DialogData> = (api: DialogInstanceApi...
  type DialogTabChangeHandler (line 969) | type DialogTabChangeHandler<T extends DialogData> = (api: DialogInstance...
  type DialogSize (line 970) | type DialogSize = 'normal' | 'medium' | 'large';
  type DialogSpec (line 971) | interface DialogSpec<T extends DialogData> {
  type UrlDialogInstanceApi (line 984) | interface UrlDialogInstanceApi {
  type UrlDialogActionDetails (line 990) | interface UrlDialogActionDetails {
  type UrlDialogMessage (line 994) | interface UrlDialogMessage {
  type UrlDialogActionHandler (line 998) | type UrlDialogActionHandler = (api: UrlDialogInstanceApi, actions: UrlDi...
  type UrlDialogCloseHandler (line 999) | type UrlDialogCloseHandler = () => void;
  type UrlDialogCancelHandler (line 1000) | type UrlDialogCancelHandler = (api: UrlDialogInstanceApi) => void;
  type UrlDialogMessageHandler (line 1001) | type UrlDialogMessageHandler = (api: UrlDialogInstanceApi, message: UrlD...
  type UrlDialogFooterButtonSpec (line 1002) | interface UrlDialogFooterButtonSpec extends DialogFooterNormalButtonSpec {
  type UrlDialogSpec (line 1005) | interface UrlDialogSpec {
  type ColumnTypes (line 1016) | type ColumnTypes = number | 'auto';
  type SeparatorItemSpec (line 1017) | type SeparatorItemSpec = SeparatorMenuItemSpec;
  type AutocompleterItemSpec (line 1018) | interface AutocompleterItemSpec {
  type AutocompleterContents (line 1025) | type AutocompleterContents = SeparatorItemSpec | AutocompleterItemSpec |...
  type AutocompleterSpec (line 1026) | interface AutocompleterSpec {
  type AutocompleterInstanceApi (line 1038) | interface AutocompleterInstanceApi {
  type ContextPosition (line 1042) | type ContextPosition = 'node' | 'selection' | 'line';
  type ContextScope (line 1043) | type ContextScope = 'node' | 'editor';
  type ContextBarSpec (line 1044) | interface ContextBarSpec {
  type ContextFormLaunchButtonApi (line 1049) | interface ContextFormLaunchButtonApi extends BaseToolbarButtonSpec<BaseT...
  type ContextFormLaunchToggleButtonSpec (line 1052) | interface ContextFormLaunchToggleButtonSpec extends BaseToolbarToggleBut...
  type ContextFormButtonInstanceApi (line 1055) | interface ContextFormButtonInstanceApi extends BaseToolbarButtonInstance...
  type ContextFormToggleButtonInstanceApi (line 1057) | interface ContextFormToggleButtonInstanceApi extends BaseToolbarToggleBu...
  type ContextFormButtonSpec (line 1059) | interface ContextFormButtonSpec extends BaseToolbarButtonSpec<ContextFor...
  type ContextFormToggleButtonSpec (line 1064) | interface ContextFormToggleButtonSpec extends BaseToolbarToggleButtonSpe...
  type ContextFormInstanceApi (line 1069) | interface ContextFormInstanceApi {
  type ContextFormSpec (line 1073) | interface ContextFormSpec extends ContextBarSpec {
  type ContextToolbarSpec (line 1080) | interface ContextToolbarSpec extends ContextBarSpec {
  type PublicDialog_d_AlertBannerSpec (line 1084) | type PublicDialog_d_AlertBannerSpec = AlertBannerSpec;
  type PublicDialog_d_BarSpec (line 1085) | type PublicDialog_d_BarSpec = BarSpec;
  type PublicDialog_d_BodyComponentSpec (line 1086) | type PublicDialog_d_BodyComponentSpec = BodyComponentSpec;
  type PublicDialog_d_ButtonSpec (line 1087) | type PublicDialog_d_ButtonSpec = ButtonSpec;
  type PublicDialog_d_CheckboxSpec (line 1088) | type PublicDialog_d_CheckboxSpec = CheckboxSpec;
  type PublicDialog_d_CollectionItem (line 1089) | type PublicDialog_d_CollectionItem = CollectionItem;
  type PublicDialog_d_CollectionSpec (line 1090) | type PublicDialog_d_CollectionSpec = CollectionSpec;
  type PublicDialog_d_ColorInputSpec (line 1091) | type PublicDialog_d_ColorInputSpec = ColorInputSpec;
  type PublicDialog_d_ColorPickerSpec (line 1092) | type PublicDialog_d_ColorPickerSpec = ColorPickerSpec;
  type PublicDialog_d_CustomEditorSpec (line 1093) | type PublicDialog_d_CustomEditorSpec = CustomEditorSpec;
  type PublicDialog_d_CustomEditorInit (line 1094) | type PublicDialog_d_CustomEditorInit = CustomEditorInit;
  type PublicDialog_d_CustomEditorInitFn (line 1095) | type PublicDialog_d_CustomEditorInitFn = CustomEditorInitFn;
  type PublicDialog_d_DialogData (line 1096) | type PublicDialog_d_DialogData = DialogData;
  type PublicDialog_d_DialogSize (line 1097) | type PublicDialog_d_DialogSize = DialogSize;
  type PublicDialog_d_DialogSpec (line 1098) | type PublicDialog_d_DialogSpec<T extends DialogData> = DialogSpec<T>;
  type PublicDialog_d_DialogInstanceApi (line 1099) | type PublicDialog_d_DialogInstanceApi<T extends DialogData> = DialogInst...
  type PublicDialog_d_DialogFooterButtonSpec (line 1100) | type PublicDialog_d_DialogFooterButtonSpec = DialogFooterButtonSpec;
  type PublicDialog_d_DialogActionDetails (line 1101) | type PublicDialog_d_DialogActionDetails = DialogActionDetails;
  type PublicDialog_d_DialogChangeDetails (line 1102) | type PublicDialog_d_DialogChangeDetails<T> = DialogChangeDetails<T>;
  type PublicDialog_d_DialogTabChangeDetails (line 1103) | type PublicDialog_d_DialogTabChangeDetails = DialogTabChangeDetails;
  type PublicDialog_d_DropZoneSpec (line 1104) | type PublicDialog_d_DropZoneSpec = DropZoneSpec;
  type PublicDialog_d_GridSpec (line 1105) | type PublicDialog_d_GridSpec = GridSpec;
  type PublicDialog_d_HtmlPanelSpec (line 1106) | type PublicDialog_d_HtmlPanelSpec = HtmlPanelSpec;
  type PublicDialog_d_IframeSpec (line 1107) | type PublicDialog_d_IframeSpec = IframeSpec;
  type PublicDialog_d_ImagePreviewSpec (line 1108) | type PublicDialog_d_ImagePreviewSpec = ImagePreviewSpec;
  type PublicDialog_d_InputSpec (line 1109) | type PublicDialog_d_InputSpec = InputSpec;
  type PublicDialog_d_LabelSpec (line 1110) | type PublicDialog_d_LabelSpec = LabelSpec;
  type PublicDialog_d_ListBoxSpec (line 1111) | type PublicDialog_d_ListBoxSpec = ListBoxSpec;
  type PublicDialog_d_ListBoxItemSpec (line 1112) | type PublicDialog_d_ListBoxItemSpec = ListBoxItemSpec;
  type PublicDialog_d_ListBoxNestedItemSpec (line 1113) | type PublicDialog_d_ListBoxNestedItemSpec = ListBoxNestedItemSpec;
  type PublicDialog_d_ListBoxSingleItemSpec (line 1114) | type PublicDialog_d_ListBoxSingleItemSpec = ListBoxSingleItemSpec;
  type PublicDialog_d_PanelSpec (line 1115) | type PublicDialog_d_PanelSpec = PanelSpec;
  type PublicDialog_d_SelectBoxSpec (line 1116) | type PublicDialog_d_SelectBoxSpec = SelectBoxSpec;
  type PublicDialog_d_SelectBoxItemSpec (line 1117) | type PublicDialog_d_SelectBoxItemSpec = SelectBoxItemSpec;
  type PublicDialog_d_SizeInputSpec (line 1118) | type PublicDialog_d_SizeInputSpec = SizeInputSpec;
  type PublicDialog_d_SliderSpec (line 1119) | type PublicDialog_d_SliderSpec = SliderSpec;
  type PublicDialog_d_TableSpec (line 1120) | type PublicDialog_d_TableSpec = TableSpec;
  type PublicDialog_d_TabSpec (line 1121) | type PublicDialog_d_TabSpec = TabSpec;
  type PublicDialog_d_TabPanelSpec (line 1122) | type PublicDialog_d_TabPanelSpec = TabPanelSpec;
  type PublicDialog_d_TextAreaSpec (line 1123) | type PublicDialog_d_TextAreaSpec = TextAreaSpec;
  type PublicDialog_d_TreeSpec (line 1124) | type PublicDialog_d_TreeSpec = TreeSpec;
  type PublicDialog_d_TreeItemSpec (line 1125) | type PublicDialog_d_TreeItemSpec = TreeItemSpec;
  type PublicDialog_d_UrlInputData (line 1126) | type PublicDialog_d_UrlInputData = UrlInputData;
  type PublicDialog_d_UrlInputSpec (line 1127) | type PublicDialog_d_UrlInputSpec = UrlInputSpec;
  type PublicDialog_d_UrlDialogSpec (line 1128) | type PublicDialog_d_UrlDialogSpec = UrlDialogSpec;
  type PublicDialog_d_UrlDialogFooterButtonSpec (line 1129) | type PublicDialog_d_UrlDialogFooterButtonSpec = UrlDialogFooterButtonSpec;
  type PublicDialog_d_UrlDialogInstanceApi (line 1130) | type PublicDialog_d_UrlDialogInstanceApi = UrlDialogInstanceApi;
  type PublicDialog_d_UrlDialogActionDetails (line 1131) | type PublicDialog_d_UrlDialogActionDetails = UrlDialogActionDetails;
  type PublicDialog_d_UrlDialogMessage (line 1132) | type PublicDialog_d_UrlDialogMessage = UrlDialogMessage;
  type PublicInlineContent_d_AutocompleterSpec (line 1136) | type PublicInlineContent_d_AutocompleterSpec = AutocompleterSpec;
  type PublicInlineContent_d_AutocompleterItemSpec (line 1137) | type PublicInlineContent_d_AutocompleterItemSpec = AutocompleterItemSpec;
  type PublicInlineContent_d_AutocompleterContents (line 1138) | type PublicInlineContent_d_AutocompleterContents = AutocompleterContents;
  type PublicInlineContent_d_AutocompleterInstanceApi (line 1139) | type PublicInlineContent_d_AutocompleterInstanceApi = AutocompleterInsta...
  type PublicInlineContent_d_ContextPosition (line 1140) | type PublicInlineContent_d_ContextPosition = ContextPosition;
  type PublicInlineContent_d_ContextScope (line 1141) | type PublicInlineContent_d_ContextScope = ContextScope;
  type PublicInlineContent_d_ContextFormSpec (line 1142) | type PublicInlineContent_d_ContextFormSpec = ContextFormSpec;
  type PublicInlineContent_d_ContextFormInstanceApi (line 1143) | type PublicInlineContent_d_ContextFormInstanceApi = ContextFormInstanceApi;
  type PublicInlineContent_d_ContextFormButtonSpec (line 1144) | type PublicInlineContent_d_ContextFormButtonSpec = ContextFormButtonSpec;
  type PublicInlineContent_d_ContextFormButtonInstanceApi (line 1145) | type PublicInlineContent_d_ContextFormButtonInstanceApi = ContextFormBut...
  type PublicInlineContent_d_ContextFormToggleButtonSpec (line 1146) | type PublicInlineContent_d_ContextFormToggleButtonSpec = ContextFormTogg...
  type PublicInlineContent_d_ContextFormToggleButtonInstanceApi (line 1147) | type PublicInlineContent_d_ContextFormToggleButtonInstanceApi = ContextF...
  type PublicInlineContent_d_ContextToolbarSpec (line 1148) | type PublicInlineContent_d_ContextToolbarSpec = ContextToolbarSpec;
  type PublicInlineContent_d_SeparatorItemSpec (line 1149) | type PublicInlineContent_d_SeparatorItemSpec = SeparatorItemSpec;
  type PublicMenu_d_MenuItemSpec (line 1153) | type PublicMenu_d_MenuItemSpec = MenuItemSpec;
  type PublicMenu_d_MenuItemInstanceApi (line 1154) | type PublicMenu_d_MenuItemInstanceApi = MenuItemInstanceApi;
  type PublicMenu_d_NestedMenuItemContents (line 1155) | type PublicMenu_d_NestedMenuItemContents = NestedMenuItemContents;
  type PublicMenu_d_NestedMenuItemSpec (line 1156) | type PublicMenu_d_NestedMenuItemSpec = NestedMenuItemSpec;
  type PublicMenu_d_NestedMenuItemInstanceApi (line 1157) | type PublicMenu_d_NestedMenuItemInstanceApi = NestedMenuItemInstanceApi;
  type PublicMenu_d_FancyMenuItemSpec (line 1158) | type PublicMenu_d_FancyMenuItemSpec = FancyMenuItemSpec;
  type PublicMenu_d_ColorSwatchMenuItemSpec (line 1159) | type PublicMenu_d_ColorSwatchMenuItemSpec = ColorSwatchMenuItemSpec;
  type PublicMenu_d_InsertTableMenuItemSpec (line 1160) | type PublicMenu_d_InsertTableMenuItemSpec = InsertTableMenuItemSpec;
  type PublicMenu_d_ToggleMenuItemSpec (line 1161) | type PublicMenu_d_ToggleMenuItemSpec = ToggleMenuItemSpec;
  type PublicMenu_d_ToggleMenuItemInstanceApi (line 1162) | type PublicMenu_d_ToggleMenuItemInstanceApi = ToggleMenuItemInstanceApi;
  type PublicMenu_d_ChoiceMenuItemSpec (line 1163) | type PublicMenu_d_ChoiceMenuItemSpec = ChoiceMenuItemSpec;
  type PublicMenu_d_ChoiceMenuItemInstanceApi (line 1164) | type PublicMenu_d_ChoiceMenuItemInstanceApi = ChoiceMenuItemInstanceApi;
  type PublicMenu_d_SeparatorMenuItemSpec (line 1165) | type PublicMenu_d_SeparatorMenuItemSpec = SeparatorMenuItemSpec;
  type PublicMenu_d_ContextMenuApi (line 1166) | type PublicMenu_d_ContextMenuApi = ContextMenuApi;
  type PublicMenu_d_ContextMenuContents (line 1167) | type PublicMenu_d_ContextMenuContents = ContextMenuContents;
  type PublicMenu_d_ContextMenuItem (line 1168) | type PublicMenu_d_ContextMenuItem = ContextMenuItem;
  type PublicMenu_d_ContextSubMenu (line 1169) | type PublicMenu_d_ContextSubMenu = ContextSubMenu;
  type PublicMenu_d_CardMenuItemSpec (line 1170) | type PublicMenu_d_CardMenuItemSpec = CardMenuItemSpec;
  type PublicMenu_d_CardMenuItemInstanceApi (line 1171) | type PublicMenu_d_CardMenuItemInstanceApi = CardMenuItemInstanceApi;
  type PublicMenu_d_CardItemSpec (line 1172) | type PublicMenu_d_CardItemSpec = CardItemSpec;
  type PublicMenu_d_CardContainerSpec (line 1173) | type PublicMenu_d_CardContainerSpec = CardContainerSpec;
  type PublicMenu_d_CardImageSpec (line 1174) | type PublicMenu_d_CardImageSpec = CardImageSpec;
  type PublicMenu_d_CardTextSpec (line 1175) | type PublicMenu_d_CardTextSpec = CardTextSpec;
  type SidebarInstanceApi (line 1179) | interface SidebarInstanceApi {
  type SidebarSpec (line 1182) | interface SidebarSpec {
  type PublicSidebar_d_SidebarSpec (line 1189) | type PublicSidebar_d_SidebarSpec = SidebarSpec;
  type PublicSidebar_d_SidebarInstanceApi (line 1190) | type PublicSidebar_d_SidebarInstanceApi = SidebarInstanceApi;
  type PublicToolbar_d_ToolbarButtonSpec (line 1194) | type PublicToolbar_d_ToolbarButtonSpec = ToolbarButtonSpec;
  type PublicToolbar_d_ToolbarButtonInstanceApi (line 1195) | type PublicToolbar_d_ToolbarButtonInstanceApi = ToolbarButtonInstanceApi;
  type PublicToolbar_d_ToolbarSplitButtonSpec (line 1196) | type PublicToolbar_d_ToolbarSplitButtonSpec = ToolbarSplitButtonSpec;
  type PublicToolbar_d_ToolbarSplitButtonInstanceApi (line 1197) | type PublicToolbar_d_ToolbarSplitButtonInstanceApi = ToolbarSplitButtonI...
  type PublicToolbar_d_ToolbarMenuButtonSpec (line 1198) | type PublicToolbar_d_ToolbarMenuButtonSpec = ToolbarMenuButtonSpec;
  type PublicToolbar_d_ToolbarMenuButtonInstanceApi (line 1199) | type PublicToolbar_d_ToolbarMenuButtonInstanceApi = ToolbarMenuButtonIns...
  type PublicToolbar_d_ToolbarToggleButtonSpec (line 1200) | type PublicToolbar_d_ToolbarToggleButtonSpec = ToolbarToggleButtonSpec;
  type PublicToolbar_d_ToolbarToggleButtonInstanceApi (line 1201) | type PublicToolbar_d_ToolbarToggleButtonInstanceApi = ToolbarToggleButto...
  type PublicToolbar_d_GroupToolbarButtonSpec (line 1202) | type PublicToolbar_d_GroupToolbarButtonSpec = GroupToolbarButtonSpec;
  type PublicToolbar_d_GroupToolbarButtonInstanceApi (line 1203) | type PublicToolbar_d_GroupToolbarButtonInstanceApi = GroupToolbarButtonI...
  type ViewButtonApi (line 1207) | interface ViewButtonApi {
  type ViewToggleButtonApi (line 1210) | interface ViewToggleButtonApi extends ViewButtonApi {
  type BaseButtonSpec (line 1214) | interface BaseButtonSpec<Api extends ViewButtonApi> {
  type ViewNormalButtonSpec (line 1222) | interface ViewNormalButtonSpec extends BaseButtonSpec<ViewButtonApi> {
  type ViewToggleButtonSpec (line 1226) | interface ViewToggleButtonSpec extends BaseButtonSpec<ViewToggleButtonAp...
  type ViewButtonsGroupSpec (line 1231) | interface ViewButtonsGroupSpec {
  type ViewButtonSpec (line 1235) | type ViewButtonSpec = ViewNormalButtonSpec | ViewToggleButtonSpec | View...
  type ViewInstanceApi (line 1236) | interface ViewInstanceApi {
  type ViewSpec (line 1239) | interface ViewSpec {
  type PublicView_d_ViewSpec (line 1244) | type PublicView_d_ViewSpec = ViewSpec;
  type PublicView_d_ViewInstanceApi (line 1245) | type PublicView_d_ViewInstanceApi = ViewInstanceApi;
  type Registry$1 (line 1249) | interface Registry$1 {
  type AutocompleteLookupData (line 1276) | interface AutocompleteLookupData {
  type AutocompleterEventArgs (line 1283) | interface AutocompleterEventArgs {
  type RangeLikeObject (line 1286) | interface RangeLikeObject {
  type ApplyFormat (line 1292) | type ApplyFormat = BlockFormat | InlineFormat | SelectorFormat;
  type RemoveFormat (line 1293) | type RemoveFormat = RemoveBlockFormat | RemoveInlineFormat | RemoveSelec...
  type Format (line 1294) | type Format = ApplyFormat | RemoveFormat;
  type Formats (line 1295) | type Formats = Record<string, Format | Format[]>;
  type FormatAttrOrStyleValue (line 1296) | type FormatAttrOrStyleValue = string | ((vars?: FormatVars) => string | ...
  type FormatVars (line 1297) | type FormatVars = Record<string, string | null>;
  type BaseFormat (line 1298) | interface BaseFormat<T> {
  type Block (line 1314) | interface Block {
  type Inline (line 1319) | interface Inline {
  type Selector (line 1322) | interface Selector {
  type CommonFormat (line 1326) | interface CommonFormat<T> extends BaseFormat<T> {
  type BlockFormat (line 1336) | interface BlockFormat extends Block, CommonFormat<BlockFormat> {
  type InlineFormat (line 1338) | interface InlineFormat extends Inline, CommonFormat<InlineFormat> {
  type SelectorFormat (line 1340) | interface SelectorFormat extends Selector, CommonFormat<SelectorFormat> {
  type CommonRemoveFormat (line 1342) | interface CommonRemoveFormat<T> extends BaseFormat<T> {
  type RemoveBlockFormat (line 1346) | interface RemoveBlockFormat extends Block, CommonRemoveFormat<RemoveBloc...
  type RemoveInlineFormat (line 1348) | interface RemoveInlineFormat extends Inline, CommonRemoveFormat<RemoveIn...
  type RemoveSelectorFormat (line 1350) | interface RemoveSelectorFormat extends Selector, CommonRemoveFormat<Remo...
  type Filter (line 1352) | interface Filter<C extends Function> {
  type ParserArgs (line 1356) | interface ParserArgs {
  type ParserFilterCallback (line 1366) | type ParserFilterCallback = (nodes: AstNode[], name: string, args: Parse...
  type ParserFilter (line 1367) | interface ParserFilter extends Filter<ParserFilterCallback> {
  type DomParserSettings (line 1369) | interface DomParserSettings {
  type DomParser (line 1393) | interface DomParser {
  type StyleSheetLoaderSettings (line 1403) | interface StyleSheetLoaderSettings {
  type StyleSheetLoader (line 1408) | interface StyleSheetLoader {
  type Registry (line 1418) | type Registry = Registry$1;
  type EditorUiApi (line 1419) | interface EditorUiApi {
  type EditorUi (line 1425) | interface EditorUi extends EditorUiApi {
  type Ui_d_Registry (line 1429) | type Ui_d_Registry = Registry;
  type Ui_d_EditorUiApi (line 1430) | type Ui_d_EditorUiApi = EditorUiApi;
  type Ui_d_EditorUi (line 1431) | type Ui_d_EditorUi = EditorUi;
  type WindowParams (line 1435) | interface WindowParams {
  type InstanceApi (line 1440) | type InstanceApi<T extends DialogData> = UrlDialogInstanceApi | DialogIn...
  type WindowManagerImpl (line 1441) | interface WindowManagerImpl {
  type WindowManager (line 1448) | interface WindowManager {
  type ExecCommandEvent (line 1455) | interface ExecCommandEvent {
  type BeforeGetContentEvent (line 1460) | interface BeforeGetContentEvent extends GetContentArgs {
  type GetContentEvent (line 1463) | interface GetContentEvent extends BeforeGetContentEvent {
  type BeforeSetContentEvent (line 1466) | interface BeforeSetContentEvent extends SetContentArgs {
  type SetContentEvent (line 1470) | interface SetContentEvent extends BeforeSetContentEvent {
  type SaveContentEvent (line 1473) | interface SaveContentEvent extends GetContentEvent {
  type NewBlockEvent (line 1476) | interface NewBlockEvent {
  type NodeChangeEvent (line 1479) | interface NodeChangeEvent {
  type FormatEvent (line 1485) | interface FormatEvent {
  type ObjectResizeEvent (line 1490) | interface ObjectResizeEvent {
  type ObjectSelectedEvent (line 1496) | interface ObjectSelectedEvent {
  type ScrollIntoViewEvent (line 1500) | interface ScrollIntoViewEvent {
  type SetSelectionRangeEvent (line 1504) | interface SetSelectionRangeEvent {
  type ShowCaretEvent (line 1508) | interface ShowCaretEvent {
  type SwitchModeEvent (line 1513) | interface SwitchModeEvent {
  type ChangeEvent (line 1516) | interface ChangeEvent {
  type AddUndoEvent (line 1520) | interface AddUndoEvent extends ChangeEvent {
  type UndoRedoEvent (line 1523) | interface UndoRedoEvent {
  type WindowEvent (line 1526) | interface WindowEvent<T extends DialogData> {
  type ProgressStateEvent (line 1529) | interface ProgressStateEvent {
  type AfterProgressStateEvent (line 1533) | interface AfterProgressStateEvent {
  type PlaceholderToggleEvent (line 1536) | interface PlaceholderToggleEvent {
  type LoadErrorEvent (line 1539) | interface LoadErrorEvent {
  type PreProcessEvent (line 1542) | interface PreProcessEvent extends ParserArgs {
  type PostProcessEvent (line 1545) | interface PostProcessEvent extends ParserArgs {
  type PastePlainTextToggleEvent (line 1548) | interface PastePlainTextToggleEvent {
  type PastePreProcessEvent (line 1551) | interface PastePreProcessEvent {
  type PastePostProcessEvent (line 1555) | interface PastePostProcessEvent {
  type EditableRootStateChangeEvent (line 1559) | interface EditableRootStateChangeEvent {
  type NewTableRowEvent (line 1562) | interface NewTableRowEvent {
  type NewTableCellEvent (line 1565) | interface NewTableCellEvent {
  type TableEventData (line 1568) | interface TableEventData {
  type TableModifiedEvent (line 1572) | interface TableModifiedEvent extends TableEventData {
  type BeforeOpenNotificationEvent (line 1575) | interface BeforeOpenNotificationEvent {
  type OpenNotificationEvent (line 1578) | interface OpenNotificationEvent {
  type EditorEventMap (line 1581) | interface EditorEventMap extends Omit<NativeEventMap, 'blur' | 'focus'> {
  type EditorManagerEventMap (line 1678) | interface EditorManagerEventMap {
  type EventTypes_d_ExecCommandEvent (line 1689) | type EventTypes_d_ExecCommandEvent = ExecCommandEvent;
  type EventTypes_d_BeforeGetContentEvent (line 1690) | type EventTypes_d_BeforeGetContentEvent = BeforeGetContentEvent;
  type EventTypes_d_GetContentEvent (line 1691) | type EventTypes_d_GetContentEvent = GetContentEvent;
  type EventTypes_d_BeforeSetContentEvent (line 1692) | type EventTypes_d_BeforeSetContentEvent = BeforeSetContentEvent;
  type EventTypes_d_SetContentEvent (line 1693) | type EventTypes_d_SetContentEvent = SetContentEvent;
  type EventTypes_d_SaveContentEvent (line 1694) | type EventTypes_d_SaveContentEvent = SaveContentEvent;
  type EventTypes_d_NewBlockEvent (line 1695) | type EventTypes_d_NewBlockEvent = NewBlockEvent;
  type EventTypes_d_NodeChangeEvent (line 1696) | type EventTypes_d_NodeChangeEvent = NodeChangeEvent;
  type EventTypes_d_FormatEvent (line 1697) | type EventTypes_d_FormatEvent = FormatEvent;
  type EventTypes_d_ObjectResizeEvent (line 1698) | type EventTypes_d_ObjectResizeEvent = ObjectResizeEvent;
  type EventTypes_d_ObjectSelectedEvent (line 1699) | type EventTypes_d_ObjectSelectedEvent = ObjectSelectedEvent;
  type EventTypes_d_ScrollIntoViewEvent (line 1700) | type EventTypes_d_ScrollIntoViewEvent = ScrollIntoViewEvent;
  type EventTypes_d_SetSelectionRangeEvent (line 1701) | type EventTypes_d_SetSelectionRangeEvent = SetSelectionRangeEvent;
  type EventTypes_d_ShowCaretEvent (line 1702) | type EventTypes_d_ShowCaretEvent = ShowCaretEvent;
  type EventTypes_d_SwitchModeEvent (line 1703) | type EventTypes_d_SwitchModeEvent = SwitchModeEvent;
  type EventTypes_d_ChangeEvent (line 1704) | type EventTypes_d_ChangeEvent = ChangeEvent;
  type EventTypes_d_AddUndoEvent (line 1705) | type EventTypes_d_AddUndoEvent = AddUndoEvent;
  type EventTypes_d_UndoRedoEvent (line 1706) | type EventTypes_d_UndoRedoEvent = UndoRedoEvent;
  type EventTypes_d_WindowEvent (line 1707) | type EventTypes_d_WindowEvent<T extends DialogData> = WindowEvent<T>;
  type EventTypes_d_ProgressStateEvent (line 1708) | type EventTypes_d_ProgressStateEvent = ProgressStateEvent;
  type EventTypes_d_AfterProgressStateEvent (line 1709) | type EventTypes_d_AfterProgressStateEvent = AfterProgressStateEvent;
  type EventTypes_d_PlaceholderToggleEvent (line 1710) | type EventTypes_d_PlaceholderToggleEvent = PlaceholderToggleEvent;
  type EventTypes_d_LoadErrorEvent (line 1711) | type EventTypes_d_LoadErrorEvent = LoadErrorEvent;
  type EventTypes_d_PreProcessEvent (line 1712) | type EventTypes_d_PreProcessEvent = PreProcessEvent;
  type EventTypes_d_PostProcessEvent (line 1713) | type EventTypes_d_PostProcessEvent = PostProcessEvent;
  type EventTypes_d_PastePlainTextToggleEvent (line 1714) | type EventTypes_d_PastePlainTextToggleEvent = PastePlainTextToggleEvent;
  type EventTypes_d_PastePreProcessEvent (line 1715) | type EventTypes_d_PastePreProcessEvent = PastePreProcessEvent;
  type EventTypes_d_PastePostProcessEvent (line 1716) | type EventTypes_d_PastePostProcessEvent = PastePostProcessEvent;
  type EventTypes_d_EditableRootStateChangeEvent (line 1717) | type EventTypes_d_EditableRootStateChangeEvent = EditableRootStateChange...
  type EventTypes_d_NewTableRowEvent (line 1718) | type EventTypes_d_NewTableRowEvent = NewTableRowEvent;
  type EventTypes_d_NewTableCellEvent (line 1719) | type EventTypes_d_NewTableCellEvent = NewTableCellEvent;
  type EventTypes_d_TableEventData (line 1720) | type EventTypes_d_TableEventData = TableEventData;
  type EventTypes_d_TableModifiedEvent (line 1721) | type EventTypes_d_TableModifiedEvent = TableModifiedEvent;
  type EventTypes_d_BeforeOpenNotificationEvent (line 1722) | type EventTypes_d_BeforeOpenNotificationEvent = BeforeOpenNotificationEv...
  type EventTypes_d_OpenNotificationEvent (line 1723) | type EventTypes_d_OpenNotificationEvent = OpenNotificationEvent;
  type EventTypes_d_EditorEventMap (line 1724) | type EventTypes_d_EditorEventMap = EditorEventMap;
  type EventTypes_d_EditorManagerEventMap (line 1725) | type EventTypes_d_EditorManagerEventMap = EditorManagerEventMap;
  type Format_d_Formats (line 1729) | type Format_d_Formats = Formats;
  type Format_d_Format (line 1730) | type Format_d_Format = Format;
  type Format_d_ApplyFormat (line 1731) | type Format_d_ApplyFormat = ApplyFormat;
  type Format_d_BlockFormat (line 1732) | type Format_d_BlockFormat = BlockFormat;
  type Format_d_InlineFormat (line 1733) | type Format_d_InlineFormat = InlineFormat;
  type Format_d_SelectorFormat (line 1734) | type Format_d_SelectorFormat = SelectorFormat;
  type Format_d_RemoveFormat (line 1735) | type Format_d_RemoveFormat = RemoveFormat;
  type Format_d_RemoveBlockFormat (line 1736) | type Format_d_RemoveBlockFormat = RemoveBlockFormat;
  type Format_d_RemoveInlineFormat (line 1737) | type Format_d_RemoveInlineFormat = RemoveInlineFormat;
  type Format_d_RemoveSelectorFormat (line 1738) | type Format_d_RemoveSelectorFormat = RemoveSelectorFormat;
  type StyleFormat (line 1742) | type StyleFormat = BlockStyleFormat | InlineStyleFormat | SelectorStyleF...
  type AllowedFormat (line 1743) | type AllowedFormat = Separator | FormatReference | StyleFormat | NestedF...
  type Separator (line 1744) | interface Separator {
  type FormatReference (line 1747) | interface FormatReference {
  type NestedFormatting (line 1752) | interface NestedFormatting {
  type CommonStyleFormat (line 1756) | interface CommonStyleFormat {
  type BlockStyleFormat (line 1761) | interface BlockStyleFormat extends BlockFormat, CommonStyleFormat {
  type InlineStyleFormat (line 1763) | interface InlineStyleFormat extends InlineFormat, CommonStyleFormat {
  type SelectorStyleFormat (line 1765) | interface SelectorStyleFormat extends SelectorFormat, CommonStyleFormat {
  type EntityEncoding (line 1767) | type EntityEncoding = 'named' | 'numeric' | 'raw' | 'named,numeric' | 'n...
  type ContentLanguage (line 1768) | interface ContentLanguage {
  type ThemeInitFunc (line 1773) | type ThemeInitFunc = (editor: Editor, elm: HTMLElement) => {
  type SetupCallback (line 1780) | type SetupCallback = (editor: Editor) => void;
  type FilePickerCallback (line 1781) | type FilePickerCallback = (callback: (value: string, meta?: Record<strin...
  type FilePickerValidationStatus (line 1782) | type FilePickerValidationStatus = 'valid' | 'unknown' | 'invalid' | 'none';
  type FilePickerValidationCallback (line 1783) | type FilePickerValidationCallback = (info: {
  type PastePreProcessFn (line 1790) | type PastePreProcessFn = (editor: Editor, args: PastePreProcessEvent) =>...
  type PastePostProcessFn (line 1791) | type PastePostProcessFn = (editor: Editor, args: PastePostProcessEvent) ...
  type URLConverter (line 1792) | type URLConverter = (url: string, name: string, elm?: string | Element) ...
  type URLConverterCallback (line 1793) | type URLConverterCallback = (url: string, node: Node | string | undefine...
  type ToolbarGroup (line 1794) | interface ToolbarGroup {
  type ToolbarMode (line 1798) | type ToolbarMode = 'floating' | 'sliding' | 'scrolling' | 'wrap';
  type ToolbarLocation (line 1799) | type ToolbarLocation = 'top' | 'bottom' | 'auto';
  type ForceHexColor (line 1800) | type ForceHexColor = 'always' | 'rgb_only' | 'off';
  type BaseEditorOptions (line 1801) | interface BaseEditorOptions {
  type RawEditorOptions (line 2012) | interface RawEditorOptions extends BaseEditorOptions {
  type NormalizedEditorOptions (line 2017) | interface NormalizedEditorOptions extends BaseEditorOptions {
  type EditorOptions (line 2022) | interface EditorOptions extends NormalizedEditorOptions {
  type StyleMap (line 2107) | type StyleMap = Record<string, string | number>;
  type StylesSettings (line 2108) | interface StylesSettings {
  type Styles (line 2115) | interface Styles {
  type EventUtilsCallback (line 2119) | type EventUtilsCallback<T> = (event: EventUtilsEvent<T>) => void | boolean;
  type EventUtilsEvent (line 2120) | type EventUtilsEvent<T> = NormalizedEvent<T> & {
  type Callback$1 (line 2123) | interface Callback$1<T> {
  type CallbackList (line 2127) | interface CallbackList<T> extends Array<Callback$1<T>> {
  type EventUtilsConstructor (line 2132) | interface EventUtilsConstructor {
  class EventUtils (line 2137) | class EventUtils {
  type SetAttribEvent (line 2157) | interface SetAttribEvent {
  type DOMUtilsSettings (line 2162) | interface DOMUtilsSettings {
  type Target (line 2176) | type Target = Node | Window;
  type RunArguments (line 2177) | type RunArguments<T extends Node = Node> = string | T | Array<string | T...
  type BoundEvent (line 2178) | type BoundEvent = [
  type Callback (line 2184) | type Callback<K extends string> = EventUtilsCallback<MappedEvent<HTMLEle...
  type RunResult (line 2185) | type RunResult<T, R> = T extends Array<any> ? R[] : false | R;
  type DOMUtils (line 2186) | interface DOMUtils {
  type ClientRect (line 2319) | interface ClientRect {
  type BookmarkManager (line 2327) | interface BookmarkManager {
  type ControlSelection (line 2331) | interface ControlSelection {
  type WriterSettings (line 2338) | interface WriterSettings {
  type Attributes (line 2346) | type Attributes = Array<{
  type Writer (line 2350) | interface Writer {
  type HtmlSerializerSettings (line 2361) | interface HtmlSerializerSettings extends WriterSettings {
  type HtmlSerializer (line 2365) | interface HtmlSerializer {
  type DomSerializerSettings (line 2368) | interface DomSerializerSettings extends DomParserSettings, WriterSetting...
  type DomSerializerImpl (line 2373) | interface DomSerializerImpl {
  type DomSerializer (line 2392) | interface DomSerializer extends DomSerializerImpl {
  type EditorSelection (line 2394) | interface EditorSelection {
  type EditorCommandCallback (line 2449) | type EditorCommandCallback<S> = (this: S, ui: boolean, value: any) => void;
  type EditorCommandsCallback (line 2450) | type EditorCommandsCallback = (command: string, ui: boolean, value?: any...
  type Commands (line 2451) | interface Commands {
  type ExecCommandArgs (line 2456) | interface ExecCommandArgs {
  type EditorCommandsConstructor (line 2459) | interface EditorCommandsConstructor {
  class EditorCommands (line 2463) | class EditorCommands {
  type RawString (line 2480) | interface RawString {
  type Primitive (line 2483) | type Primitive = string | number | boolean | Record<string | number, any...
  type TokenisedString (line 2484) | type TokenisedString = [
  type Untranslated (line 2488) | type Untranslated = Primitive | TokenisedString | RawString | null | und...
  type TranslatedString (line 2489) | type TranslatedString = string;
  type I18n (line 2490) | interface I18n {
  type Observable (line 2499) | interface Observable<T extends {}> {
  type URISettings (line 2507) | interface URISettings {
  type URIConstructor (line 2510) | interface URIConstructor {
  type SafeUriOptions (line 2524) | interface SafeUriOptions {
  class URI (line 2529) | class URI {
  type EditorManager (line 2565) | interface EditorManager extends Observable<EditorManagerEventMap> {
  type EditorObservable (line 2594) | interface EditorObservable extends Observable<EditorEventMap> {
  type ProcessorSuccess (line 2599) | interface ProcessorSuccess<T> {
  type ProcessorError (line 2603) | interface ProcessorError {
  type SimpleProcessor (line 2607) | type SimpleProcessor = (value: unknown) => boolean;
  type Processor (line 2608) | type Processor<T> = (value: unknown) => ProcessorSuccess<T> | ProcessorE...
  type BuiltInOptionTypeMap (line 2609) | interface BuiltInOptionTypeMap {
  type BuiltInOptionType (line 2620) | type BuiltInOptionType = keyof BuiltInOptionTypeMap;
  type BaseOptionSpec (line 2621) | interface BaseOptionSpec {
  type BuiltInOptionSpec (line 2626) | interface BuiltInOptionSpec<K extends BuiltInOptionType> extends BaseOpt...
  type SimpleOptionSpec (line 2630) | interface SimpleOptionSpec<T> extends BaseOptionSpec {
  type OptionSpec (line 2634) | interface OptionSpec<T, U> extends BaseOptionSpec {
  type Options (line 2638) | interface Options {
  type UploadResult$1 (line 2654) | interface UploadResult$1 {
  type EditorUpload (line 2661) | interface EditorUpload {
  type FormatChangeCallback (line 2669) | type FormatChangeCallback = (state: boolean, data: {
  type FormatRegistry (line 2674) | interface FormatRegistry {
  type Formatter (line 2683) | interface Formatter extends FormatRegistry {
  type EditorMode (line 2697) | interface EditorMode {
  type EditorModeApi (line 2703) | interface EditorModeApi {
  type Model (line 2708) | interface Model {
  type ModelManager (line 2714) | type ModelManager = AddOnManager<Model>;
  type Plugin (line 2715) | interface Plugin {
  type PluginManager (line 2723) | type PluginManager = AddOnManager<void | Plugin>;
  type ShortcutsConstructor (line 2724) | interface ShortcutsConstructor {
  type CommandFunc (line 2728) | type CommandFunc = string | [
  class Shortcuts (line 2733) | class Shortcuts {
  type RenderResult (line 2747) | interface RenderResult {
  type Theme (line 2752) | interface Theme {
  type ThemeManager (line 2762) | type ThemeManager = AddOnManager<void | Theme>;
  type EditorConstructor (line 2763) | interface EditorConstructor {
  class Editor (line 2767) | class Editor implements EditorObservable {
  type UrlObject (line 2898) | interface UrlObject {
  type WaitState (line 2903) | type WaitState = 'added' | 'loaded';
  type AddOnConstructor (line 2904) | type AddOnConstructor<T> = (editor: Editor, url: string) => T;
  type AddOnManager (line 2905) | interface AddOnManager<T> {
  type RangeUtils (line 2919) | interface RangeUtils {
  type ScriptLoaderSettings (line 2927) | interface ScriptLoaderSettings {
  type ScriptLoaderConstructor (line 2930) | interface ScriptLoaderConstructor {
  class ScriptLoader (line 2935) | class ScriptLoader {
  type TextProcessCallback (line 2954) | type TextProcessCallback = (node: Text, offset: number, text: string) =>...
  type Spot (line 2955) | interface Spot {
  type TextSeeker (line 2959) | interface TextSeeker {
  type DomTreeWalkerConstructor (line 2963) | interface DomTreeWalkerConstructor {
  class DomTreeWalker (line 2967) | class DomTreeWalker {
  type Version (line 2978) | interface Version {
  type Env (line 2982) | interface Env {
  type FakeClipboardItem (line 3021) | interface FakeClipboardItem {
  type FakeClipboard (line 3026) | interface FakeClipboard {
  type FocusManager (line 3032) | interface FocusManager {
  type EntitiesMap (line 3035) | interface EntitiesMap {
  type Entities (line 3038) | interface Entities {
  type IconPack (line 3046) | interface IconPack {
  type IconManager (line 3049) | interface IconManager {
  type Resource (line 3054) | interface Resource {
  type TextPatterns_d_Pattern (line 3061) | type TextPatterns_d_Pattern = Pattern;
  type TextPatterns_d_RawPattern (line 3062) | type TextPatterns_d_RawPattern = RawPattern;
  type TextPatterns_d_DynamicPatternsLookup (line 3063) | type TextPatterns_d_DynamicPatternsLookup = DynamicPatternsLookup;
  type TextPatterns_d_RawDynamicPatternsLookup (line 3064) | type TextPatterns_d_RawDynamicPatternsLookup = RawDynamicPatternsLookup;
  type TextPatterns_d_DynamicPatternContext (line 3065) | type TextPatterns_d_DynamicPatternContext = DynamicPatternContext;
  type TextPatterns_d_BlockCmdPattern (line 3066) | type TextPatterns_d_BlockCmdPattern = BlockCmdPattern;
  type TextPatterns_d_BlockPattern (line 3067) | type TextPatterns_d_BlockPattern = BlockPattern;
  type TextPatterns_d_BlockFormatPattern (line 3068) | type TextPatterns_d_BlockFormatPattern = BlockFormatPattern;
  type TextPatterns_d_InlineCmdPattern (line 3069) | type TextPatterns_d_InlineCmdPattern = InlineCmdPattern;
  type TextPatterns_d_InlinePattern (line 3070) | type TextPatterns_d_InlinePattern = InlinePattern;
  type TextPatterns_d_InlineFormatPattern (line 3071) | type TextPatterns_d_InlineFormatPattern = InlineFormatPattern;
  type Delay (line 3075) | interface Delay {
  type UploadResult (line 3079) | type UploadResult = UploadResult$2;
  type ImageUploader (line 3080) | interface ImageUploader {
  type ArrayCallback$1 (line 3083) | type ArrayCallback$1<T, R> = (this: any, x: T, i: number, xs: ArrayLike<...
  type ObjCallback$1 (line 3084) | type ObjCallback$1<T, R> = (this: any, value: T, key: string, obj: Recor...
  type ArrayCallback (line 3085) | type ArrayCallback<T, R> = ArrayCallback$1<T, R>;
  type ObjCallback (line 3086) | type ObjCallback<T, R> = ObjCallback$1<T, R>;
  type WalkCallback (line 3087) | type WalkCallback<T> = (this: any, o: T, i: string, n: keyof T | undefin...
  type Tools (line 3088) | interface Tools {
  type KeyboardLikeEvent (line 3114) | interface KeyboardLikeEvent {
  type VK (line 3120) | interface VK {
  type DOMUtilsNamespace (line 3138) | interface DOMUtilsNamespace {
  type RangeUtilsNamespace (line 3143) | interface RangeUtilsNamespace {
  type AddOnManagerNamespace (line 3150) | interface AddOnManagerNamespace {
  type BookmarkManagerNamespace (line 3159) | interface BookmarkManagerNamespace {
  type TinyMCE (line 3163) | interface TinyMCE extends EditorManager {

FILE: src/apis/admin.ts
  function adminLoginAPI (line 9) | function adminLoginAPI(data: LoginParam) {
  function adminLogoutAPI (line 20) | function adminLogoutAPI() {
  function getAdminInfoAPI (line 30) | function getAdminInfoAPI() {
  function getAdminListAPI (line 40) | function getAdminListAPI(params: PageParam) {
  function adminRegisterAPI (line 51) | function adminRegisterAPI(data: UmsAdmin) {
  function adminUpdateByIdAPI (line 62) | function adminUpdateByIdAPI(id: number, data: UmsAdmin) {
  function adminUpdateStatusByIdAPI (line 73) | function adminUpdateStatusByIdAPI(id: number, params: { status: number }) {
  function adminDeleteByIdAPI (line 84) | function adminDeleteByIdAPI(id: number) {
  function getRoleByAdminIdAPI (line 94) | function getRoleByAdminIdAPI(id: number) {
  function adminRoleUpdateAPI (line 104) | function adminRoleUpdateAPI(params: { roleIds: string; adminId: number }) {

FILE: src/apis/brand.ts
  function getBrandListAPI (line 8) | function getBrandListAPI(params: PageParam) {
  function createBrandAPI (line 19) | function createBrandAPI(data: PmsBrand) {
  function brandUpdateShowStatusAPI (line 30) | function brandUpdateShowStatusAPI(params: { ids: string; showStatus: num...
  function brandUpdateFactoryStatusAPI (line 41) | function brandUpdateFactoryStatusAPI(params: { ids: string; factoryStatu...
  function brandDeleteByIdAPI (line 52) | function brandDeleteByIdAPI(id: number) {
  function getBrandAPI (line 62) | function getBrandAPI(id: number) {
  function updateBrandAPI (line 72) | function updateBrandAPI(id: number, data: PmsBrand) {

FILE: src/apis/companyAddress.ts
  function getCompanyAddressListAPI (line 7) | function getCompanyAddressListAPI() {

FILE: src/apis/coupon.ts
  function getCouponListAPI (line 13) | function getCouponListAPI(params: CouponQueryParam) {
  function couponCreateAPI (line 24) | function couponCreateAPI(data: SmsCouponExt) {
  function getCouponByIdAPI (line 35) | function getCouponByIdAPI(id: number) {
  function couponUpdateByIdAPI (line 45) | function couponUpdateByIdAPI(id: number, data: SmsCouponExt) {
  function couponDeleteByIdAPI (line 56) | function couponDeleteByIdAPI(id: number) {
  function getCouponHistoryListAPI (line 66) | function getCouponHistoryListAPI(params: CouponHistoryQueryParam) {

FILE: src/apis/flash.ts
  function getFlashListAPI (line 8) | function getFlashListAPI(params: PageParam) {
  function flashUpdateStatusByIdAPI (line 18) | function flashUpdateStatusByIdAPI(id: number, params: { status: number }) {
  function flashDeleteByIdAPI (line 28) | function flashDeleteByIdAPI(id: number) {
  function flashCreateAPI (line 37) | function flashCreateAPI(data: SmsFlashPromotion) {
  function flashUpdateByIdAPI (line 47) | function flashUpdateByIdAPI(id: number, data: SmsFlashPromotion) {

FILE: src/apis/flashProductRelation.ts
  function getFlashProductRelationListAPI (line 8) | function getFlashProductRelationListAPI(params: FlashProductQueryParam) {
  function flashProductRelationCreateAPI (line 18) | function flashProductRelationCreateAPI(data: SmsFlashPromotionProductRel...
  function flashProductRelationDeleteByIdAPI (line 28) | function flashProductRelationDeleteByIdAPI(id: number) {
  function flashProductRelationUpdateByIdAPI (line 37) | function flashProductRelationUpdateByIdAPI(

FILE: src/apis/flashSession.ts
  function getFlashSessionSelectListAPI (line 7) | function getFlashSessionSelectListAPI(params: { flashPromotionId: number...
  function getFlashSessionListAPI (line 18) | function getFlashSessionListAPI() {
  function flashSessionUpdateStatusByIdAPI (line 28) | function flashSessionUpdateStatusByIdAPI(id: number, params: { status: n...
  function flashSessionDeleteByIdAPI (line 41) | function flashSessionDeleteByIdAPI(id: number) {
  function flashSessionCreateAPI (line 51) | function flashSessionCreateAPI(data: SmsFlashPromotionSession) {
  function flashSessionUpdateByIdAPI (line 62) | function flashSessionUpdateByIdAPI(id: number, data: SmsFlashPromotionSe...

FILE: src/apis/homeAdvertise.ts
  function getHomeAdvertiseListAPI (line 8) | function getHomeAdvertiseListAPI(params: HomeAdvertiseQueryParam) {
  function homeAdvertiseUpdateStatusAPI (line 19) | function homeAdvertiseUpdateStatusAPI(params: { id: number; status: numb...
  function deleteHomeAdvertiseAPI (line 30) | function deleteHomeAdvertiseAPI(params: { ids: string }) {
  function homeAdvertiseCreateAPI (line 41) | function homeAdvertiseCreateAPI(data: SmsHomeAdvertise) {
  function getHomeAdvertiseByIdAPI (line 52) | function getHomeAdvertiseByIdAPI(id: number) {
  function homeAdvertiseUpdateAPI (line 62) | function homeAdvertiseUpdateAPI(id: number, data: SmsHomeAdvertise) {

FILE: src/apis/homeBrand.ts
  function getHomeBrandListAPI (line 8) | function getHomeBrandListAPI(params: HomeBrandQueryParam) {
  function homeBrandUpdateRecommendStatusAPI (line 19) | function homeBrandUpdateRecommendStatusAPI(params: {
  function homeBrandDeleteByIdsAPI (line 35) | function homeBrandDeleteByIdsAPI(params: { ids: string }) {
  function homeBrandCreateAPI (line 46) | function homeBrandCreateAPI(data: SmsHomeBrand[]) {
  function homeBrandUpdateSortAPI (line 57) | function homeBrandUpdateSortAPI(params: { id: number; sort: number }) {

FILE: src/apis/homeSubject.ts
  function getHomeRecommendSubjectListAPI (line 8) | function getHomeRecommendSubjectListAPI(params: HomeSubjectQueryParam) {
  function homeRecommendSubjectUpdateRecommendStatusAPI (line 19) | function homeRecommendSubjectUpdateRecommendStatusAPI(params: {
  function homeRecommendSubjectDeleteByIdsAPI (line 35) | function homeRecommendSubjectDeleteByIdsAPI(params: { ids: string }) {
  function homeRecommendSubjectCreateAPI (line 46) | function homeRecommendSubjectCreateAPI(data: SmsHomeRecommendSubject[]) {
  function homeRecommendSubjectUpdateSortAPI (line 57) | function homeRecommendSubjectUpdateSortAPI(params: { id: number; sort: n...

FILE: src/apis/memberLevel.ts
  function getMemberLevelListAPI (line 7) | function getMemberLevelListAPI(params: { defaultStatus: number }) {

FILE: src/apis/menu.ts
  function getMenuTreeListAPI (line 8) | function getMenuTreeListAPI() {
  function getMenuListByParentIdAPI (line 18) | function getMenuListByParentIdAPI(parentId: number, params: PageParam) {
  function deleteMenuByIdAPI (line 29) | function deleteMenuByIdAPI(id: number) {
  function menuCreateAPI (line 39) | function menuCreateAPI(data: UmsMenu) {
  function updateMenu (line 50) | function updateMenu(id: number, data: UmsMenu) {
  function getMenuByIdAPI (line 61) | function getMenuByIdAPI(id: number) {
  function menuUpdateHiddenByIdAPI (line 71) | function menuUpdateHiddenByIdAPI(id: number, params: { hidden: number }) {

FILE: src/apis/newProduct.ts
  function getHomeNewProductListAPI (line 8) | function getHomeNewProductListAPI(params: NewProductQueryParam) {
  function homeNewProductUpdateRecommendStatusAPI (line 19) | function homeNewProductUpdateRecommendStatusAPI(params: {
  function homeNewProductDeleteByIdsAPI (line 33) | function homeNewProductDeleteByIdsAPI(params: { ids: string }) {
  function homeNewProductCreateAPI (line 44) | function homeNewProductCreateAPI(data: SmsHomeNewProduct[]) {
  function homeNewProductUpdateSortByIdAPI (line 55) | function homeNewProductUpdateSortByIdAPI(params: { id: number; sort: num...

FILE: src/apis/order.ts
  function getOrderListAPI (line 15) | function getOrderListAPI(params: OrderQueryParam) {
  function orderUpdateCloseAPI (line 26) | function orderUpdateCloseAPI(params: { ids: string; note: string }) {
  function orderDeleteByIdsAPI (line 37) | function orderDeleteByIdsAPI(params: { ids: string }) {
  function orderUpdateDeliveryAPI (line 48) | function orderUpdateDeliveryAPI(data: OmsOrderDeliveryParam[]) {
  function getOrderDetailByIdAPI (line 59) | function getOrderDetailByIdAPI(id: number) {
  function orderUpdateReceiverInfoAPI (line 69) | function orderUpdateReceiverInfoAPI(data: OmsReceiverInfoParam) {
  function orderUpdateMoneyInfoAPI (line 80) | function orderUpdateMoneyInfoAPI(data: OmsMoneyInfoParam) {
  function orderUpdateNoteAPI (line 91) | function orderUpdateNoteAPI(params: { id: number; note: string; status: ...

FILE: src/apis/orderSetting.ts
  function getOrderSettingByIdAPI (line 7) | function getOrderSettingByIdAPI(id: number) {
  function orderSettingUpdateByIdAPI (line 17) | function orderSettingUpdateByIdAPI(id: number, data: OmsOrderSetting) {

FILE: src/apis/oss.ts
  function ossPolicyAPI (line 7) | function ossPolicyAPI() {

FILE: src/apis/prefrenceArea.ts
  function getPrefrenceAreaListAllAPI (line 7) | function getPrefrenceAreaListAllAPI() {

FILE: src/apis/product.ts
  function getProductListAPI (line 8) | function getProductListAPI(params: ProductQueryParam) {
  function productUpdateDeleteStatusAPI (line 19) | function productUpdateDeleteStatusAPI(params: { ids: string; deleteStatu...
  function productUpdateNewStatusAPI (line 30) | function productUpdateNewStatusAPI(params: { ids: string; newStatus: num...
  function productUpdateRecommendStatusAPI (line 41) | function productUpdateRecommendStatusAPI(params: { ids: string; recommen...
  function productUpdatePublishStatusAPI (line 52) | function productUpdatePublishStatusAPI(params: { ids: string; publishSta...
  function productCreateAPI (line 63) | function productCreateAPI(data: PmsProductParam) {
  function productUpdateByIdAPI (line 74) | function productUpdateByIdAPI(id: number, data: PmsProductParam) {
  function getPruductUpdateInfoAPI (line 85) | function getPruductUpdateInfoAPI(id: number) {

FILE: src/apis/productAttr.ts
  function getProductAttrInfoByCateIdAPI (line 8) | function getProductAttrInfoByCateIdAPI(cateId: number) {
  function getProductAttributeListAPI (line 18) | function getProductAttributeListAPI(cid: number, params: PageParam & { t...
  function productAttributeDeleteByIds (line 29) | function productAttributeDeleteByIds(params: { ids: string }) {
  function productAttributeCreateAPI (line 40) | function productAttributeCreateAPI(data: PmsProductAttribute) {
  function productAttributeUpdateAPI (line 51) | function productAttributeUpdateAPI(id: number, data: PmsProductAttribute) {
  function getProductAttributeByIdAPI (line 62) | function getProductAttributeByIdAPI(id: number) {

FILE: src/apis/productAttrCate.ts
  function productAttributeCategoryListWithAttrAPI (line 11) | function productAttributeCategoryListWithAttrAPI() {
  function getProductAttributeCategoryListAPI (line 21) | function getProductAttributeCategoryListAPI(params: PageParam) {
  function productAttributeCategoryCreateAPI (line 32) | function productAttributeCategoryCreateAPI(name: string) {
  function productAttributeCategoryDeleteById (line 43) | function productAttributeCategoryDeleteById(id: number) {
  function productAttributeCategoryUpdateAPI (line 53) | function productAttributeCategoryUpdateAPI(id: number, name: string) {

FILE: src/apis/productCate.ts
  function getProductCategoryListWithChildrenAPI (line 8) | function getProductCategoryListWithChildrenAPI() {
  function getProductCategoryListAPI (line 18) | function getProductCategoryListAPI(parentId: number, params: PageParam) {
  function productCategoryDeleteByIdAPI (line 29) | function productCategoryDeleteByIdAPI(id: number) {
  function productCategoryCreateAPI (line 39) | function productCategoryCreateAPI(data: PmsProductCategory) {
  function productCategoryUpdateByIdAPI (line 50) | function productCategoryUpdateByIdAPI(id: number, data: PmsProductCatego...
  function getProductCategoryByIdAPI (line 61) | function getProductCategoryByIdAPI(id: number) {
  function productCategoryUpdateShowStatusAPI (line 71) | function productCategoryUpdateShowStatusAPI(params: { ids: string; showS...
  function productCategoryUpdateNavStatusAPI (line 82) | function productCategoryUpdateNavStatusAPI(params: { ids: string; navSta...

FILE: src/apis/recommendProduct.ts
  function getHomeRecommendProductListAPI (line 8) | function getHomeRecommendProductListAPI(params: RecommendProductQueryPar...
  function homeRecommendProductUpdateRecommendStatusAPI (line 19) | function homeRecommendProductUpdateRecommendStatusAPI(params: {
  function homeRecommendProductDeleteByIdsAPI (line 33) | function homeRecommendProductDeleteByIdsAPI(params: { ids: string }) {
  function homeRecommendProductCreateAPI (line 44) | function homeRecommendProductCreateAPI(data: SmsHomeRecommendProduct[]) {
  function homeRecommendProductUpdateSortByIdAPI (line 55) | function homeRecommendProductUpdateSortByIdAPI(params: { id: number; sor...

FILE: src/apis/resource.ts
  function fetchAllResourceList (line 8) | function fetchAllResourceList() {
  function getResourceListAPI (line 18) | function getResourceListAPI(params: ResourceQueryParam) {
  function resourceCreateAPI (line 29) | function resourceCreateAPI(data: UmsResource) {
  function resourceUpdateAPI (line 40) | function resourceUpdateAPI(id: number, data: UmsResource) {
  function resourceDeleteByIdAPI (line 51) | function resourceDeleteByIdAPI(id: number) {

FILE: src/apis/resourceCategory.ts
  function resourceCategoryListAllAPI (line 7) | function resourceCategoryListAllAPI() {
  function resourceCategoryCreateAPI (line 17) | function resourceCategoryCreateAPI(data: UmsResourceCategory) {
  function resourceCategoryUpdateAPI (line 28) | function resourceCategoryUpdateAPI(id: number, data: UmsResourceCategory) {
  function resourceCategoryDeleteByIdAPI (line 39) | function resourceCategoryDeleteByIdAPI(id: number) {

FILE: src/apis/returnApply.ts
  function getReturnApplyListAPI (line 13) | function getReturnApplyListAPI(params: ReturnApplyQueryParam) {
  function returnApplyDeleteByIdsAPI (line 24) | function returnApplyDeleteByIdsAPI(params: { ids: string }) {
  function returnApplyUpdateStatusAPI (line 35) | function returnApplyUpdateStatusAPI(id: number, data: OmsUpdateStatusPar...
  function getReturnApplyByIdAPI (line 46) | function getReturnApplyByIdAPI(id: number) {

FILE: src/apis/returnReason.ts
  function getReturnReasonListAPI (line 8) | function getReturnReasonListAPI(params: PageParam) {
  function returnReasonDeleteByIdsAPI (line 19) | function returnReasonDeleteByIdsAPI(params: { ids: string }) {
  function returnReasonUpdateStatusAPI (line 30) | function returnReasonUpdateStatusAPI(params: { ids: string; status: numb...
  function returnReasonCreateAPI (line 41) | function returnReasonCreateAPI(data: OmsOrderReturnReason) {
  function getReturnReasonByIdAPI (line 52) | function getReturnReasonByIdAPI(id: number) {
  function returnReasonUpdateAPI (line 62) | function returnReasonUpdateAPI(id: number, data: OmsOrderReturnReason) {

FILE: src/apis/role.ts
  function getRoleListAllAPI (line 9) | function getRoleListAllAPI() {
  function getRoleListAPI (line 19) | function getRoleListAPI(params: PageParam) {
  function roleCreateAPI (line 30) | function roleCreateAPI(data: UmsRole) {
  function roleUpdateByIdAPI (line 41) | function roleUpdateByIdAPI(id: number, data: UmsRole) {
  function roleUpdateStatusAPI (line 52) | function roleUpdateStatusAPI(id: number, params: { status: number }) {
  function roleDeleteByIdsAPI (line 63) | function roleDeleteByIdsAPI(params: { ids: string }) {
  function roleListMenuByRoleIdAPI (line 74) | function roleListMenuByRoleIdAPI(id: number) {
  function roleAllocMenuAPI (line 84) | function roleAllocMenuAPI(params: {
  function roleListResourceById (line 100) | function roleListResourceById(id: number) {
  function roleAllocResourceAPI (line 110) | function roleAllocResourceAPI(params: {

FILE: src/apis/skuStock.ts
  function getSkuListByPidAPI (line 7) | function getSkuListByPidAPI(pid: number, params: { keyword?: string }) {
  function skuUpdateByPidAPI (line 18) | function skuUpdateByPidAPI(pid: number, data: PmsSkuStock[]) {

FILE: src/apis/subject.ts
  function getSubjectListAllAPI (line 8) | function getSubjectListAllAPI() {
  function getSubjectListAPI (line 18) | function getSubjectListAPI(params: PageParam) {

FILE: src/icons/index.ts
  function setupSvgIcon (line 5) | function setupSvgIcon(app: App) {

FILE: src/stores/app.ts
  function toggleSideBar (line 14) | function toggleSideBar() {
  function closeSideBar (line 19) | function closeSideBar(withoutAnimation: boolean) {
  function toggleDevice (line 25) | function toggleDevice(deviceType: string) {

FILE: src/stores/counter.ts
  function increment (line 7) | function increment() {

FILE: src/stores/permission.ts
  function hasPermission (line 8) | function hasPermission(menus: UmsMenu[], route: RouteRecordExt) {
  function getMenu (line 41) | function getMenu(name: string, menus: UmsMenu[]) {
  function sortRouters (line 46) | function sortRouters(accessedRouters: RouteRecordExt[]) {
  function compare (line 56) | function compare(a: RouteRecordExt, b: RouteRecordExt) {

FILE: src/types/admin.d.ts
  type LoginParam (line 4) | type LoginParam = {
  type LoginResult (line 12) | type LoginResult = {
  type UserInfoResult (line 20) | type UserInfoResult = {
  type UserInfo (line 32) | type UserInfo = Pick<UserInfoResult, 'username' | 'menus' | 'roles'> & {
  type UmsAdmin (line 42) | type UmsAdmin = {

FILE: src/types/brand.d.ts
  type PmsBrand (line 2) | type PmsBrand = {

FILE: src/types/common.d.ts
  type CommonResult (line 2) | type CommonResult<T> = {
  type CommonPage (line 12) | type CommonPage<T> = {
  type PageParam (line 26) | type PageParam = {
  type ElCascaderDataVo (line 36) | type ElCascaderDataVo = {
  type ElSelectDataVo (line 46) | type ElSelectDataVo = {
  type ElTransferDataVo (line 54) | type ElTransferDataVo = {

FILE: src/types/companyAddress.d.ts
  type OmsCompanyAddress (line 2) | type OmsCompanyAddress = {

FILE: src/types/coupon.d.ts
  type SmsCoupon (line 4) | type SmsCoupon = {
  type SmsCouponExt (line 44) | type SmsCouponExt = SmsCoupon & {
  type CouponProductCateRelationVo (line 52) | type CouponProductCateRelationVo = {
  type CouponSelectProductOptionVo (line 62) | type CouponSelectProductOptionVo = {
  type CouponQueryParam (line 72) | type CouponQueryParam = PageParam & {
  type SmsCouponHistory (line 80) | type SmsCouponHistory = {
  type CouponHistoryQueryParam (line 106) | type CouponHistoryQueryParam = PageParam & {

FILE: src/types/flash.d.ts
  type SmsFlashPromotion (line 5) | type SmsFlashPromotion = {
  type SmsFlashPromotionSession (line 21) | type SmsFlashPromotionSession = {
  type SmsFlashPromotionProductRelation (line 39) | type SmsFlashPromotionProductRelation = {
  type FlashProductQueryParam (line 61) | type FlashProductQueryParam = PageParam & {

FILE: src/types/homeAdvertist.d.ts
  type SmsHomeAdvertise (line 4) | type SmsHomeAdvertise = {
  type HomeAdvertiseQueryParam (line 32) | type HomeAdvertiseQueryParam = PageParam & {

FILE: src/types/homeBrand.d.ts
  type SmsHomeBrand (line 2) | type SmsHomeBrand = {
  type HomeBrandQueryParam (line 16) | type HomeBrandQueryParam = PageParam & {

FILE: src/types/homeSubject.d.ts
  type SmsHomeRecommendSubject (line 6) | type SmsHomeRecommendSubject = {
  type HomeSubjectQueryParam (line 20) | type HomeSubjectQueryParam = PageParam & {

FILE: src/types/memberLevel.d.ts
  type UmsMemberLevel (line 2) | type UmsMemberLevel = {

FILE: src/types/menu.d.ts
  type UmsMenu (line 2) | type UmsMenu = {
  type UmsMenuNode (line 24) | type UmsMenuNode = UmsMenu & {

FILE: src/types/newProduct.d.ts
  type SmsHomeNewProduct (line 4) | type SmsHomeNewProduct = {
  type NewProductQueryParam (line 18) | type NewProductQueryParam = PageParam & {

FILE: src/types/order.d.ts
  type OmsOrder (line 4) | type OmsOrder = {
  type OmsOrderItem (line 96) | type OmsOrderItem = {
  type OmsOrderOperateHistory (line 142) | type OmsOrderOperateHistory = {
  type OrderQueryParam (line 158) | type OrderQueryParam = PageParam & {
  type OmsOrderDeliveryParam (line 174) | type OmsOrderDeliveryParam = {
  type OmsOrderDetail (line 184) | type OmsOrderDetail = OmsOrder & {
  type OmsReceiverInfoParam (line 192) | type OmsReceiverInfoParam = {
  type OmsMoneyInfoParam (line 214) | type OmsMoneyInfoParam = {

FILE: src/types/orderSetting.d.ts
  type OmsOrderSetting (line 2) | type OmsOrderSetting = {

FILE: src/types/oss.d.ts
  type OssPolicyResult (line 4) | type OssPolicyResult = {

FILE: src/types/prefrenceArea.d.ts
  type CmsPrefrenceArea (line 2) | type CmsPrefrenceArea = {

FILE: src/types/product.d.ts
  type PmsProduct (line 5) | type PmsProduct = {
  type ProductQueryParam (line 93) | type ProductQueryParam = PageParam & {
  type PmsProductParam (line 107) | type PmsProductParam = PmsProduct & {
  type PmsProductLadder (line 135) | type PmsProductLadder = {
  type PmsProductFullReduction (line 149) | type PmsProductFullReduction = {
  type PmsMemberPrice (line 161) | type PmsMemberPrice = {
  type CmsSubjectProductRelation (line 175) | type CmsSubjectProductRelation = {
  type CmsPrefrenceAreaProductRelation (line 185) | type CmsPrefrenceAreaProductRelation = {

FILE: src/types/productAttr.d.ts
  type ProductAttrInfo (line 2) | type ProductAttrInfo = {
  type PmsProductAttribute (line 10) | type PmsProductAttribute = {
  type PmsProductAttributeCategory (line 38) | type PmsProductAttributeCategory = {
  type PmsProductAttributeCategoryExt (line 50) | type PmsProductAttributeCategoryExt = PmsProductAttributeCategory & {
  type PmsProductAttributeValue (line 56) | type PmsProductAttributeValue = {
  type ProductAttrVo (line 68) | interface ProductAttrVo extends Pick<
  type ProductParamVo (line 79) | interface ProductParamVo extends Pick<
  type ProductAttrPicVo (line 88) | type ProductAttrPicVo = {

FILE: src/types/productCate.d.ts
  type PmsProductCategory (line 2) | type PmsProductCategory = {
  type PmsProductCategoryExt (line 32) | type PmsProductCategoryExt = PmsProductCategory & {

FILE: src/types/recommendProduct.d.ts
  type SmsHomeRecommendProduct (line 4) | type SmsHomeRecommendProduct = SmsHomeNewProduct
  type RecommendProductQueryParam (line 7) | type RecommendProductQueryParam = NewProductQueryParam

FILE: src/types/resource.d.ts
  type UmsResource (line 4) | type UmsResource = {
  type UmsResourceCategory (line 22) | type UmsResourceCategory = {
  type ResourceQueryParam (line 36) | type ResourceQueryParam = PageParam & {

FILE: src/types/returnApply.d.ts
  type OmsOrderReturnApply (line 5) | type OmsOrderReturnApply = {
  type ReturnApplyQueryParam (line 63) | type ReturnApplyQueryParam = PageParam & {
  type OmsOrderReturnApplyResult (line 79) | type OmsOrderReturnApplyResult = OmsOrderReturnApply & {
  type OmsUpdateStatusParam (line 85) | type OmsUpdateStatusParam = {

FILE: src/types/returnReason.d.ts
  type OmsOrderReturnReason (line 2) | type OmsOrderReturnReason = {

FILE: src/types/role.d.ts
  type UmsRole (line 2) | type UmsRole = {

FILE: src/types/router.d.ts
  type RouteRecordExt (line 4) | type RouteRecordExt = RouteRecordRaw & {

FILE: src/types/skuStock.d.ts
  type PmsSkuStock (line 2) | type PmsSkuStock = {

FILE: src/types/subject.d.ts
  type CmsSubject (line 2) | type CmsSubject = {

FILE: src/utils/cookie.ts
  function setCookie (line 4) | function setCookie(key: string, value: string, expires: number) {
  function getCookie (line 9) | function getCookie(key: string) {

FILE: src/utils/datetime.ts
  function str2Date (line 28) | function str2Date(dateStr: string, separator?: string) {

FILE: src/utils/validate.ts
  function isvalidUsername (line 1) | function isvalidUsername(str: string) {
  function validateURL (line 6) | function validateURL(textval: string) {
  function validateLowerCase (line 13) | function validateLowerCase(str: string) {
  function validateUpperCase (line 19) | function validateUpperCase(str: string) {
  function validatAlphabets (line 25) | function validatAlphabets(str: string) {

FILE: src/views/layout/composables/useResizeHandler.ts
  constant WIDTH (line 6) | const WIDTH = 1024
  constant RATIO (line 7) | const RATIO = 3
  function useResizeHandler (line 9) | function useResizeHandler() {
Condensed preview — 246 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,048K chars).
[
  {
    "path": ".editorconfig",
    "chars": 216,
    "preview": "[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}]\ncharset = utf-8\nindent_size = 2\nindent_style = space\nins"
  },
  {
    "path": ".gitattributes",
    "chars": 19,
    "preview": "* text=auto eol=lf\n"
  },
  {
    "path": ".gitignore",
    "chars": 368,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\n.DS_Stor"
  },
  {
    "path": ".prettierrc",
    "chars": 156,
    "preview": "{\n  \"singleQuote\": true,\n  \"semi\": false,\n  \"tabWidth\": 2,\n  \"printWidth\": 100,\n  \"trailingComma\": \"all\",\n  \"endOfLine\":"
  },
  {
    "path": ".vscode/extensions.json",
    "chars": 248,
    "preview": "{\n  \"recommendations\": [\n    \"Vue.volar\",\n    \"dbaeumer.vscode-eslint\",\n    \"EditorConfig.EditorConfig\",\n    \"esbenp.pre"
  },
  {
    "path": "LICENSE",
    "chars": 10939,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 4407,
    "preview": "# mall-admin-web\n\n<p>\n  <a href=\"#公众号\"><img src=\"http://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/badge/%E5%85%AC%E4%B"
  },
  {
    "path": "auto-imports.d.ts",
    "chars": 254,
    "preview": "/* eslint-disable */\n/* prettier-ignore */\n// @ts-nocheck\n// noinspection JSUnusedGlobalSymbols\n// Generated by unplugin"
  },
  {
    "path": "components.d.ts",
    "chars": 3345,
    "preview": "/* eslint-disable */\n// @ts-nocheck\n// biome-ignore lint: disable\n// oxlint-disable\n// ------\n// Generated by unplugin-v"
  },
  {
    "path": "env.d.ts",
    "chars": 420,
    "preview": "/// <reference types=\"vite/client\" />\n/** 扩展import.meta.env对象类型,配置.env文件中的环境变量 */\ninterface ImportMetaEnv {\n  /** 后端API基"
  },
  {
    "path": "eslint.config.ts",
    "chars": 835,
    "preview": "import { globalIgnores } from 'eslint/config'\nimport { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-ty"
  },
  {
    "path": "index.html",
    "chars": 341,
    "preview": "<!doctype html>\n<html lang=\"\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" href=\"/favicon.ico\" />\n    <me"
  },
  {
    "path": "package.json",
    "chars": 1619,
    "preview": "{\n  \"name\": \"mall-admin-web\",\n  \"version\": \"3.0.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"engines\": {\n    \"node\": \"^"
  },
  {
    "path": "public/tinymce6.8.6/langs/zh_CN.js",
    "chars": 19571,
    "preview": "tinymce.addI18n(\"zh_CN\",{\"#\":\"#\",\"Accessibility\":\"\\u8f85\\u52a9\\u529f\\u80fd\",\"Accordion\":\"\\u6298\\u53e0\\u9762\\u677f\",\"Acco"
  },
  {
    "path": "public/tinymce6.8.6/license.txt",
    "chars": 1102,
    "preview": "MIT License\n\nCopyright (c) 2022 Ephox Corporation DBA Tiny Technologies, Inc.\n\nPermission is hereby granted, free of cha"
  },
  {
    "path": "public/tinymce6.8.6/notices.txt",
    "chars": 471,
    "preview": "Below is a list of third party libraries that this software uses:\n------------------------------------------------------"
  },
  {
    "path": "public/tinymce6.8.6/plugins/emoticons/js/emojiimages.js",
    "chars": 403751,
    "preview": "window.tinymce.Resource.add(\"tinymce.plugins.emoticons\",{100:{keywords:[\"score\",\"perfect\",\"numbers\",\"century\",\"exam\",\"qu"
  },
  {
    "path": "public/tinymce6.8.6/plugins/emoticons/js/emojis.js",
    "chars": 180560,
    "preview": "window.tinymce.Resource.add(\"tinymce.plugins.emoticons\",{grinning:{keywords:[\"face\",\"smile\",\"happy\",\"joy\",\":D\",\"grin\"],c"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/ar.js",
    "chars": 4222,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.ar',\n'<h1>بدء التنقل بواسطة لوحة المفاتيح</h1>\\n' +\n  '\\n' +\n  '<dl>"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/bg_BG.js",
    "chars": 4671,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.bg_BG',\n'<h1>Начало на навигацията с клавиатурата</h1>\\n' +\n  '\\n' +"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/ca.js",
    "chars": 4849,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.ca',\n'<h1>Inici de la navegació amb el teclat</h1>\\n' +\n  '\\n' +\n  '"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/cs.js",
    "chars": 4525,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.cs',\n'<h1>Začínáme navigovat pomocí klávesnice</h1>\\n' +\n  '\\n' +\n  "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/da.js",
    "chars": 4204,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.da',\n'<h1>Start tastaturnavigation</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +\n "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/de.js",
    "chars": 4898,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.de',\n'<h1>Grundlagen der Tastaturnavigation</h1>\\n' +\n  '\\n' +\n  '<d"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/el.js",
    "chars": 4957,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.el',\n'<h1>Έναρξη πλοήγησης μέσω πληκτρολογίου</h1>\\n' +\n  '\\n' +\n  '"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/en.js",
    "chars": 3932,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.en',\n'<h1>Begin keyboard navigation</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +\n"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/es.js",
    "chars": 4816,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.es',\n'<h1>Iniciar la navegación con el teclado</h1>\\n' +\n  '\\n' +\n  "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/eu.js",
    "chars": 4282,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.eu',\n'<h1>Hasi teklatuaren nabigazioa</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/fa.js",
    "chars": 3945,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.fa',\n'<h1>شروع پیمایش صفحه‌کلید</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +\n  ' "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/fi.js",
    "chars": 4635,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.fi',\n'<h1>Näppäimistönavigoinnin aloittaminen</h1>\\n' +\n  '\\n' +\n  '"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/fr_FR.js",
    "chars": 4854,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.fr_FR',\n'<h1>Débuter la navigation au clavier</h1>\\n' +\n  '\\n' +\n  '"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/he_IL.js",
    "chars": 3722,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.he_IL',\n'<h1>התחל ניווט במקלדת</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +\n  '  "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/hi.js",
    "chars": 3934,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.hi',\n'<h1>कीबोर्ड नेविगेशन शुरू करें</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/hr.js",
    "chars": 4746,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.hr',\n'<h1>Početak navigacije na tipkovnici</h1>\\n' +\n  '\\n' +\n  '<dl"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/hu_HU.js",
    "chars": 4485,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.hu_HU',\n'<h1>Billentyűzetes navigáció indítása</h1>\\n' +\n  '\\n' +\n  "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/id.js",
    "chars": 4204,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.id',\n'<h1>Memulai navigasi keyboard</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +\n"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/it.js",
    "chars": 5080,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.it',\n'<h1>Iniziare la navigazione tramite tastiera</h1>\\n' +\n  '\\n' "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/ja.js",
    "chars": 2983,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.ja',\n'<h1>キーボード ナビゲーションの開始</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +\n  '  <dt>"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/kk.js",
    "chars": 4534,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.kk',\n'<h1>Пернетақта навигациясын бастау</h1>\\n' +\n  '\\n' +\n  '<dl>\\"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/ko_KR.js",
    "chars": 3078,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.ko_KR',\n'<h1>키보드 탐색 시작</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +\n  '  <dt>메뉴 모"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/ms.js",
    "chars": 4091,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.ms',\n'<h1>Mulakan navigasi papan kekunci</h1>\\n' +\n  '\\n' +\n  '<dl>\\"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/nb_NO.js",
    "chars": 4487,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.nb_NO',\n'<h1>Starte tastaturnavigering</h1>\\n' +\n  '\\n' +\n  '<dl>\\n'"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/nl.js",
    "chars": 4472,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.nl',\n'<h1>Toetsenbordnavigatie starten</h1>\\n' +\n  '\\n' +\n  '<dl>\\n'"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/pl.js",
    "chars": 4795,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.pl',\n'<h1>Początek nawigacji przy użyciu klawiatury</h1>\\n' +\n  '\\n'"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/pt_BR.js",
    "chars": 4269,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.pt_BR',\n'<h1>Iniciar navegação pelo teclado</h1>\\n' +\n  '\\n' +\n  '<d"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/pt_PT.js",
    "chars": 4358,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.pt_PT',\n'<h1>Iniciar navegação com teclado</h1>\\n' +\n  '\\n' +\n  '<dl"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/ro.js",
    "chars": 4797,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.ro',\n'<h1>Începeți navigarea de la tastatură</h1>\\n' +\n  '\\n' +\n  '<"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/ru.js",
    "chars": 4626,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.ru',\n'<h1>Начните управление с помощью клавиатуры</h1>\\n' +\n  '\\n' +"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/sk.js",
    "chars": 4652,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.sk',\n'<h1>Začíname s navigáciou pomocou klávesnice</h1>\\n' +\n  '\\n' "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/sl_SI.js",
    "chars": 4582,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.sl_SI',\n'<h1>Začetek krmarjenja s tipkovnico</h1>\\n' +\n  '\\n' +\n  '<"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/sv_SE.js",
    "chars": 4188,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.sv_SE',\n'<h1>Påbörja tangentbordsnavigering</h1>\\n' +\n  '\\n' +\n  '<d"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/th_TH.js",
    "chars": 3855,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.th_TH',\n'<h1>เริ่มต้นการนำทางด้วยแป้นพิมพ์</h1>\\n' +\n  '\\n' +\n  '<dl"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/tr.js",
    "chars": 4302,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.tr',\n'<h1>Klavyeyle gezintiyi başlatma</h1>\\n' +\n  '\\n' +\n  '<dl>\\n'"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/uk.js",
    "chars": 4887,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.uk',\n'<h1>Початок роботи з навігацією за допомогою клавіатури</h1>\\n"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/vi.js",
    "chars": 4337,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.vi',\n'<h1>Bắt đầu điều hướng bàn phím</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' "
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/zh_CN.js",
    "chars": 2540,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.zh_CN',\n'<h1>开始键盘导航</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +\n  '  <dt>聚焦于菜单栏<"
  },
  {
    "path": "public/tinymce6.8.6/plugins/help/js/i18n/keynav/zh_TW.js",
    "chars": 2630,
    "preview": "tinymce.Resource.add('tinymce.html-i18n.help-keynav.zh_TW',\n'<h1>開始鍵盤瀏覽</h1>\\n' +\n  '\\n' +\n  '<dl>\\n' +\n  '  <dt>跳至功能表列<"
  },
  {
    "path": "public/tinymce6.8.6/skins/content/dark/content.js",
    "chars": 1732,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/content/default/content.js",
    "chars": 1668,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/content/document/content.js",
    "chars": 1768,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/content/tinymce-5/content.js",
    "chars": 1670,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/content/tinymce-5-dark/content.js",
    "chars": 1745,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/content/writer/content.js",
    "chars": 1688,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/oxide/content.inline.js",
    "chars": 23982,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/oxide/content.js",
    "chars": 24027,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/oxide/skin.js",
    "chars": 77901,
    "preview": "tinymce.Resource.add('ui/default/skin.css', \".tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/oxide/skin.shadowdom.js",
    "chars": 608,
    "preview": "tinymce.Resource.add('ui/default/skin.shadowdom.css', \"body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{b"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/oxide-dark/content.inline.js",
    "chars": 23979,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/oxide-dark/content.js",
    "chars": 23635,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/oxide-dark/skin.js",
    "chars": 77872,
    "preview": "tinymce.Resource.add('ui/dark/skin.css', \".tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-fam"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/oxide-dark/skin.shadowdom.js",
    "chars": 605,
    "preview": "tinymce.Resource.add('ui/dark/skin.shadowdom.css', \"body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{bord"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/tinymce-5/content.inline.js",
    "chars": 23984,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/tinymce-5/content.js",
    "chars": 24029,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/tinymce-5/skin.js",
    "chars": 80557,
    "preview": "tinymce.Resource.add('ui/tinymce-5/skin.css', \".tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;fon"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/tinymce-5/skin.shadowdom.js",
    "chars": 610,
    "preview": "tinymce.Resource.add('ui/tinymce-5/skin.shadowdom.css', \"body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/tinymce-5-dark/content.inline.js",
    "chars": 23989,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/tinymce-5-dark/content.js",
    "chars": 23645,
    "preview": "/* This file is bundled with the code from the following third party libraries */\n\n/**\n * http://prismjs.com/\n * @licens"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/tinymce-5-dark/skin.js",
    "chars": 80421,
    "preview": "tinymce.Resource.add('ui/tinymce-5-dark/skin.css', \".tox{box-shadow:none;box-sizing:content-box;color:#2a3746;cursor:aut"
  },
  {
    "path": "public/tinymce6.8.6/skins/ui/tinymce-5-dark/skin.shadowdom.js",
    "chars": 615,
    "preview": "tinymce.Resource.add('ui/tinymce-5-dark/skin.shadowdom.css', \"body.tox-dialog__disable-scroll{overflow:hidden}.tox-fulls"
  },
  {
    "path": "public/tinymce6.8.6/tinymce.d.ts",
    "chars": 125219,
    "preview": "interface StringPathBookmark {\n    start: string;\n    end?: string;\n    forward?: boolean;\n}\ninterface RangeBookmark {\n "
  },
  {
    "path": "src/App.vue",
    "chars": 326,
    "preview": "<script setup lang=\"ts\">\nimport { ElConfigProvider } from 'element-plus'\nimport zhCn from 'element-plus/es/locale/lang/z"
  },
  {
    "path": "src/apis/admin.ts",
    "chars": 1911,
    "preview": "import type { LoginParam, LoginResult, UmsAdmin, UserInfoResult } from '@/types/admin'\nimport type { CommonPage, PagePar"
  },
  {
    "path": "src/apis/brand.ts",
    "chars": 1372,
    "preview": "import type { PmsBrand } from '@/types/brand'\nimport type { CommonPage, PageParam } from '@/types/common'\nimport http fr"
  },
  {
    "path": "src/apis/companyAddress.ts",
    "chars": 258,
    "preview": "import type { OmsCompanyAddress } from '@/types/companyAddress'\nimport http from '@/utils/http'\n\n/**\n * 获取所有收货地址\n */\nexp"
  },
  {
    "path": "src/apis/coupon.ts",
    "chars": 1249,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type {\n  CouponHistoryQueryParam,\n  CouponQueryParam,\n  SmsCoupo"
  },
  {
    "path": "src/apis/flash.ts",
    "chars": 993,
    "preview": "import type { PageParam } from '@/types/common'\nimport type { SmsFlashPromotion } from '@/types/flash'\nimport http from "
  },
  {
    "path": "src/apis/flashProductRelation.ts",
    "chars": 1058,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type { FlashProductQueryParam, SmsFlashPromotionProductRelation "
  },
  {
    "path": "src/apis/flashSession.ts",
    "chars": 1286,
    "preview": "import type { SmsFlashPromotionSession } from '@/types/flash'\nimport http from '@/utils/http'\n\n/**\n * 获取全部可选场次及其数量\n */\ne"
  },
  {
    "path": "src/apis/homeAdvertise.ts",
    "chars": 1324,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type { HomeAdvertiseQueryParam, SmsHomeAdvertise } from '@/types"
  },
  {
    "path": "src/apis/homeBrand.ts",
    "chars": 1195,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type { HomeBrandQueryParam, SmsHomeBrand } from '@/types/homeBra"
  },
  {
    "path": "src/apis/homeSubject.ts",
    "chars": 1342,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type { HomeSubjectQueryParam, SmsHomeRecommendSubject } from '@/"
  },
  {
    "path": "src/apis/memberLevel.ts",
    "chars": 296,
    "preview": "import type { UmsMemberLevel } from '@/types/memberLevel'\nimport http from '@/utils/http'\n\n/**\n * 查询所有会员等级\n */\nexport fu"
  },
  {
    "path": "src/apis/menu.ts",
    "chars": 1333,
    "preview": "import type { CommonPage, PageParam } from '@/types/common'\nimport type { UmsMenu, UmsMenuNode } from '@/types/menu'\nimp"
  },
  {
    "path": "src/apis/newProduct.ts",
    "chars": 1239,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type { NewProductQueryParam, SmsHomeNewProduct } from '@/types/n"
  },
  {
    "path": "src/apis/order.ts",
    "chars": 1715,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type {\n  OmsMoneyInfoParam,\n  OmsOrder,\n  OmsOrderDeliveryParam,"
  },
  {
    "path": "src/apis/orderSetting.ts",
    "chars": 455,
    "preview": "import type { OmsOrderSetting } from '@/types/orderSetting'\nimport http from '@/utils/http'\n\n/**\n * 获取指定订单设置\n */\nexport "
  },
  {
    "path": "src/apis/oss.ts",
    "chars": 228,
    "preview": "import type { OssPolicyResult } from '@/types/oss'\nimport http from '@/utils/http'\n\n/**\n * Oss上传签名生成\n */\nexport function"
  },
  {
    "path": "src/apis/prefrenceArea.ts",
    "chars": 259,
    "preview": "import type { CmsPrefrenceArea } from '@/types/prefrenceArea'\nimport http from '@/utils/http'\n\n/**\n * 获取所有商品优选\n */\nexpor"
  },
  {
    "path": "src/apis/product.ts",
    "chars": 1763,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type { PmsProduct, PmsProductParam, ProductQueryParam } from '@/"
  },
  {
    "path": "src/apis/productAttr.ts",
    "chars": 1409,
    "preview": "import type { CommonPage, PageParam } from '@/types/common'\nimport type { PmsProductAttribute, ProductAttrInfo } from '@"
  },
  {
    "path": "src/apis/productAttrCate.ts",
    "chars": 1269,
    "preview": "import type { CommonPage, PageParam } from '@/types/common'\nimport type {\n  PmsProductAttributeCategory,\n  PmsProductAtt"
  },
  {
    "path": "src/apis/productCate.ts",
    "chars": 1805,
    "preview": "import type { CommonPage, PageParam } from '@/types/common'\nimport type { PmsProductCategory, PmsProductCategoryExt } fr"
  },
  {
    "path": "src/apis/recommendProduct.ts",
    "chars": 1335,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type { RecommendProductQueryParam, SmsHomeRecommendProduct } fro"
  },
  {
    "path": "src/apis/resource.ts",
    "chars": 999,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type { ResourceQueryParam, UmsResource } from '@/types/resource'"
  },
  {
    "path": "src/apis/resourceCategory.ts",
    "chars": 830,
    "preview": "import type { UmsResourceCategory } from '@/types/resource'\nimport http from '@/utils/http'\n\n/**\n * 查询所有后台资源分类\n */\nexpor"
  },
  {
    "path": "src/apis/returnApply.ts",
    "chars": 1010,
    "preview": "import type { CommonPage } from '@/types/common'\nimport type {\n  OmsOrderReturnApply,\n  OmsOrderReturnApplyResult,\n  Oms"
  },
  {
    "path": "src/apis/returnReason.ts",
    "chars": 1315,
    "preview": "import type { CommonPage, PageParam } from '@/types/common'\nimport type { OmsOrderReturnReason } from '@/types/returnRea"
  },
  {
    "path": "src/apis/role.ts",
    "chars": 1988,
    "preview": "import type { CommonPage, PageParam } from '@/types/common'\nimport type { UmsMenu } from '@/types/menu'\nimport type { Um"
  },
  {
    "path": "src/apis/skuStock.ts",
    "chars": 489,
    "preview": "import type { PmsSkuStock } from '@/types/skuStock'\nimport http from '@/utils/http'\n\n/**\n * 根据商品ID及sku编码模糊搜索sku库存\n */\nex"
  },
  {
    "path": "src/apis/subject.ts",
    "chars": 483,
    "preview": "import type { CommonPage, PageParam } from '@/types/common'\nimport type { CmsSubject } from '@/types/subject'\nimport htt"
  },
  {
    "path": "src/components/Breadcrumb/index.vue",
    "chars": 1786,
    "preview": "<script lang=\"ts\" setup>\nimport { computed, ref, watch } from 'vue'\nimport { useRoute, type RouteLocationMatched } from "
  },
  {
    "path": "src/components/Hamburger/index.vue",
    "chars": 1871,
    "preview": "<script lang=\"ts\" setup>\nimport type { PropType } from 'vue';\n\n// 定义组件名称\ndefineOptions({\n  name: 'Hamburger'\n})\n\n// 定义pr"
  },
  {
    "path": "src/components/ScrollBar/index.vue",
    "chars": 1489,
    "preview": "<script lang=\"ts\" setup>\nimport { ref } from 'vue'\n\n// 定义组件名称\ndefineOptions({\n  name: 'ScrollBar'\n})\n\nconst delta = 15\n\n"
  },
  {
    "path": "src/components/SvgIcon/index.vue",
    "chars": 724,
    "preview": "<script lang=\"ts\" setup>\nimport { computed } from 'vue'\n\n// 定义组件名称\ndefineOptions({\n  name: 'svg-icon'\n})\n\n// 定义props\ncon"
  },
  {
    "path": "src/components/Tinymce/index.vue",
    "chars": 3716,
    "preview": "<template>\n  <div class=\"rich-editor\">\n    <editor v-model=\"contentValue\" :init=\"initOptions\" :disabled=\"disabled\" @onCl"
  },
  {
    "path": "src/components/Upload/multiUpload.vue",
    "chars": 3491,
    "preview": "<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport { ossPolicyAPI } from '@/apis/oss' // 假设这是API文件的正确路径\nim"
  },
  {
    "path": "src/components/Upload/singleUpload.vue",
    "chars": 3140,
    "preview": "<script setup lang=\"ts\">\nimport { ref, watch } from 'vue'\nimport { ossPolicyAPI } from '@/apis/oss' // 假设这是API文件的正确路径\nim"
  },
  {
    "path": "src/icons/index.ts",
    "chars": 397,
    "preview": "import SvgIcon from '@/components/SvgIcon/index.vue' // svg组件\nimport type { App } from 'vue'\n\n// 导出组件注册函数,在main.js中使用\nex"
  },
  {
    "path": "src/main.ts",
    "chars": 669,
    "preview": "import { createApp } from 'vue'\nimport App from './App.vue'\nimport { createPinia } from 'pinia'\nimport router from './ro"
  },
  {
    "path": "src/router/guard.ts",
    "chars": 1238,
    "preview": "import router from '@/router/index'\nimport NProgress from 'nprogress'\nimport 'nprogress/nprogress.css'\nimport { useUserS"
  },
  {
    "path": "src/router/index.ts",
    "chars": 11005,
    "preview": "import { createRouter, createWebHashHistory } from 'vue-router'\nimport Layout from '@/views/layout/Layout.vue'\nimport ty"
  },
  {
    "path": "src/stores/app.ts",
    "chars": 695,
    "preview": "import { reactive, ref } from 'vue'\nimport { defineStore } from 'pinia'\n\nexport const useAppStore = defineStore('app', ("
  },
  {
    "path": "src/stores/counter.ts",
    "chars": 306,
    "preview": "import { ref, computed } from 'vue'\nimport { defineStore } from 'pinia'\n\nexport const useCounterStore = defineStore('cou"
  },
  {
    "path": "src/stores/order.ts",
    "chars": 421,
    "preview": "import { defineStore } from 'pinia'\nimport { ref } from 'vue'\nimport type { OmsOrder } from '@/types/order'\n\nexport cons"
  },
  {
    "path": "src/stores/permission.ts",
    "chars": 2781,
    "preview": "import { defineStore } from 'pinia'\nimport { shallowRef } from 'vue'\nimport { asyncRouterMap, constantRouterMap } from '"
  },
  {
    "path": "src/stores/user.ts",
    "chars": 1555,
    "preview": "import { defineStore } from 'pinia'\nimport { getAdminInfoAPI, adminLoginAPI, adminLogoutAPI } from '@/apis/admin'\nimport"
  },
  {
    "path": "src/styles/element/index.scss",
    "chars": 406,
    "preview": "/* 覆盖element-plus默认的主题色 */\n@forward 'element-plus/theme-chalk/src/common/var.scss' with (\n  $colors: (\n    'primary': (\n"
  },
  {
    "path": "src/styles/element-ui.scss",
    "chars": 447,
    "preview": " //to reset element-ui default css\n.el-upload {\n  input[type=\"file\"] {\n    display: none !important;\n  }\n}\n\n.el-upload__"
  },
  {
    "path": "src/styles/index.scss",
    "chars": 2097,
    "preview": "@use './variables.scss';\n@use './mixin.scss';\n@use './transition.scss';\n@use './element-ui.scss';\n@use './sidebar.scss';"
  },
  {
    "path": "src/styles/mixin.scss",
    "chars": 383,
    "preview": "@mixin clearfix {\n  &:after {\n    content: \"\";\n    display: table;\n    clear: both;\n  }\n}\n\n@mixin scrollBar {\n  &::-webk"
  },
  {
    "path": "src/styles/sidebar.scss",
    "chars": 2244,
    "preview": "@use './variables.scss' as vars;\n\n#app {\n  // 主体区域\n  .main-container {\n    min-height: 100%;\n    transition: margin-left"
  },
  {
    "path": "src/styles/transition.scss",
    "chars": 435,
    "preview": "//globl transition css\n\n/*fade*/\n.fade-enter-active,\n.fade-leave-active {\n  transition: opacity 0.28s;\n}\n\n.fade-enter,\n."
  },
  {
    "path": "src/styles/var.scss",
    "chars": 38,
    "preview": "/* 自定义css变量 */\n$customColor: #27ba9b;\n"
  },
  {
    "path": "src/styles/variables.scss",
    "chars": 67,
    "preview": "//sidebar\n$menuBg:#304156;\n$subMenuBg:#1f2d3d;\n$menuHover:#001528;\n"
  },
  {
    "path": "src/types/admin.d.ts",
    "chars": 984,
    "preview": "import type { UmsMenu } from './menu'\n\n/** 登录请求参数 */\nexport type LoginParam = {\n  /** 用户名 */\n  username: string\n  /** 密码"
  },
  {
    "path": "src/types/brand.d.ts",
    "chars": 426,
    "preview": "/** 品牌信息 */\nexport type PmsBrand = {\n  /** ID */\n  id?: number\n  /** 品牌名称 */\n  name: string\n  /** 首字母 */\n  firstLetter: "
  },
  {
    "path": "src/types/common.d.ts",
    "chars": 946,
    "preview": "/** 通用返回结果封装类 */\nexport type CommonResult<T> = {\n  /** 状态码 */\n  code: number\n  /** 提示信息 */\n  message: string\n  /** 封装数据 "
  },
  {
    "path": "src/types/companyAddress.d.ts",
    "chars": 400,
    "preview": "/** 公司收发货地址 */\nexport type OmsCompanyAddress = {\n  /** ID */\n  id?: number\n  /** 地址名称 */\n  addressName: string\n  /** 默认发"
  },
  {
    "path": "src/types/coupon.d.ts",
    "chars": 2138,
    "preview": "import type { PageParam } from './common'\n\n/** 优惠券信息 */\nexport type SmsCoupon = {\n  /** ID */\n  id?: number\n  /** 优惠券类型;"
  },
  {
    "path": "src/types/flash.d.ts",
    "chars": 1231,
    "preview": "import type { PageParam } from './common'\nimport type { PmsProduct } from './product'\n\n/** 秒杀活动信息 */\nexport type SmsFlas"
  },
  {
    "path": "src/types/homeAdvertist.d.ts",
    "chars": 681,
    "preview": "import type { PageParam } from './common'\n\n/** 首页广告实体 */\nexport type SmsHomeAdvertise = {\n  /** ID */\n  id?: number\n  /*"
  },
  {
    "path": "src/types/homeBrand.d.ts",
    "chars": 377,
    "preview": "/** 首页品牌 */\nexport type SmsHomeBrand = {\n  /** ID */\n  id?: number\n  /** 品牌ID */\n  brandId: number\n  /** 品牌名称 */\n  brand"
  },
  {
    "path": "src/types/homeSubject.d.ts",
    "chars": 445,
    "preview": "import type { PageParam } from './common'\n\n/**\n * 首页专题推荐\n */\nexport type SmsHomeRecommendSubject = {\n  /** ID */\n  id?: "
  },
  {
    "path": "src/types/memberLevel.d.ts",
    "chars": 595,
    "preview": "/** 会员等级信息 */\nexport type UmsMemberLevel = {\n  /** ID */\n  id?: number\n  /** 等级名称 */\n  name: string\n  /** 成长点数 */\n  grow"
  },
  {
    "path": "src/types/menu.d.ts",
    "chars": 405,
    "preview": "/** 菜单 */\nexport type UmsMenu = {\n  /** 唯一ID */\n  id?: number\n  /** 父级ID */\n  parentId: number\n  /** 创建时间 */\n  createTim"
  },
  {
    "path": "src/types/newProduct.d.ts",
    "chars": 438,
    "preview": "import type { PageParam } from './common'\n\n/** 首页新品推荐实体 */\nexport type SmsHomeNewProduct = {\n  /** ID */\n  id?: number\n "
  },
  {
    "path": "src/types/order.d.ts",
    "chars": 4468,
    "preview": "import type { PageParam } from './common'\n\n/** 订单信息 */\nexport type OmsOrder = {\n  /** 订单id */\n  id: number\n  /** 会员id */"
  },
  {
    "path": "src/types/orderSetting.d.ts",
    "chars": 334,
    "preview": "/** 订单设置信息 */\nexport type OmsOrderSetting = {\n  /** ID */\n  id: number\n  /** 秒杀订单超时关闭时间(分) */\n  flashOrderOvertime?: num"
  },
  {
    "path": "src/types/oss.d.ts",
    "chars": 270,
    "preview": "/**\n * OSS上传文件授权返回结果\n */\nexport type OssPolicyResult = {\n  /** 用户表单上传的策略,经过base64编码过的字符串 */\n  policy: string\n  /** 对poli"
  },
  {
    "path": "src/types/prefrenceArea.d.ts",
    "chars": 238,
    "preview": "/** 优选区域信息 */\nexport type CmsPrefrenceArea = {\n  /** ID */\n  id?: number\n  /** 名称 */\n  name: string\n  /** 副标题 */\n  subTi"
  },
  {
    "path": "src/types/product.d.ts",
    "chars": 3903,
    "preview": "import type { PageParam } from './common'\nimport type { PmsProductAttributeValue } from './productAttr'\nimport type { Pm"
  },
  {
    "path": "src/types/productAttr.d.ts",
    "chars": 1822,
    "preview": "/** 商品分类对应属性信息 */\nexport type ProductAttrInfo = {\n  /** 商品属性ID */\n  attributeId: number\n  /** 商品属性分类ID */\n  attributeCat"
  },
  {
    "path": "src/types/productCate.d.ts",
    "chars": 677,
    "preview": "/** 商品分类信息 */\nexport type PmsProductCategory = {\n  /** ID */\n  id?: number\n  /** 上级分类的编号:0表示一级分类 */\n  parentId: number\n "
  },
  {
    "path": "src/types/recommendProduct.d.ts",
    "chars": 232,
    "preview": "import type { NewProductQueryParam, SmsHomeNewProduct } from './newProduct'\n\n/** 首页新品推荐实体 */\nexport type SmsHomeRecommen"
  },
  {
    "path": "src/types/resource.d.ts",
    "chars": 711,
    "preview": "import type { PageParam } from './common'\n\n/** 资源信息 */\nexport type UmsResource = {\n  /** ID */\n  id?: number\n  /** 创建时间 "
  },
  {
    "path": "src/types/returnApply.d.ts",
    "chars": 1964,
    "preview": "import type { PageParam } from './common'\nimport type { OmsCompanyAddress } from './companyAddress'\n\n/** 订单退货申请 */\nexpor"
  },
  {
    "path": "src/types/returnReason.d.ts",
    "chars": 211,
    "preview": "/** 退货原因 */\nexport type OmsOrderReturnReason = {\n  /** ID */\n  id?: number\n  /** 退货类型 */\n  name: string\n  /** 排序 */\n  so"
  },
  {
    "path": "src/types/role.d.ts",
    "chars": 271,
    "preview": "/** 角色信息 */\nexport type UmsRole = {\n  /** ID */\n  id?: number\n  /** 名称 */\n  name: string\n  /** 描述 */\n  description?: str"
  },
  {
    "path": "src/types/router.d.ts",
    "chars": 269,
    "preview": "import type { RouteRecordRaw } from 'vue-router'\n\n/** vue-router路由扩展 */\nexport type RouteRecordExt = RouteRecordRaw & {\n"
  },
  {
    "path": "src/types/skuStock.d.ts",
    "chars": 407,
    "preview": "/** SKU库存信息 */\nexport type PmsSkuStock = {\n  /** ID */\n  id?: number\n  /** 产品ID */\n  productId?: number\n  /** sku编码 */\n "
  },
  {
    "path": "src/types/subject.d.ts",
    "chars": 618,
    "preview": "/** 专题实体 */\nexport type CmsSubject = {\n  /** ID */\n  id?: number\n  /** 分类ID */\n  categoryId?: number\n  /** 标题 */\n  title"
  },
  {
    "path": "src/utils/constant.ts",
    "chars": 390,
    "preview": "/** 优惠券类型数组 */\nexport const couponTypes = [\n  {\n    label: '全场赠券',\n    value: 0,\n  },\n  {\n    label: '会员赠券',\n    value: "
  },
  {
    "path": "src/utils/cookie.ts",
    "chars": 257,
    "preview": "import Cookies from 'js-cookie'\n\n// 设置cookie\nexport function setCookie(key: string, value: string, expires: number) {\n  "
  },
  {
    "path": "src/utils/datetime.ts",
    "chars": 1002,
    "preview": "import { dayjs } from 'element-plus'\n\n// 日期时间格式化函数\nexport const formatDateTime = (time: string) => {\n  if (!time) {\n    "
  },
  {
    "path": "src/utils/http.ts",
    "chars": 1601,
    "preview": "import { useUserStore } from '@/stores/user'\nimport type { CommonResult } from '@/types/common'\nimport axios from 'axios"
  },
  {
    "path": "src/utils/validate.ts",
    "chars": 847,
    "preview": "export function isvalidUsername(str: string) {\n  return str.trim().length >= 3\n}\n\n/* 合法uri*/\nexport function validateURL"
  },
  {
    "path": "src/views/home/index.vue",
    "chars": 15611,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted, computed } from 'vue'\nimport { str2Date } from '@/utils/datetime'\nimpo"
  },
  {
    "path": "src/views/layout/Layout.vue",
    "chars": 1087,
    "preview": "<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useAppStore } from '@/stores/app'\nimport Navbar from '."
  },
  {
    "path": "src/views/layout/components/AppMain.vue",
    "chars": 311,
    "preview": "<script lang=\"ts\" setup>\n// 定义组件名称\ndefineOptions({\n  name: 'AppMain'\n})\n</script>\n\n<template>\n  <section class=\"app-main"
  },
  {
    "path": "src/views/layout/components/Navbar.vue",
    "chars": 2435,
    "preview": "<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport Breadcrumb from '@/components/Breadcrumb/index.vue'\nimpor"
  },
  {
    "path": "src/views/layout/components/Sidebar/SidebarItem.vue",
    "chars": 3446,
    "preview": "<script lang=\"ts\" setup>\nimport type { RouteRecordExt } from '@/types/router'\nimport { computed, type PropType } from 'v"
  },
  {
    "path": "src/views/layout/components/Sidebar/index.vue",
    "chars": 912,
    "preview": "<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { useRoute } from 'vue-router'\nimport SidebarItem from '."
  },
  {
    "path": "src/views/layout/composables/useResizeHandler.ts",
    "chars": 1274,
    "preview": "import { onMounted, onBeforeMount, onBeforeUnmount, watch } from 'vue'\nimport { useRoute } from 'vue-router'\nimport { us"
  },
  {
    "path": "src/views/normal/404/index.vue",
    "chars": 1107,
    "preview": "<script lang=\"ts\" setup>\nimport { useRouter } from 'vue-router'\nimport img_404 from '@/assets/images/gif_404.gif'\n\n// 定义"
  },
  {
    "path": "src/views/normal/link/index.vue",
    "chars": 119,
    "preview": "<script setup lang=\"ts\">\n\n</script>\n\n<template>\n  <div>\n    仅作为外链菜单占位组件使用\n  </div>\n</template>\n\n<style scoped></style>\n"
  },
  {
    "path": "src/views/normal/login/index.vue",
    "chars": 4754,
    "preview": "<script lang=\"ts\" setup>\nimport { reactive, ref, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { "
  },
  {
    "path": "src/views/oms/apply/applyDetail.vue",
    "chars": 14021,
    "preview": "<script setup lang=\"ts\">\nimport { ref, computed, onMounted } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'"
  },
  {
    "path": "src/views/oms/apply/index.vue",
    "chars": 7339,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { ElMessage,"
  },
  {
    "path": "src/views/oms/apply/reason.vue",
    "chars": 7448,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimp"
  },
  {
    "path": "src/views/oms/order/components/logisticsDialog.vue",
    "chars": 1406,
    "preview": "<script setup lang=\"ts\">\nimport { ref, computed } from 'vue'\n\n// 定义组件的props\nconst props = defineProps({\n  modelValue: Bo"
  },
  {
    "path": "src/views/oms/order/deliverOrderList.vue",
    "chars": 3705,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { ElMessage,"
  },
  {
    "path": "src/views/oms/order/index.vue",
    "chars": 12347,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { ElMessage,"
  },
  {
    "path": "src/views/oms/order/orderDetail.vue",
    "chars": 25845,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { useRouter, useRoute } from 'vue-router'\nimport { "
  },
  {
    "path": "src/views/oms/order/setting.vue",
    "chars": 3824,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { ElMessage, ElMessageBox } from 'element-plus'\nimp"
  },
  {
    "path": "src/views/pms/brand/add.vue",
    "chars": 187,
    "preview": "<script setup lang=\"ts\">\nimport BrandDetail from './components/BrandDetail.vue'\n</script>\n\n<template>\n  <brand-detail :i"
  },
  {
    "path": "src/views/pms/brand/components/BrandDetail.vue",
    "chars": 4223,
    "preview": "<script lang=\"ts\" setup>\nimport { ref, reactive, onMounted, computed } from 'vue'\nimport { createBrandAPI, getBrandAPI, "
  },
  {
    "path": "src/views/pms/brand/index.vue",
    "chars": 8270,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { ElMessage,"
  },
  {
    "path": "src/views/pms/brand/update.vue",
    "chars": 186,
    "preview": "<script setup lang=\"ts\">\nimport BrandDetail from './components/BrandDetail.vue'\n</script>\n\n<template>\n  <brand-detail :i"
  },
  {
    "path": "src/views/pms/product/add.vue",
    "chars": 186,
    "preview": "<script lang=\"ts\" setup>\nimport ProductDetail from './components/ProductDetail.vue'\n</script>\n<template>\n  <product-deta"
  },
  {
    "path": "src/views/pms/product/components/ProductAttrDetail.vue",
    "chars": 20116,
    "preview": "<script setup lang=\"ts\">\nimport { ref, reactive, computed, onMounted, inject, type Ref, watch } from 'vue'\nimport { ElMe"
  },
  {
    "path": "src/views/pms/product/components/ProductDetail.vue",
    "chars": 4284,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted, provide, } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'"
  },
  {
    "path": "src/views/pms/product/components/ProductInfoDetail.vue",
    "chars": 5924,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted, watch, inject, type Ref } from 'vue'\nimport { ElMessage, type FormInst"
  },
  {
    "path": "src/views/pms/product/components/ProductRelationDetail.vue",
    "chars": 3324,
    "preview": "<script setup lang=\"ts\">\nimport { onMounted, inject, type Ref, computed, ref } from 'vue'\nimport { type TransferDataItem"
  },
  {
    "path": "src/views/pms/product/components/ProductSaleDetail.vue",
    "chars": 9483,
    "preview": "<script setup lang=\"ts\">\nimport { ref, computed, onMounted, inject, type Ref } from 'vue'\nimport { ElButton, ElSwitch, E"
  },
  {
    "path": "src/views/pms/product/index.vue",
    "chars": 18087,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted, reactive, watch } from 'vue'\nimport { useRouter } from 'vue-router'\nim"
  },
  {
    "path": "src/views/pms/product/update.vue",
    "chars": 185,
    "preview": "<script lang=\"ts\" setup>\nimport ProductDetail from './components/ProductDetail.vue'\n</script>\n<template>\n  <product-deta"
  },
  {
    "path": "src/views/pms/productAttr/addProductAttr.vue",
    "chars": 213,
    "preview": "<script lang=\"ts\" setup>\nimport ProductAttrDetail from './components/ProductAttrDetail.vue'\n</script>\n\n<template>\n  <pro"
  },
  {
    "path": "src/views/pms/productAttr/components/ProductAttrDetail.vue",
    "chars": 5692,
    "preview": "<script setup lang=\"ts\">\nimport { ref, reactive, onMounted, computed } from 'vue'\nimport { useRoute, useRouter } from 'v"
  },
  {
    "path": "src/views/pms/productAttr/index.vue",
    "chars": 6513,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { ElMessage,"
  },
  {
    "path": "src/views/pms/productAttr/productAttrList.vue",
    "chars": 6139,
    "preview": "<script setup lang=\"ts\">\nimport { ref, onMounted } from 'vue'\nimport { useRouter } from 'vue-router'\nimport { ElMessage,"
  }
]

// ... and 46 more files (download for full content)

About this extraction

This page contains the full source code of the macrozheng/mall-admin-web GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 246 files (1.8 MB), approximately 617.1k tokens, and a symbol index with 863 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!