diff --git a/.example.env b/.example.env index c27f74caea59e0bc78bae1941793a6ac34c85a9c..f8aa1b52a06740844cae0c4a6cb4986b2dd311d5 100644 --- a/.example.env +++ b/.example.env @@ -1 +1,17 @@ -APP_DEBUG = true [APP] DEFAULT_TIMEZONE = Asia/Shanghai [DATABASE] TYPE = mysql HOSTNAME = 127.0.0.1 DATABASE = test USERNAME = username PASSWORD = password HOSTPORT = 3306 CHARSET = utf8 DEBUG = true [LANG] default_lang = zh-cn \ No newline at end of file +APP_DEBUG = true + +[APP] +DEFAULT_TIMEZONE = Asia/Shanghai + +[DATABASE] +TYPE = mysql +HOSTNAME = 127.0.0.1 +DATABASE = test +USERNAME = username +PASSWORD = password +HOSTPORT = 3306 +CHARSET = utf8mb4 +DEBUG = true + +[LANG] +default_lang = zh-cn \ No newline at end of file diff --git a/.gitignore b/.gitignore index 78d01d79406a03c2637ac80a842ae84c5b138a62..6d97a6447b698667d6606d6fb2d8fae8b8191567 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ /vendor *.log .env -composer.lock \ No newline at end of file +composer.lock +install.key \ No newline at end of file diff --git a/app/common.php b/app/common.php new file mode 100644 index 0000000000000000000000000000000000000000..ab213f5481a13fefc9a633232537688b90931290 --- /dev/null +++ b/app/common.php @@ -0,0 +1,68 @@ + $replace) { + $string = str_replace($pattern, $replace, $string); + } + } +} + +if (!function_exists('del_dir')) { + function del_dir(string $dir) + { + if (file_exists($dir)) { + $dh = opendir($dir); + while ($file = readdir($dh)) { + if ($file != "." && $file != "..") { + $fullpath = $dir . "/" . $file; + if (!is_dir($fullpath)) { + unlink($fullpath); + } else { + del_dir($fullpath); + } + } + } + closedir($dh); + rmdir($dir); + } + } +} \ No newline at end of file diff --git a/app/controller/Index.php b/app/controller/Index.php index 51da1263c32ab10d81b8314fb223386894cc6222..524202530b1b6e78e2722a05b17230e2ca484e88 100644 --- a/app/controller/Index.php +++ b/app/controller/Index.php @@ -1,4 +1,5 @@ 'DESC','id'=>'ASC']; + public $hasSoftDel = 1;//是否拥有软删除功能 + public $orderRule = ['sort' => 'DESC', 'id' => 'ASC']; public function _initialize() { $this->model = new \app\model\Area(); } - //查看 - public function index(){ - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $sourceData = $this->model->where($where)->order($order)->with(['parent'])->select()->toArray(); - $isTree = $this->request->param('is_tree'); - if($isTree){ + public function index() + { + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $sourceData = $this->model->where($where)->order($order)->with(['parent']); + $isTree = $this->request->param('is_tree'); + if ($isTree) { $menuTreeObj = Tree::instance(); - $menuTreeObj->init($sourceData); + $menuTreeObj->init($sourceData->select()->toArray()); $data = $menuTreeObj->getRootTrees(); - }else{ - $data = $sourceData; + } else { + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $sourceData->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); + } else { + $data = $sourceData->select()->toArray(); + } } return $this->success('数据获取成功', $data); } - - - - //删除 public function del() { @@ -55,7 +59,7 @@ class Area extends Backend } $sourceData = $this->model->select()->toArray(); - $treeLib = Tree::instance(); + $treeLib = Tree::instance(); $treeLib->init($sourceData); $childIds = $treeLib->getChildIds($ids); @@ -66,28 +70,27 @@ class Area extends Backend } } - //回收站 - public function recycle(){ + public function recycle() + { $where = $this->buildSearchParams(); $order = $this->buildOrder(); - $limit = $this->request->param('limit', 10); + $limit = $this->request->param('limit', Config::get('paginate.limit')); $data = $this->model->onlyTrashed() - ->with(['parent']) - ->order($order)->where($where)->paginate($limit)->toArray(); + ->with(['parent']) + ->order($order)->where($where)->paginate($limit)->toArray(); return $this->success('回收站数据获取成功', $data); } - //设置排序 public function setSort() { - $id = $this->request->post('id'); - $fieldVal = $this->request->post('field_val'); - $isRecycle = $this->request->post('is_recycle'); + $id = $this->request->post('id'); + $fieldVal = $this->request->post('field_val'); + $isRecycle = $this->request->post('is_recycle'); $update['sort'] = $fieldVal; try { - if($isRecycle) { + if ($isRecycle) { $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); } else { $updateRes = $this->model->where('id', '=', $id)->update($update); diff --git a/app/controller/admin/Common.php b/app/controller/admin/Common.php index 3d32b627896c17f41b8595815326c0166b555842..0623a54b3e13a0b005b074c63cab4250b7d1da58 100644 --- a/app/controller/admin/Common.php +++ b/app/controller/admin/Common.php @@ -14,7 +14,7 @@ use think\File; class Common extends Backend { - protected $noNeedAuth = ['*']; + protected $noNeedAuth = ['*']; protected $noNeedLogin = ['getLoginNeedCaptchaConf']; /** @@ -30,7 +30,9 @@ class Common extends Backend public function upload() { try { - $uploadType = $this->request->param('upload_type', 'local'); + $defaultType = ConfServiceFacade::get('system.upload.defaultType', 'local'); + $uploadType = $this->request->param('upload_type', 'default'); + if ($uploadType == 'default') $uploadType = $defaultType; if (!in_array($uploadType, ['local', 'ali-oss', 'qiniu-kodo'])) { return $this->error($uploadType . '上传方式未定义'); } @@ -38,7 +40,7 @@ class Common extends Backend if (!$file) { return $this->error('上传失败,请选择需要上传的文件'); } - $fileExt = strtolower($file->getOriginalExtension()); + $fileExt = strtolower($file->getOriginalExtension()); $uploadDomain = new UploadDomain(); if (!$uploadDomain->check($file->getOriginalName(), $file->getSize(), $fileExt, $file->getMime())) { return $this->error($uploadDomain->getError()); @@ -49,13 +51,13 @@ class Common extends Backend * - 因为OSS存储时,不允许以/开头 */ $uploadDir = $this->request->param('dir'); - $object = $uploadDir ? $uploadDir . '/' . $saveName : $saveName;//设置了上传目录的上传文件名 - $filePath = $object; //保存到lt_files中的path + $object = $uploadDir ? $uploadDir . '/' . $saveName : $saveName;//设置了上传目录的上传文件名 + $filePath = $object; //保存到lt_files中的path //如果上传的是图片,验证图片的宽和高 $accept = $this->request->param('accept'); if ($accept == "image") { - $width = $this->request->param('width'); + $width = $this->request->param('width'); $height = $this->request->param('height'); if ($width || $height) { $imageInfo = getimagesize($file->getFileInfo()); @@ -68,17 +70,17 @@ class Common extends Backend $inputValue = ""; //上传至七牛云 if ($uploadType == 'qiniu-kodo') { - if(ConfServiceFacade::get('qiniuKodo.conf.switch') != 1){ - return $this->error('未开启七牛云KODO存储,请到七牛云KODO配置中开启'); + if (ConfServiceFacade::get('plugin.qiniu_kodo.switch') != 1) { + return $this->error('未开启七牛云KODO存储,请到七牛云KODO配置中开启,如果未安装七牛云KODO存储插件,请先到插件市场进行安装'); } $kodoConf = [ - 'accessKey' => ConfServiceFacade::get('qiniuKodo.conf.accessKey'), - 'secretKey' => ConfServiceFacade::get('qiniuKodo.conf.secretKey'), - 'bucket' => ConfServiceFacade::get('qiniuKodo.conf.bucket'), - 'domain' => ConfServiceFacade::get('qiniuKodo.conf.domain'), + 'accessKey' => ConfServiceFacade::get('plugin.qiniu_kodo.accessKey'), + 'secretKey' => ConfServiceFacade::get('plugin.qiniu_kodo.secretKey'), + 'bucket' => ConfServiceFacade::get('plugin.qiniu_kodo.bucket'), + 'domain' => ConfServiceFacade::get('plugin.qiniu_kodo.domain'), ]; - $kodo = Kodo::instance(); - $kodoRes = $kodo->upload($file->getPathname(), $object, $kodoConf); + $kodo = Kodo::instance(); + $kodoRes = $kodo->upload($file->getPathname(), $object, $kodoConf); if ($kodoRes) { $inputValue = $kodoRes; } else { @@ -88,17 +90,17 @@ class Common extends Backend //上传至阿里云 if ($uploadType == 'ali-oss') { - if(ConfServiceFacade::get('system.aliOss.switch') != 1){ + if (ConfServiceFacade::get('plugin.ali_oss.switch') != 1) { return $this->error('未开启阿里云OSS存储,请到阿里云OSS配置中开启'); } - $ossConf = [ - 'accessKeyID' => ConfServiceFacade::get('aliOss.conf.accessKeyID'), - 'accessKeySecret' => ConfServiceFacade::get('aliOss.conf.accessKeySecret'), - 'bucket' => ConfServiceFacade::get('aliOss.conf.bucket'), - 'endpoint' => ConfServiceFacade::get('aliOss.conf.endpoint'), - 'domain' => ConfServiceFacade::get('aliOss.conf.domain'), + $ossConf = [ + 'accessKeyID' => ConfServiceFacade::get('plugin.ali_oss.accessKeyID'), + 'accessKeySecret' => ConfServiceFacade::get('plugin.ali_oss.accessKeySecret'), + 'bucket' => ConfServiceFacade::get('plugin.ali_oss.bucket'), + 'endpoint' => ConfServiceFacade::get('plugin.ali_oss.endpoint'), + 'domain' => ConfServiceFacade::get('plugin.ali_oss.domain'), ]; - $oss = Oss::instance(); + $oss = Oss::instance(); $ossUploadRes = $oss->upload($file->getPathname(), $object, $ossConf); if ($ossUploadRes) { $inputValue = $ossUploadRes; @@ -109,9 +111,9 @@ class Common extends Backend //本地上传 if ($uploadType == 'local') { - $uploadDir = ltrim('/', $uploadDir); - $saveName = Filesystem::putFileAs('/' . $uploadDir, $file, '/' . $object); - $filePath = $saveName; + $uploadDir = ltrim('/', $uploadDir); + $saveName = Filesystem::putFileAs('/' . $uploadDir, $file, '/' . $object); + $filePath = $saveName; $staticDomain = Env::get('domain.static'); if ($staticDomain) { $inputValue = $staticDomain . '/storage/' . $saveName; @@ -122,22 +124,22 @@ class Common extends Backend //将inputValue存入lt_files表中 $filesModel = new \app\model\Files(); - $fileId = $filesModel->insertGetId([ - 'category_id' => 0, - 'name' => $file->getOriginalName(), - 'file_type' => $this->request->param('accept'), - 'path' => $filePath, - 'upload_type' => $uploadType, - 'size' => $file->getSize(), - 'ext' => $file->getExtension(), + $fileId = $filesModel->insertGetId([ + 'category_id' => 0, + 'name' => $file->getOriginalName(), + 'file_type' => $this->request->param('accept'), + 'path' => $filePath, + 'upload_type' => $uploadType, + 'size' => $file->getSize(), + 'ext' => $file->getExtension(), 'create_admin_user_id' => UserServiceFacade::getUser()->id, 'update_admin_user_id' => UserServiceFacade::getUser()->id, - 'create_time' => date('Y-m-d H:i:s'), - 'update_time' => date('Y-m-d H:i:s'), + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), ]); return $this->success('上传成功', [ - 'id' => $fileId, + 'id' => $fileId, 'path' => $inputValue, 'name' => $file->getOriginalName(), ]); @@ -149,32 +151,32 @@ class Common extends Backend // 获取阿里云sts的临时凭证,目前仅用于客户端直接上传到oss前获取到临时凭证进行上传 public function aliSts() { - if(ConfServiceFacade::get('aliOss.sts.switch') != 1){ + if (ConfServiceFacade::get('plugin.ali_oss_sts.switch') != 1) { return $this->error('阿里云OSS存储的STS方式,请到阿里云STS配置中开启'); } $uploadDomain = new UploadDomain(); - $fileName = $this->request->param('name'); - $fileSize = $this->request->param('size'); - $fileExt = $this->request->param('ext'); + $fileName = $this->request->param('name'); + $fileSize = $this->request->param('size'); + $fileExt = $this->request->param('ext'); if (!$uploadDomain->check($fileName, $fileSize, $fileExt, '')) { return $this->error($uploadDomain->getError()); } $stsConf = [ - 'accessKeyID' => ConfServiceFacade::get('aliOss.sts.accessKeyID'), - 'accessKeySecret' => ConfServiceFacade::get('aliOss.sts.accessKeySecret'), - 'ARN' => ConfServiceFacade::get('aliOss.sts.ARN'), - 'endpoint' => ConfServiceFacade::get('aliOss.sts.endpoint'), - 'domain' => ConfServiceFacade::get('aliOss.sts.domain'), - 'bucket' => ConfServiceFacade::get('aliOss.sts.bucket'), + 'accessKeyID' => ConfServiceFacade::get('plugin.ali_oss_sts.accessKeyID'), + 'accessKeySecret' => ConfServiceFacade::get('plugin.ali_oss_sts.accessKeySecret'), + 'ARN' => ConfServiceFacade::get('plugin.ali_oss_sts.ARN'), + 'endpoint' => ConfServiceFacade::get('plugin.ali_oss_sts.endpoint'), + 'domain' => ConfServiceFacade::get('plugin.ali_oss_sts.domain'), + 'bucket' => ConfServiceFacade::get('plugin.ali_oss_sts.bucket'), ]; - $oss = Oss::instance(); - $sts = $oss->sts($stsConf); - $file = new File('', false); + $oss = Oss::instance(); + $sts = $oss->sts($stsConf); + $file = new File('', false); if ($sts) { return $this->success('sts获取成功', [ - 'sts' => $sts, - 'path' => str_replace('\\', '/', $file->hashName()) . $fileExt, + 'sts' => $sts, + 'path' => str_replace('\\', '/', $file->hashName()) . $fileExt, 'index' => $this->request->param('index'), ]); } else { @@ -185,33 +187,33 @@ class Common extends Backend // 获取kodo上传凭证token public function kodoToken() { - if(ConfServiceFacade::get('qiniuKodo.conf.switch') != 1){ + if (ConfServiceFacade::get('plugin.qiniu_kodo.switch') != 1) { return $this->error('未开启七牛云KODO存储,请到七牛云KODO配置中开启'); } $uploadDomain = new UploadDomain(); - $fileName = $this->request->param('name'); - $fileSize = $this->request->param('size'); - $fileExt = $this->request->param('ext'); + $fileName = $this->request->param('name'); + $fileSize = $this->request->param('size'); + $fileExt = $this->request->param('ext'); if (!$uploadDomain->check($fileName, $fileSize, $fileExt, '')) { return $this->error($uploadDomain->getError()); } $kodoConf = [ - 'accessKey' => ConfServiceFacade::get('qiniuKodo.conf.accessKey'), - 'secretKey' => ConfServiceFacade::get('qiniuKodo.conf.secretKey'), - 'domain' => ConfServiceFacade::get('qiniuKodo.conf.domain'), - 'bucket' => ConfServiceFacade::get('qiniuKodo.conf.bucket'), + 'accessKey' => ConfServiceFacade::get('plugin.qiniu_kodo.accessKey'), + 'secretKey' => ConfServiceFacade::get('plugin.qiniu_kodo.secretKey'), + 'domain' => ConfServiceFacade::get('plugin.qiniu_kodo.domain'), + 'bucket' => ConfServiceFacade::get('plugin.qiniu_kodo.bucket'), ]; - $kodo = Kodo::instance(); - $token = $kodo->token($kodoConf); - $file = new File('', false); + $kodo = Kodo::instance(); + $token = $kodo->token($kodoConf); + $file = new File('', false); if ($token) { return $this->success('KodoToken获取成功', [ - 'token' => $token, - 'domain' => ConfServiceFacade::get('qiniuKodo.conf.domain'), - 'bucket' => ConfServiceFacade::get('qiniuKodo.conf.bucket'), - 'path' => str_replace('\\', '/', $file->hashName()) . $fileExt, - 'index' => $this->request->param('index'), + 'token' => $token, + 'domain' => ConfServiceFacade::get('plugin.qiniu_kodo.domain'), + 'bucket' => ConfServiceFacade::get('plugin.qiniu_kodo.bucket'), + 'path' => str_replace('\\', '/', $file->hashName()) . $fileExt, + 'index' => $this->request->param('index'), ]); } else { return $this->error('KodoToken获取失败,' . $kodo->getError()); @@ -221,8 +223,8 @@ class Common extends Backend //解锁屏幕 function unLockScreen() { - $password = $this->request->post('password'); - $userId = UserServiceFacade::getUser()->id; + $password = $this->request->post('password'); + $userId = UserServiceFacade::getUser()->id; $passwordHash = User::where('id', '=', $userId)->value('password'); if (!password_verify(md5($password), $passwordHash)) { return $this->error('解锁失败,密码错误'); diff --git a/app/controller/admin/Conf.php b/app/controller/admin/Conf.php index c31990f9e42d48331eec8802c7c3e87eb7fae394..6d418a290709704e506a3086246e795bcccc3023 100644 --- a/app/controller/admin/Conf.php +++ b/app/controller/admin/Conf.php @@ -38,8 +38,8 @@ class Conf extends Backend */ public function saveGroupConf() { - $post = $this->request->post(); - if(isset($post['laytpUploadFile'])){ + $post = $this->request->post(); + if (isset($post['laytpUploadFile'])) { unset($post['laytpUploadFile']); } $group = $post['group']; @@ -51,7 +51,7 @@ class Conf extends Backend if (is_array($value)) { $temp = []; foreach ($value['key'] as $arrK => $arrV) { - if($arrV){ + if ($arrV) { $temp[$arrV] = $value['value'][$arrK]; } } @@ -61,7 +61,7 @@ class Conf extends Backend $conf['key'] = $key; $conf['value'] = $value; $conf['form_type'] = $formType[$key]; - $allConf[] = $conf; + $allConf[] = $conf; } ConfServiceFacade::groupSet($allConf); return $this->success('保存成功', $allConf); @@ -74,7 +74,7 @@ class Conf extends Backend public function del() { $group = $this->request->param('group'); - $key = $this->request->param('key'); + $key = $this->request->param('key'); ConfServiceFacade::del($group, $key); return $this->success('删除成功'); } diff --git a/app/controller/admin/Files.php b/app/controller/admin/Files.php index 69fd209dc16c290ae9a65aa4fba21c5e5517c58e..d9cbe5d7d841caf817ee88c5d901b7b0afe39267 100644 --- a/app/controller/admin/Files.php +++ b/app/controller/admin/Files.php @@ -6,6 +6,7 @@ use laytp\controller\Backend; use app\service\admin\UserServiceFacade; use laytp\library\CommonFun; use laytp\library\UploadDomain; +use think\facade\Config; /** * 附件管理 @@ -17,37 +18,42 @@ class Files extends Backend * @var \app\model\Files */ protected $model; - public $hasSoftDel=1;//是否拥有软删除功能 + public $hasSoftDel = 1;//是否拥有软删除功能 public function initialize() { parent::initialize(); $this->model = new \app\model\Files(); } - - //查看 - public function index(){ - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $allData = $this->request->param('all_data'); - $data = $this->model->where($where)->order($order)->with(['category','createAdminUser','updateAdminUser']); - if($allData){ + + /** + * 查看 + * @throws \think\db\exception\DbException + */ + public function index() + { + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $data = $this->model->where($where)->order($order)->with(['category', 'createAdminUser', 'updateAdminUser']); + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $data->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); + } else { $data = $data->select()->toArray(); - }else{ - $limit = $this->request->param('limit', 10); - $data = $data->paginate($limit)->toArray(); } return $this->success('数据获取成功', $data); } - + //添加 public function add() { return $this->error('当前版本暂时不支持在附件管理中添加附件'); - $post = CommonFun::filterPostData($this->request->post()); + $post = CommonFun::filterPostData($this->request->post()); $post['create_admin_user_id'] = UserServiceFacade::getUser()->id; $post['update_admin_user_id'] = UserServiceFacade::getUser()->id; - $post['path'] = UploadDomain::singleDelUploadDomain($post['path']); + $post['path'] = UploadDomain::singleDelUploadDomain($post['path']); if ($this->model->create($post)) { return $this->success('添加成功', $post); } else { @@ -56,28 +62,30 @@ class Files extends Backend } //不经过服务器方式上传成功后,回调的ajax请求地址,将上传成功的文件信息存入表中 - public function unViaSave(){ - $post = $this->request->post(); + public function unViaSave() + { + $post = $this->request->post(); $post['create_admin_user_id'] = UserServiceFacade::getUser()->id; $post['update_admin_user_id'] = UserServiceFacade::getUser()->id; - $post['create_time'] = date('Y-m-d H:i:s'); - $post['update_time'] = date('Y-m-d H:i:s'); - $post['id'] = $this->model->insertGetId($post); + $post['create_time'] = date('Y-m-d H:i:s'); + $post['update_time'] = date('Y-m-d H:i:s'); + $post['id'] = $this->model->insertGetId($post); if ($post['id']) { return $this->success('添加成功', $post); } else { return $this->error('操作失败'); } } - + //编辑 - public function edit(){ + public function edit() + { return $this->error('当前版本暂时不支持在附件管理中编辑附件'); - $id = $this->request->param('id'); - $info = $this->model->find($id); - $post = CommonFun::filterPostData($this->request->post()); + $id = $this->request->param('id'); + $info = $this->model->find($id); + $post = CommonFun::filterPostData($this->request->post()); $post['update_admin_user_id'] = UserServiceFacade::getUser()->id; - $post['path'] = UploadDomain::singleDelUploadDomain($post['path']); + $post['path'] = UploadDomain::singleDelUploadDomain($post['path']); foreach ($post as $k => $v) { $info->$k = $v; } @@ -96,35 +104,37 @@ class Files extends Backend } //删除 - public function del(){ - $id = $this->request->param('id'); - $info = $this->model->find($id); - $post = CommonFun::filterPostData($this->request->post()); + public function del() + { + $id = $this->request->param('id'); + $info = $this->model->find($id); + $post = CommonFun::filterPostData($this->request->post()); $post['update_admin_user_id'] = UserServiceFacade::getUser()->id; - $post['path'] = UploadDomain::singleDelUploadDomain($post['path']); + $post['path'] = UploadDomain::singleDelUploadDomain($post['path']); foreach ($post as $k => $v) { $info->$k = $v; } try { $updateRes = $info->save(); - if(!$updateRes){ + if (!$updateRes) { return $this->error('操作失败'); - }else{ + } else { return $this->success('编辑成功'); } } catch (\Exception $e) { return $this->exceptionError($e); } } - + //回收站 - public function recycle(){ + public function recycle() + { $where = $this->buildSearchParams(); $order = $this->buildOrder(); - $limit = $this->request->param('limit', 10); + $limit = $this->request->param('limit', Config::get('paginate.limit')); $data = $this->model->onlyTrashed() - ->with(['category','createAdminUser','updateAdminUser']) - ->order($order)->where($where)->paginate($limit)->toArray(); + ->with(['category', 'createAdminUser', 'updateAdminUser']) + ->order($order)->where($where)->paginate($limit)->toArray(); return $this->success('回收站数据获取成功', $data); } } diff --git a/app/controller/admin/Member.php b/app/controller/admin/Member.php new file mode 100644 index 0000000000000000000000000000000000000000..74e9de642d6ad08be862430d6b00ba21a93e94ff --- /dev/null +++ b/app/controller/admin/Member.php @@ -0,0 +1,138 @@ +model = new \app\model\Member(); + } + + + //查看和搜索列表 + public function index(){ + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $data = $this->model->where($where)->order($order)->with(['avatar_pic_file']); + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $data->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); + } else { + $data = $data->select()->toArray(); + } + return $this->success('数据获取成功', $data); + } + + + //添加 + public function add() + { + $post = CommonFun::filterPostData($this->request->post()); + $validate = new Add(); + if(!$validate->check($post)){ + return $this->error($validate->getError()); + } + if(isset($post['password']) && $post['password']) $post['password'] = Str::createPassword($post['password']); + try { + if ($this->model->create($post)) { + return $this->success('添加成功', $post); + } else { + return $this->error('操作失败'); + } + } catch (\Exception $e) { + return $this->exceptionError($e); + } + } + + + //查看详情 + public function info() + { + $id = $this->request->param('id'); + $info = $this->model->with(['avatar_pic_file'])->find($id); + return $this->success('获取成功', $info); + } + + + //编辑 + public function edit(){ + $id = $this->request->param('id'); + $info = $this->model->find($id); + $post = CommonFun::filterPostData($this->request->post()); + $validate = new Edit(); + if(!$validate->check($post)){ + return $this->error($validate->getError()); + } + if(!$post['password']){ + unset($post['password']); + }else{ + $post['password'] = Str::createPassword($post['password']); + } + foreach ($post as $k => $v) { + $info->$k = $v; + } + try { + $updateRes = $info->save(); + if ($updateRes) { + return $this->success('编辑成功'); + } else { + return $this->error('操作失败'); + } + } catch (\Exception $e) { + return $this->exceptionError($e); + } + } + + + + + //设置账号状态 + public function setStatus() + { + $id = $this->request->post('id'); + $fieldVal = $this->request->post('field_val'); + $isRecycle = $this->request->post('is_recycle'); + $update['status'] = $fieldVal; + try { + if($isRecycle) { + $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); + } else { + $updateRes = $this->model->where('id', '=', $id)->update($update); + } + if ($updateRes) { + return $this->success('操作成功'); + } else if ($updateRes === 0) { + return $this->success('未作修改'); + } else { + return $this->error('操作失败'); + } + } catch (\Exception $e) { + return $this->error('数据库异常,操作失败'); + } + } +} diff --git a/app/controller/admin/Menu.php b/app/controller/admin/Menu.php index 39eed6e99f39abad8ff532750fdf41e1c802c6ee..d7b2b6b3a32fa0b06da175c7a4c4d1e867cd00b0 100644 --- a/app/controller/admin/Menu.php +++ b/app/controller/admin/Menu.php @@ -6,16 +6,16 @@ use app\service\admin\UserServiceFacade; use laytp\controller\Backend; use laytp\library\CommonFun; use laytp\library\Tree; +use think\facade\Config; /** * 菜单控制器 */ class Menu extends Backend { - public $noNeedAuth = ['getMenuTree','getTree']; - public $menuList; + public $noNeedAuth = ['getMenuTree', 'getTree']; public $model; - public $orderRule = ['sort' => 'desc', 'id' => 'asc']; + public $orderRule = ['sort' => 'desc', 'id' => 'asc']; public function _initialize() { @@ -24,32 +24,40 @@ class Menu extends Backend public function index() { - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $sourceData = $this->model->where($where)->order($order)->select()->toArray(); - $isTree = $this->request->param('is_tree'); - if($isTree){ + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $sourceData = $this->model->where($where)->order($order); + $isTree = $this->request->param('is_tree'); + if ($isTree) { $menuTreeObj = Tree::instance(); - $menuTreeObj->init($sourceData); + $menuTreeObj->init($sourceData->select()->toArray()); $data = $menuTreeObj->getRootTrees(); - }else{ - $data = $sourceData; + } else { + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $sourceData->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); + } else { + $data = $sourceData->select()->toArray(); + } } return $this->success('数据获取成功', $data); } //获取当前登录者的权限列表,返回树形数据,角色管理赋予权限时用到 - public function getTree(){ + public function getTree() + { $user = UserServiceFacade::getUser(); - if($user->is_super_manager === 1){ - $sourceData = $this->model->order($this->orderRule)->select()->toArray(); - }else{ - $roleIds = \app\model\admin\role\User::where('admin_user_id','=', $user->id) + if ($user->is_super_manager === 1) { + $sourceData = $this->model->order($this->orderRule)->select()->toArray(); + } else { + $roleIds = \app\model\admin\role\User::where('admin_user_id', '=', $user->id) ->column('admin_role_id'); - $menuIds = \app\model\admin\menu\Role::where('admin_role_id','in',$roleIds) + $menuIds = \app\model\admin\menu\Role::where('admin_role_id', 'in', $roleIds) ->column('admin_menu_id'); - $where[] = ['id', 'in', $menuIds]; - $sourceData = $this->model->order($this->orderRule)->where($where)->select()->toArray(); + $where[] = ['id', 'in', $menuIds]; + $sourceData = $this->model->order($this->orderRule)->where($where)->select()->toArray(); } $menuTreeObj = Tree::instance(); $menuTreeObj->init($sourceData); @@ -59,19 +67,20 @@ class Menu extends Backend } //获取当前登录者的菜单列表,返回树形数据,仅返回is_menu=1的列表,后台菜单列表展示使用 - public function getMenuTree(){ - $user = UserServiceFacade::getUser(); + public function getMenuTree() + { + $user = UserServiceFacade::getUser(); $where[] = ['is_show', '=', 1]; $where[] = ['is_menu', '=', 1]; - if($user->is_super_manager === 1){ - $sourceData = $this->model->order($this->orderRule)->where($where)->select()->toArray(); - }else{ - $roleIds = \app\model\admin\role\User::where('admin_user_id','=', $user->id) + if ($user->is_super_manager === 1) { + $sourceData = $this->model->order($this->orderRule)->where($where)->select()->toArray(); + } else { + $roleIds = \app\model\admin\role\User::where('admin_user_id', '=', $user->id) ->column('admin_role_id'); - $menuIds = \app\model\admin\menu\Role::where('admin_role_id','in',$roleIds) + $menuIds = \app\model\admin\menu\Role::where('admin_role_id', 'in', $roleIds) ->column('admin_menu_id'); - $where[] = ['id','in',$menuIds]; - $sourceData = $this->model->order($this->orderRule)->where($where)->select()->toArray(); + $where[] = ['id', 'in', $menuIds]; + $sourceData = $this->model->order($this->orderRule)->where($where)->select()->toArray(); } $menuTreeObj = Tree::instance(); $menuTreeObj->init($sourceData); @@ -128,7 +137,7 @@ class Menu extends Backend } $sourceData = $this->model->select()->toArray(); - $treeLib = Tree::instance(); + $treeLib = Tree::instance(); $treeLib->init($sourceData); $childIds = $treeLib->getChildIds($ids); @@ -142,12 +151,12 @@ class Menu extends Backend //设置排序 public function setSort() { - $id = $this->request->post('id'); - $fieldVal = $this->request->post('field_val'); - $isRecycle = $this->request->post('is_recycle'); + $id = $this->request->post('id'); + $fieldVal = $this->request->post('field_val'); + $isRecycle = $this->request->post('is_recycle'); $update['sort'] = $fieldVal; try { - if($isRecycle) { + if ($isRecycle) { $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); } else { $updateRes = $this->model->where('id', '=', $id)->update($update); @@ -167,12 +176,12 @@ class Menu extends Backend //设置是否为菜单 public function setIsMenu() { - $id = $this->request->post('id'); - $fieldVal = $this->request->post('field_val'); - $isRecycle = $this->request->post('is_recycle'); + $id = $this->request->post('id'); + $fieldVal = $this->request->post('field_val'); + $isRecycle = $this->request->post('is_recycle'); $update['is_menu'] = $fieldVal; try { - if($isRecycle) { + if ($isRecycle) { $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); } else { $updateRes = $this->model->where('id', '=', $id)->update($update); @@ -192,12 +201,12 @@ class Menu extends Backend //设置是否显示 public function setIsShow() { - $id = $this->request->post('id'); - $fieldVal = $this->request->post('field_val'); - $isRecycle = $this->request->post('is_recycle'); + $id = $this->request->post('id'); + $fieldVal = $this->request->post('field_val'); + $isRecycle = $this->request->post('is_recycle'); $update['is_show'] = $fieldVal; try { - if($isRecycle) { + if ($isRecycle) { $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); } else { $updateRes = $this->model->where('id', '=', $id)->update($update); @@ -223,21 +232,21 @@ class Menu extends Backend return $this->error('参数ids不能为空'); } - $data = \app\model\admin\Menu::where('id','in', $ids) + $data = \app\model\admin\Menu::where('id', 'in', $ids) ->withoutField('id')->select() - ->each(function($item) use ($pid){ + ->each(function ($item) use ($pid) { $item->pid = $pid; })->toArray(); $insert = $this->model->insertAll($data); - if($insert){ + if ($insert) { return $this->success('复制成功'); - }else{ + } else { return $this->error('复制失败'); } } - // 复制菜单 + // 移动菜单 public function move() { $pid = (int)$this->request->post('pid'); @@ -246,12 +255,12 @@ class Menu extends Backend return $this->error('参数ids不能为空'); } - $save = \app\model\admin\Menu::where('id','in', $ids) - ->save(['pid'=>$pid]); + $save = \app\model\admin\Menu::where('id', 'in', $ids) + ->save(['pid' => $pid]); - if($save){ + if ($save) { return $this->success('移动成功'); - }else{ + } else { return $this->error('移动失败'); } } diff --git a/app/controller/admin/Plugins.php b/app/controller/admin/Plugins.php index d65cb158ff1c620b92ef2468b32c08c449787574..fcd463a91dd702d479b3b452556f881cf35ff541 100644 --- a/app/controller/admin/Plugins.php +++ b/app/controller/admin/Plugins.php @@ -17,12 +17,12 @@ class Plugins extends Backend * @var \app\model\Files */ protected $model; - public $hasSoftDel=1;//是否拥有软删除功能 + public $hasSoftDel = 1;//是否拥有软删除功能 // 获取laytp官网定义的插件分类列表 public function category() { - $url = Config::get('plugin.apiUrl') . '/plugins/category'; + $url = Config::get('plugin.apiUrl') . '/plugins/category'; $data = json_decode(Http::get($url), true)['data']; return $this->success('获取成功', $data); } @@ -30,23 +30,23 @@ class Plugins extends Backend // 查看 public function index() { - $params['page'] = $this->request->param('page', 1); - $params['limit'] = $this->request->param('limit', 10); + $params['page'] = $this->request->param('page', 1); + $params['limit'] = $this->request->param('limit', 10); $params['category_id'] = $this->request->param('category_id', 0); - $url = Config::get('plugin.apiUrl') . '/plugins/index'; - $data = json_decode(Http::get($url, $params), true)['data']; - $installed = Config::get('plugin.installed'); - foreach($data['data'] as $k=>$datum){ - if($installed && in_array($datum['alias'], $installed)){ + $url = Config::get('plugin.apiUrl') . '/plugins/index'; + $data = json_decode(Http::get($url, $params), true)['data']; + $installed = Config::get('plugin.installed'); + foreach ($data['data'] as $k => $datum) { + if ($installed && in_array($datum['alias'], $installed)) { $data['data'][$k]['installed'] = 1; - $pluginInfo = PluginsServiceFacade::getPluginInfo($datum['alias']); - if(isset($pluginInfo['version'])){ + $pluginInfo = PluginsServiceFacade::getPluginInfo($datum['alias']); + if (isset($pluginInfo['version'])) { $version = $pluginInfo['version']; - }else{ + } else { $version = '1.0.0'; } $data['data'][$k]['version'] = $version; - }else{ + } else { $data['data'][$k]['installed'] = 2; } } @@ -56,9 +56,9 @@ class Plugins extends Backend // 离线安装 - 所有的离线安装都是覆盖安装 public function offLineInstall() { - if(PluginsServiceFacade::offLineInstall()){ + if (PluginsServiceFacade::offLineInstall()) { return $this->success('安装成功'); - }else{ + } else { return $this->error(PluginsServiceFacade::getError()); } } @@ -67,10 +67,35 @@ class Plugins extends Backend public function uninstall() { $plugin = $this->request->param('plugin'); + $info = PluginsServiceFacade::getPluginInfo($plugin); - if(PluginsServiceFacade::unInstall($plugin)){ - return $this->success('卸载成功'); - }else{ + if (PluginsServiceFacade::unInstall($plugin)) { + $pluginConf = Config::get('plugin'); + foreach($pluginConf['installed'] as $k=>$installed){ + if($installed === $plugin) unset($pluginConf['installed'][$k]); + } + $pluginConf['installed'] = array_unique($pluginConf['installed']); + sort($pluginConf['installed']); + + if(isset($info['is_editor']) && $info['is_editor']){ + foreach($pluginConf['installedEditor'] as $k=>$installedEditor){ + if($installedEditor === $plugin) unset($pluginConf['installedEditor'][$k]); + } + $pluginConf['installedEditor'] = array_unique($pluginConf['installedEditor']); + sort($pluginConf['installedEditor']); + // 如果根目录下有相应的html文件,将文件内容进行替换 + $htmlFile = root_path() . 'public/admin/' . $plugin . '.html'; + if(is_file($htmlFile)){ + file_put_contents($htmlFile, '

请先到插件市场安装' . $plugin . '编辑器。

+

注意:安装或卸载编辑器后,需要清空浏览器缓存才能生效

'); + } + } + + return $this->success($plugin . '插件卸载成功', [ + 'pluginConf' => $pluginConf, + 'info' => $info + ]); + } else { return $this->error(PluginsServiceFacade::getError()); } } @@ -78,21 +103,29 @@ class Plugins extends Backend // 安装 public function install() { - $plugin = $this->request->param('plugin'); + $plugin = $this->request->param('plugin'); $laytpGwToken = $this->request->param('laytpGwToken'); - if(PluginsServiceFacade::install($plugin, $laytpGwToken)){ - return $this->success('安装成功'); - }else{ - $code = PluginsServiceFacade::getError(); - $msg = '安装遇到错误'; - if($code === 1){ - $msg = '请先登录'; - } - if($code === 2){ - $msg = '请先购买插件'; + if (PluginsServiceFacade::install($plugin, $laytpGwToken)) { + // 如果是文件存储,插件安装信息,刚安装完成马上要取出来,取出来的不会是最新的文件内容 + $pluginConf = Config::get('plugin'); + $pluginConf['installed'][] = $plugin; + $pluginConf['installed'] = array_unique($pluginConf['installed']); + sort($pluginConf['installed']); + + $info = PluginsServiceFacade::getPluginInfo($plugin); + if(isset($info['is_editor']) && $info['is_editor']){ + $pluginConf['installedEditor'][] = $plugin; + $pluginConf['installedEditor'] = array_unique($pluginConf['installedEditor']); + sort($pluginConf['installedEditor']); } - return $this->error($msg, $code); + + return $this->success($plugin . '插件安装成功', [ + 'pluginConf' => $pluginConf + ]); + } else { + $error = PluginsServiceFacade::getError(); + return $this->error($error); } } } \ No newline at end of file diff --git a/app/controller/admin/Role.php b/app/controller/admin/Role.php index c33fd3b4eff25edc0dfa2a42b8673f9ecc8d46f4..a5b5538e46204cad8cbec6550623440f25660d31 100644 --- a/app/controller/admin/Role.php +++ b/app/controller/admin/Role.php @@ -4,6 +4,7 @@ namespace app\controller\admin; use laytp\controller\Backend; use laytp\library\CommonFun; +use think\facade\Config; use think\facade\Db; use think\facade\Request; @@ -21,6 +22,27 @@ class Role extends Backend $this->model = new \app\model\admin\Role(); } + /** + * 列表 + * all_data参数的值为true时,表示查询表中所有数据集,否则进行分页查询 + * @return mixed + */ + public function index() + { + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $data = $this->model->where($where)->order($order); + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $data->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); + } else { + $data = $data->select()->toArray(); + } + return $this->success('数据获取成功', $data); + } + /** * 添加,同时添加lt_plugin_core_role和lt_plugin_core_role_menu两个表的数据 * @return \think\response\Json @@ -35,7 +57,7 @@ class Role extends Backend $menuIds = explode(',', $post['menu_ids']); unset($post['menu_ids']); - $saveMenu = $this->model->save($post); + $saveMenu = $this->model->save($post); if (!$saveMenu) throw new \Exception('保存角色基本信息失败'); $saveAllData = []; @@ -45,7 +67,7 @@ class Role extends Backend 'admin_menu_id' => $menu_id, ]; } - $menu = new \app\model\admin\menu\Role(); + $menu = new \app\model\admin\menu\Role(); $saveAllMenu = $menu->saveAll($saveAllData); if (!$saveAllMenu) throw new \Exception('保存角色权限失败'); @@ -78,10 +100,10 @@ class Role extends Backend $menuIds = explode(',', $post['menu_ids']); unset($post['menu_ids']); $updateRes = $this->model->where('id', '=', $id)->update($post); - if(!is_numeric($updateRes)) throw new \Exception('保存角色基本信息失败'); + if (!is_numeric($updateRes)) throw new \Exception('保存角色基本信息失败'); - $delRes = \app\model\admin\menu\Role::where('admin_role_id', '=', $id)->delete(); - if(!is_numeric($delRes)) throw new \Exception('删除角色权限失败'); + $delRes = \app\model\admin\menu\Role::where('admin_role_id', '=', $id)->delete(); + if (!is_numeric($delRes)) throw new \Exception('删除角色权限失败'); $saveAllData = []; foreach ($menuIds as $menu_id) { @@ -90,8 +112,8 @@ class Role extends Backend 'admin_menu_id' => $menu_id, ]; } - $menu = new \app\model\admin\menu\Role(); - $result[] = $menu->saveAll($saveAllData); + $menu = new \app\model\admin\menu\Role(); + $menu->saveAll($saveAllData); Db::commit(); return $this->success('操作成功'); @@ -108,26 +130,25 @@ class Role extends Backend */ public function trueDel() { - $ids = (string)$this->request->param('ids'); + $ids = $this->request->param('ids'); Db::startTrans(); try { - $idsArr = explode(',', $ids); - $roles = $this->model->onlyTrashed()->where('id', 'in', $ids)->select(); + $roles = $this->model->onlyTrashed()->where('id', 'in', $ids)->select(); foreach ($roles as $key => $item) { $delRes = $item->force()->delete(); - if(!$delRes) throw new \Exception('角色删除失败'); + if (!$delRes) throw new \Exception('角色删除失败'); } - $delRes = \app\model\admin\menu\Role::where('admin_role_id', 'in', $idsArr)->delete(); - if(!is_numeric($delRes)) throw new \Exception('角色权限删除失败'); + $delRes = \app\model\admin\menu\Role::where('admin_role_id', 'in', $ids)->delete(); + if (!is_numeric($delRes)) throw new \Exception('角色权限删除失败'); - $delRes = \app\model\admin\role\User::where('admin_role_id', 'in', $idsArr)->delete(); - if(!is_numeric($delRes)) throw new \Exception('角色用户删除失败'); + $delRes = \app\model\admin\role\User::where('admin_role_id', 'in', $ids)->delete(); + if (!is_numeric($delRes)) throw new \Exception('角色用户删除失败'); Db::commit(); return $this->success('操作成功'); } catch (\Exception $e) { Db::rollback(); - return $this->error('数据库异常,操作失败'); + return $this->exceptionError($e); } } diff --git a/app/controller/admin/User.php b/app/controller/admin/User.php index 28ebb8bf99ee947d5ddc52974100af3dc3d533fd..db2381b593e731633d5b3e562ff806a8d62d58ec 100644 --- a/app/controller/admin/User.php +++ b/app/controller/admin/User.php @@ -19,294 +19,288 @@ use think\facade\Db; use think\facade\Cache; /** -* 后台管理员控制器 -*/ - + * 后台管理员控制器 + */ class User extends Backend - { +{ protected $model; //当前模型对象 - protected $noNeedLogin = [ 'login', 'logout' ]; - protected $noNeedAuth = [ 'loginInfo', 'singleEdit' ]; + protected $noNeedLogin = ['login', 'logout']; + protected $noNeedAuth = ['loginInfo', 'singleEdit']; protected function _initialize() - { + { $this->model = new \app\model\admin\User(); } - public function login() { + public function login() + { //获取表单提交数据 $param = $this->request->post(); //防止密码爆破 - $fail = Cache::get( $param[ 'username' ], 1 ); - if ( $fail >= 5 ) return $this->error( '失败次数过多,请三分钟后再试' ); + $fail = Cache::get('laytp-admin-login-num-' . $param['username'], 1); + if ($fail >= 5) return $this->error('失败次数过多,请三分钟后再试'); //验证表单提交 $validate = new Login(); - if ( !$validate->check( $param ) ) { - $param[ 'password' ] = '******'; + if (!$validate->check($param)) { + $param['password'] = '******'; //登录失败也不记录用户密码 - Log::create( [ + Log::create([ 'login_status' => 2, 'admin_id' => 0, - 'request_body' => json_encode( $param ), - 'request_header' => json_encode( $this->request->header() ), + 'request_body' => json_encode($param), + 'request_header' => json_encode($this->request->header()), 'ip' => $this->request->ip(), - 'create_time' => date( 'Y-m-d H:i:s' ), - ] ); - Cache::set( $param[ 'username' ], $fail+1, 180 ); - return $this->error( $validate->getError() ); + 'create_time' => date('Y-m-d H:i:s'), + ]); + Cache::set('laytp-admin-login-num-' . $param['username'], $fail + 1, 180); + return $this->error($validate->getError()); } //设置登录信息 - $loginUserInfo = \app\model\admin\User::where( 'username', '=', $param[ 'username' ] ) - ->with( [ 'avatar_file' ] )->field( UserServiceFacade::getAllowFields() )->findOrEmpty(); - $loginUserInfo->login_time = date( 'Y-m-d H:i:s' ); + $loginUserInfo = \app\model\admin\User::where('username', '=', $param['username']) + ->with(['avatar_file'])->field(UserServiceFacade::getAllowFields())->findOrEmpty(); + $loginUserInfo->login_time = date('Y-m-d H:i:s'); $loginUserInfo->login_ip = $this->request->ip(); $loginUserInfo->save(); - $userId = $loginUserInfo[ 'id' ]; - $token = Random::uuid(); - $loginUserInfo[ 'token' ] = $token; - Token::set( $token, $userId, 24 * 60 * 60 * 3 ); + $userId = $loginUserInfo['id']; + $token = Random::uuid(); + $loginUserInfo['token'] = $token; + Token::set($token, $userId, 24 * 60 * 60 * 3); - $param[ 'password' ] = '******'; + $param['password'] = '******'; //登录成功不记录用户密码 - Log::create( [ + Log::create([ 'login_status' => 1, 'admin_id' => $userId, - 'request_body' => json_encode( $param ), - 'request_header' => json_encode( $this->request->header() ), + 'request_body' => json_encode($param), + 'request_header' => json_encode($this->request->header()), 'ip' => $this->request->ip(), - 'create_time' => date( 'Y-m-d H:i:s' ), - ] ); - - $authList = AuthServiceFacade::getAuthList( $userId ); - return $this->success( '登录成功', [ - 'user'=>$loginUserInfo, - 'authList'=>$authList, - 'pluginConf'=>Config::get( 'plugin' ), - ] ); + 'create_time' => date('Y-m-d H:i:s'), + ]); + + $authList = AuthServiceFacade::getAuthList($userId); + return $this->success('登录成功', [ + 'user' => $loginUserInfo, + 'authList' => $authList, + 'pluginConf' => Config::get('plugin'), + ]); } - public function loginInfo() { + public function loginInfo() + { $loginUserInfo = UserServiceFacade::getUserInfo(); - $authList = AuthServiceFacade::getAuthList( $loginUserInfo[ 'id' ] ); - - return $this->success( '获取成功', [ - 'user'=>$loginUserInfo, - 'authList'=>$authList, - 'pluginConf'=>[ 'editor'=>[ 'ueditor', 'meditor' ] ], - ] ); + $authList = AuthServiceFacade::getAuthList($loginUserInfo['id']); + + return $this->success('获取成功', [ + 'user' => $loginUserInfo, + 'authList' => $authList, + 'pluginConf' => Config::get('plugin'), + 'ltVersion' => LT_VERSION, + ]); } //退出登录 - public function logout() - { - $token = $this->request->header( 'laytp-admin-token', $this->request->cookie( 'laytpAdminToken' ) ); - Token::delete( $token ); - return $this->success( '退出成功' ); + { + $token = $this->request->header('laytp-admin-token', $this->request->cookie('laytpAdminToken')); + Token::delete($token); + return $this->success('退出成功'); } //查看 - public function index() - { - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $data = $this->model->where( $where )->with( [ 'avatar_file' ] )->order( $order ); - $allData = $this->request->param( 'all_data' ); - if ( $allData ) { - $data = $data->select(); + { + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $data = $this->model->where($where)->order($order)->with(['avatar_file']); + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $data->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); } else { - $limit = $this->request->param( 'limit', 10 ); - $data = $data->paginate( $limit )->toArray(); + $data = $data->select()->toArray(); } - - return $this->success( '数据获取成功', $data ); + return $this->success('数据获取成功', $data); } //添加 - public function add() - { + { Db::startTrans(); try { - $post = CommonFun::filterPostData( $this->request->post() ); + $post = CommonFun::filterPostData($this->request->post()); $validate = new Add(); - if ( !$validate->check( $post ) ) throw new \Exception( $validate->getError() ); + if (!$validate->check($post)) throw new \Exception($validate->getError()); - $post[ 'password' ] = Str::createPassword( $post[ 'password' ] ); - $saveRes = $this->model->save( $post ); - if ( !$saveRes ) throw new \Exception( '保存基础信息失败' ); + $post['password'] = Str::createPassword($post['password']); + $saveRes = $this->model->save($post); + if (!$saveRes) throw new \Exception('保存基础信息失败'); - if ( $post[ 'role_ids' ] ) { - $roleIds = explode( ',', $post[ 'role_ids' ] ); + if ($post['role_ids']) { + $roleIds = explode(',', $post['role_ids']); $data = []; - foreach ( $roleIds as $k => $v ) { - $data[] = [ 'admin_role_id' => $v, 'admin_user_id' => $this->model->id ]; + foreach ($roleIds as $k => $v) { + $data[] = ['admin_role_id' => $v, 'admin_user_id' => $this->model->id]; } - $roleUser = new \app\model\admin\role\User(); - $saveAllRes = $roleUser->saveAll( $data ); - if ( !$saveAllRes ) throw new \Exception( '保存角色信息失败' ); + $roleUser = new \app\model\admin\role\User(); + $saveAllRes = $roleUser->saveAll($data); + if (!$saveAllRes) throw new \Exception('保存角色信息失败'); } Db::commit(); - return $this->success( '操作成功' ); - } catch ( \Exception $e ) { + return $this->success('操作成功'); + } catch (\Exception $e) { Db::rollback(); - return $this->error( '数据库异常,操作失败' ); + return $this->error('数据库异常,操作失败'); } } //查看详情 - public function info() - { - $id = $this->request->param( 'id' ); - $info = $this->model->with( [ 'role_ids', 'avatar_file' ] )->findOrEmpty( $id )->toArray(); - $data = \app\resource\admin\User::info( $info ); - return $this->success( '获取成功', $data ); + { + $id = $this->request->param('id'); + $info = $this->model->with(['role_ids', 'avatar_file'])->findOrEmpty($id)->toArray(); + $data = \app\resource\admin\User::info($info); + return $this->success('获取成功', $data); } //编辑 - public function edit() - { + { Db::startTrans(); try { - $post = CommonFun::filterPostData( $this->request->post() ); - $user = $this->model->findOrEmpty( $post[ 'id' ] ); - if ( !$user ) throw new \Exception( 'id参数错误' ); + $post = CommonFun::filterPostData($this->request->post()); + $user = $this->model->findOrEmpty($post['id']); + if (!$user) throw new \Exception('id参数错误'); $validate = new Edit(); - if ( !$validate->check( $post ) ) throw new \Exception( $validate->getError() ); - if ( $post[ 'password' ] ) { - $post[ 'password' ] = Str::createPassword( $post[ 'password' ] ); + if (!$validate->check($post)) throw new \Exception($validate->getError()); + if ($post['password']) { + $post['password'] = Str::createPassword($post['password']); } else { - unset( $post[ 'password' ] ); - unset( $post[ 're_password' ] ); + unset($post['password']); + unset($post['re_password']); } - $updateRes = $user->update( $post ); - if ( !$updateRes ) throw new \Exception( '保存基本信息失败' ); + $updateRes = $user->update($post); + if (!$updateRes) throw new \Exception('保存基本信息失败'); $userRole = new \app\model\admin\role\User(); - $deleteRes = $userRole->where( 'admin_user_id', '=', $post[ 'id' ] )->delete(); - if ( !is_numeric( $deleteRes ) ) throw new \Exception( '删除用户角色失败' ); + $deleteRes = $userRole->where('admin_user_id', '=', $post['id'])->delete(); + if (!is_numeric($deleteRes)) throw new \Exception('删除用户角色失败'); - if ( $post[ 'role_ids' ] ) { - $roleIds = explode( ',', $post[ 'role_ids' ] ); + if ($post['role_ids']) { + $roleIds = explode(',', $post['role_ids']); $data = []; - foreach ( $roleIds as $k => $v ) { - $data[] = [ 'admin_role_id' => $v, 'admin_user_id' => $user->id ]; + foreach ($roleIds as $k => $v) { + $data[] = ['admin_role_id' => $v, 'admin_user_id' => $user->id]; } - $saveAllRes = $userRole->saveAll( $data ); - if ( !$saveAllRes ) throw new \Exception( '保存用户角色失败' ); + $saveAllRes = $userRole->saveAll($data); + if (!$saveAllRes) throw new \Exception('保存用户角色失败'); } Db::commit(); - return $this->success( '操作成功' ); - } catch ( \Exception $e ) { + return $this->success('操作成功'); + } catch (\Exception $e) { Db::rollback(); - return $this->exceptionError( $e ); + return $this->exceptionError($e); } } //修改个人资料 - - public function singleEdit() { - $post = CommonFun::filterPostData( $this->request->post() ); + public function singleEdit() + { + $post = CommonFun::filterPostData($this->request->post()); $validate = new singleEdit(); - if ( !$validate->check( $post ) ) { - return $this->error( $validate->getError() ); + if (!$validate->check($post)) { + return $this->error($validate->getError()); } - if ( !$post[ 'password' ] ) { - unset( $post[ 'password' ] ); + if (!$post['password']) { + unset($post['password']); } else { - $post[ 'password' ] = Str::createPassword( $post[ 'password' ] ); + $post['password'] = Str::createPassword($post['password']); } - $user = $this->model->with( [ 'avatar_file' ] )->find( $post[ 'id' ] ); - if ( !$user ) { - return $this->error( 'ID参数错误' ); + $user = $this->model->with(['avatar_file'])->find($post['id']); + if (!$user) { + return $this->error('ID参数错误'); } - $res = $user->update( $post ); - if ( $res ) { - return $this->success( '操作成功' ); + $res = $user->update($post); + if ($res) { + return $this->success('操作成功'); } else { - return $this->error( '操作失败' ); + return $this->error('操作失败'); } } //删除 - public function del() - { - $ids = array_filter( $this->request->param( 'ids' ) ); - if ( !$ids ) { - return $this->error( '参数ids不能为空' ); + { + $ids = array_filter($this->request->param('ids')); + if (!$ids) { + return $this->error('参数ids不能为空'); } - if ( in_array( 1, $ids ) ) { - return $this->error( '不允许删除初始化用户' ); + if (in_array(1, $ids)) { + return $this->error('不允许删除初始化用户'); } try { - if ( $this->model->destroy( $ids ) ) { - return $this->success( '数据删除成功' ); + if ($this->model->destroy($ids)) { + return $this->success('数据删除成功'); } else { - return $this->error( '数据删除失败' ); + return $this->error('数据删除失败'); } - } catch ( \Exception $e ) { - return $this->exceptionError( $e ); + } catch (\Exception $e) { + return $this->exceptionError($e); } } //设置状态 - public function setStatus() - { - $id = $this->request->post( 'id' ); - $fieldVal = $this->request->post( 'field_val' ); - $isRecycle = $this->request->post( 'is_recycle' ); - $update[ 'status' ] = $fieldVal; + { + $id = $this->request->post('id'); + $fieldVal = $this->request->post('field_val'); + $isRecycle = $this->request->post('is_recycle'); + $update['status'] = $fieldVal; try { - if ( $isRecycle ) { - $updateRes = $this->model->onlyTrashed()->where( 'id', '=', $id )->update( $update ); + if ($isRecycle) { + $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); } else { - $updateRes = $this->model->where( 'id', '=', $id )->update( $update ); + $updateRes = $this->model->where('id', '=', $id)->update($update); } - if ( $updateRes ) { - return $this->success( '操作成功' ); - } else if ( $updateRes === 0 ) { - return $this->success( '未作修改' ); + if ($updateRes) { + return $this->success('操作成功'); + } else if ($updateRes === 0) { + return $this->success('未作修改'); } else { - return $this->error( '操作失败' ); + return $this->error('操作失败'); } - } catch ( \Exception $e ) { - return $this->error( '数据库异常,操作失败' ); + } catch (\Exception $e) { + return $this->error('数据库异常,操作失败'); } } //设置是否为超管 - public function setIsSuperManager() - { - $id = $this->request->post( 'id' ); - $fieldVal = $this->request->post( 'field_val' ); - $isRecycle = $this->request->post( 'is_recycle' ); - $update[ 'is_super_manager' ] = $fieldVal; + { + $id = $this->request->post('id'); + $fieldVal = $this->request->post('field_val'); + $isRecycle = $this->request->post('is_recycle'); + $update['is_super_manager'] = $fieldVal; try { - if ( $isRecycle ) { - $updateRes = $this->model->onlyTrashed()->where( 'id', '=', $id )->update( $update ); + if ($isRecycle) { + $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); } else { - $updateRes = $this->model->where( 'id', '=', $id )->update( $update ); + $updateRes = $this->model->where('id', '=', $id)->update($update); } - if ( $updateRes ) { - return $this->success( '操作成功' ); - } else if ( $updateRes === 0 ) { - return $this->success( '未作修改' ); + if ($updateRes) { + return $this->success('操作成功'); + } else if ($updateRes === 0) { + return $this->success('未作修改'); } else { - return $this->error( '操作失败' ); + return $this->error('操作失败'); } - } catch ( \Exception $e ) { - return $this->error( '数据库异常,操作失败' ); + } catch (\Exception $e) { + return $this->error('数据库异常,操作失败'); } } } \ No newline at end of file diff --git a/app/controller/admin/action/Log.php b/app/controller/admin/action/Log.php index ea163fcf433d39c8d6968f3fbb5efcc557d1df26..2155aecc052e8aa15130abf44984288c1b2e9125 100644 --- a/app/controller/admin/action/Log.php +++ b/app/controller/admin/action/Log.php @@ -3,48 +3,45 @@ namespace app\controller\admin\action; use laytp\controller\Backend; -use laytp\library\CommonFun; +use think\facade\Config; /** * 后台操作日志 */ class Log extends Backend { - /** * admin_action_log模型对象 * @var \app\model\admin\action\Log */ protected $model; - protected $hasSoftDel=0;//是否拥有软删除功能 + protected $hasSoftDel = 0;//是否拥有软删除功能 protected $noNeedLogin = []; // 无需登录即可请求的方法 - protected $noNeedAuth = ['index', 'info']; // 无需鉴权即可请求的方法 + protected $noNeedAuth = ['index', 'info']; // 无需鉴权即可请求的方法 public function _initialize() { $this->model = new \app\model\admin\action\Log(); } - //查看和搜索列表 - public function index(){ - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $allData = $this->request->param('all_data'); - $data = $this->model->where($where)->order($order)->with(['adminUser']); - if($allData){ + public function index() + { + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $data = $this->model->where($where)->order($order)->with(['adminUser']); + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $data->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); + } else { $data = $data->select()->toArray(); - }else{ - $limit = $this->request->param('limit', 10); - $data = $data->paginate($limit)->toArray(); } return $this->success('数据获取成功', $data); } - - - //查看详情 public function info() { @@ -53,19 +50,17 @@ class Log extends Backend return $this->success('获取成功', $info); } - - - //回收站 - public function recycle(){ + public function recycle() + { $where = $this->buildSearchParams(); $order = $this->buildOrder(); - $limit = $this->request->param('limit', 10); + $limit = $this->request->param('limit', Config::get('paginate.limit')); $data = $this->model->onlyTrashed() - ->with(['adminUser']) - ->order($order)->where($where)->paginate($limit)->toArray(); + ->with(['adminUser']) + ->order($order)->where($where)->paginate($limit)->toArray(); return $this->success('回收站数据获取成功', $data); } - + } diff --git a/app/controller/admin/api/Log.php b/app/controller/admin/api/Log.php index b787a8a4110ce3443bdb68fa4a428b86a09a9d9a..a387bea82d8173017c90f39b8ed5c2c0f8f52697 100644 --- a/app/controller/admin/api/Log.php +++ b/app/controller/admin/api/Log.php @@ -3,7 +3,7 @@ namespace app\controller\admin\api; use laytp\controller\Backend; -use laytp\library\CommonFun; +use think\facade\Config; /** * Api请求日志 @@ -16,35 +16,16 @@ class Log extends Backend * @var \app\model\api\Log */ protected $model; - protected $hasSoftDel=0;//是否拥有软删除功能 + protected $hasSoftDel = 0;//是否拥有软删除功能 protected $noNeedLogin = []; // 无需登录即可请求的方法 - protected $noNeedAuth = ['index', 'info']; // 无需鉴权即可请求的方法 + protected $noNeedAuth = ['index', 'info']; // 无需鉴权即可请求的方法 public function _initialize() { $this->model = new \app\model\api\Log(); } - - //查看和搜索列表 - public function index(){ - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $allData = $this->request->param('all_data'); - $data = $this->model->where($where)->order($order); - if($allData){ - $data = $data->select()->toArray(); - }else{ - $limit = $this->request->param('limit', 10); - $data = $data->paginate($limit)->toArray(); - } - return $this->success('数据获取成功', $data); - } - - - - //查看详情 public function info() { @@ -53,9 +34,5 @@ class Log extends Backend return $this->success('获取成功', $info); } - - - - } diff --git a/app/controller/admin/api/User.php b/app/controller/admin/api/User.php deleted file mode 100644 index c824957eff72c59efe7e3750202220775894e52b..0000000000000000000000000000000000000000 --- a/app/controller/admin/api/User.php +++ /dev/null @@ -1,226 +0,0 @@ -model = new \app\model\User(); - } - - //查看 - public function index() - { - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $data = $this->model->where($where)->with(['avatar_file'])->field(UserServiceFacade::getAllowFields())->order($order); - $allData = $this->request->param('all_data'); - if ($allData) { - $data = $data->select(); - } else { - $limit = $this->request->param('limit', 10); - $data = $data->paginate($limit)->toArray(); - } - - return $this->success('数据获取成功', $data); - } - - //添加 - public function add() - { - Db::startTrans(); - try { - $post = CommonFun::filterPostData($this->request->post()); - - $validate = new Add(); - if (!$validate->check($post)) throw new \Exception($validate->getError()); - - $post['password'] = Str::createPassword($post['password']); - $result = $this->model->save($post); - if(!$result) throw new \Exception("添加失败"); - - if ($post['role_ids']) { - $roleIds = explode(',', $post['role_ids']); - $data = []; - foreach ($roleIds as $k => $v) { - $data[] = ['admin_role_id' => $v, 'admin_user_id' => $this->model->id]; - } - $roleUser = new \app\model\admin\role\User(); - $result = $roleUser->saveAll($data); - if(!$result) throw new \Exception("添加失败"); - } - - Db::commit(); - return $this->success('添加成功'); - } catch (\Exception $e) { - Db::rollback(); - return $this->exceptionError($e); - } - } - - //查看详情 - public function info() - { - $id = $this->request->param('id'); - $info = $this->model->with(['role_ids','avatar_file'])->findOrEmpty($id)->toArray(); - $data = \app\resource\admin\User::info($info); - return $this->success('获取成功', $data); - } - - //编辑 - public function edit() - { - Db::startTrans(); - try { - $post = CommonFun::filterPostData($this->request->post()); - $user = $this->model->findOrEmpty($post['id']); - if (!$user) throw new \Exception("id参数错误"); - - $validate = new Edit(); - if (!$validate->check($post)) throw new \Exception($validate->getError()); - - if ($post['password']) { - $post['password'] = Str::createPassword($post['password']); - } else { - unset($post['password']); - unset($post['re_password']); - } - $updateUser = $user->update($post); - if (!$updateUser) throw new \Exception("用户基本信息保存失败"); - - $userRole = new \app\model\admin\role\User(); - $deleteRes = $userRole->where("admin_user_id", '=', $post['id'])->delete(); - if (!is_numeric($deleteRes)) throw new \Exception("用户角色删除失败"); - - if ($post['role_ids']) { - $roleIds = explode(',', $post['role_ids']); - $data = []; - foreach ($roleIds as $k => $v) { - $data[] = ['admin_role_id' => $v, 'admin_user_id' => $user->id]; - } - - $saveAllRole = $userRole->saveAll($data); - if (!$saveAllRole) throw new \Exception("用户角色保存失败"); - } - - Db::commit(); - return $this->success('操作成功'); - } catch (\Exception $e) { - Db::rollback(); - return $this->exceptionError($e); - } - } - - //修改个人资料 - public function singleEdit(){ - $post = CommonFun::filterPostData($this->request->post()); - $validate = new singleEdit(); - if(!$validate->check($post)){ - return $this->error($validate->getError()); - } - if(!$post['password']){ - unset($post['password']); - }else{ - $post['password'] = Str::createPassword($post['password']); - } - $user = $this->model->with(['avatar_file'])->find($post['id']); - if (!$user) { - return $this->error('ID参数错误'); - } - $res = $user->update($post); - if($res){ - return $this->success('操作成功'); - }else{ - return $this->error('操作失败'); - } - } - - //删除 - public function del() - { - $ids = array_filter($this->request->param('ids')); - if (!$ids) { - return $this->error('参数ids不能为空'); - } - if (in_array(1, $ids)) { - return $this->error('不允许删除初始化用户'); - } - try{ - if ($this->model->destroy($ids)) { - return $this->success('数据删除成功'); - } else { - return $this->error('数据删除失败'); - } - }catch (\Exception $e){ - return $this->exceptionError($e); - } - } - - //设置状态 - public function setStatus() - { - $id = $this->request->post('id'); - $fieldVal = $this->request->post('field_val'); - $isRecycle = $this->request->post('is_recycle'); - $update['status'] = $fieldVal; - try { - if($isRecycle) { - $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); - } else { - $updateRes = $this->model->where('id', '=', $id)->update($update); - } - if ($updateRes) { - return $this->success('操作成功'); - } else if ($updateRes === 0) { - return $this->success('未作修改'); - } else { - return $this->error('操作失败'); - } - } catch (\Exception $e) { - return $this->error('数据库异常,操作失败'); - } - } - - //设置是否为超管 - public function setIsSuperManager() - { - $id = $this->request->post('id'); - $fieldVal = $this->request->post('field_val'); - $isRecycle = $this->request->post('is_recycle'); - $update['is_super_manager'] = $fieldVal; - try { - if($isRecycle) { - $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); - } else { - $updateRes = $this->model->where('id', '=', $id)->update($update); - } - if ($updateRes) { - return $this->success('操作成功'); - } else if ($updateRes === 0) { - return $this->success('未作修改'); - } else { - return $this->error('操作失败'); - } - } catch (\Exception $e) { - return $this->error('数据库异常,操作失败'); - } - } -} \ No newline at end of file diff --git a/app/controller/admin/files/Category.php b/app/controller/admin/files/Category.php index 7edd49867ab85a519dd86a02946e524acf88c596..ffef8c1df22c9acebeb49ff4e75322c322865d58 100644 --- a/app/controller/admin/files/Category.php +++ b/app/controller/admin/files/Category.php @@ -4,6 +4,7 @@ namespace app\controller\admin\files; use laytp\controller\Backend; use laytp\library\Tree; +use think\facade\Config; /** * 附件分类管理 @@ -15,27 +16,35 @@ class Category extends Backend * @var \app\model\files\Category */ protected $model; - public $hasSoftDel=1;//是否拥有软删除功能 - public $orderRule=['sort' => 'DESC','id'=>'ASC']; + public $hasSoftDel = 1;//是否拥有软删除功能 + public $orderRule = ['sort' => 'DESC', 'id' => 'ASC']; public function initialize() { parent::initialize(); $this->model = new \app\model\files\Category(); } - + //查看 - public function index(){ - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $sourceData = $this->model->order($order)->where($where)->select()->toArray(); - $isTree = $this->request->param('is_tree'); - if($isTree){ + public function index() + { + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $sourceData = $this->model->order($order)->where($where); + $isTree = $this->request->param('is_tree'); + if ($isTree) { $menuTreeObj = Tree::instance(); - $menuTreeObj->init($sourceData); + $menuTreeObj->init($sourceData->select()->toArray()); $data = $menuTreeObj->getRootTrees(); - }else{ - $data = $sourceData; + } else { + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $sourceData->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); + } else { + $data = $sourceData->select()->toArray(); + } } return $this->success('获取成功', $data); } @@ -49,7 +58,7 @@ class Category extends Backend } $sourceData = $this->model->select()->toArray(); - $treeLib = Tree::instance(); + $treeLib = Tree::instance(); $treeLib->init($sourceData); $childIds = $treeLib->getChildIds($ids); @@ -59,27 +68,28 @@ class Category extends Backend return $this->error('数据删除失败'); } } - + //回收站 - public function recycle(){ + public function recycle() + { $where = $this->buildSearchParams(); $order = $this->buildOrder(); - $limit = $this->request->param('limit', 10); + $limit = $this->request->param('limit', Config::get('paginate.limit')); $data = $this->model->onlyTrashed() - ->with(['parent']) - ->order($order)->where($where)->paginate($limit)->toArray(); + ->with(['parent']) + ->order($order)->where($where)->paginate($limit)->toArray(); return $this->success('回收站数据获取成功', $data); } - + //设置排序 public function setSort() { - $id = $this->request->post('id'); - $fieldVal = $this->request->post('field_val'); - $isRecycle = $this->request->post('is_recycle'); + $id = $this->request->post('id'); + $fieldVal = $this->request->post('field_val'); + $isRecycle = $this->request->post('is_recycle'); $update['sort'] = $fieldVal; try { - if($isRecycle) { + if ($isRecycle) { $updateRes = $this->model->onlyTrashed()->where('id', '=', $id)->update($update); } else { $updateRes = $this->model->where('id', '=', $id)->update($update); diff --git a/app/controller/admin/login/Log.php b/app/controller/admin/login/Log.php index 4a1815181c6a02911919f3686d8b0c133082db22..ea4875ddcc6146d8d48d5631b1a92486e678622c 100644 --- a/app/controller/admin/login/Log.php +++ b/app/controller/admin/login/Log.php @@ -4,6 +4,7 @@ namespace app\controller\admin\login; use laytp\controller\Backend; use laytp\library\CommonFun; +use think\facade\Config; /** * 后台登录日志 @@ -16,35 +17,39 @@ class Log extends Backend * @var \app\model\admin\login\Log */ protected $model; - protected $hasSoftDel=0;//是否拥有软删除功能 + protected $hasSoftDel = 0;//是否拥有软删除功能 protected $noNeedLogin = []; // 无需登录即可请求的方法 - protected $noNeedAuth = ['index', 'info']; // 无需鉴权即可请求的方法 + protected $noNeedAuth = ['index', 'info']; // 无需鉴权即可请求的方法 public function _initialize() { $this->model = new \app\model\admin\login\Log(); } - + //查看和搜索列表 - public function index(){ - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $allData = $this->request->param('all_data'); - $data = $this->model->where($where)->order($order)->with(['adminUser']); - if($allData){ + + /** + * @throws \think\db\exception\DbException + */ + public function index() + { + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $data = $this->model->where($where)->order($order)->with(['adminUser']); + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $data->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); + } else { $data = $data->select()->toArray(); - }else{ - $limit = $this->request->param('limit', 10); - $data = $data->paginate($limit)->toArray(); } return $this->success('数据获取成功', $data); } - - //查看详情 public function info() { @@ -53,19 +58,19 @@ class Log extends Backend return $this->success('获取成功', $info); } - - //回收站 - public function recycle(){ + public function recycle() + { $where = $this->buildSearchParams(); $order = $this->buildOrder(); - $limit = $this->request->param('limit', 10); + $limit = $this->request->param('limit', Config::get('paginate.limit')); $data = $this->model->onlyTrashed() - ->with(['adminUser']) - ->order($order)->where($where)->paginate($limit)->toArray(); + ->where($where) + ->with(['adminUser']) + ->order($order)->paginate($limit)->toArray(); return $this->success('回收站数据获取成功', $data); } - + } diff --git a/app/controller/admin/plugin/ali/Sms.php b/app/controller/admin/plugin/ali/Sms.php deleted file mode 100644 index af84c36fa4be7ab7a51b6842fb95941d86c7792c..0000000000000000000000000000000000000000 --- a/app/controller/admin/plugin/ali/Sms.php +++ /dev/null @@ -1,61 +0,0 @@ -model = new \app\model\plugin\ali\Sms(); - } - - - //查看和搜索列表 - public function index(){ - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $allData = $this->request->param('all_data'); - $data = $this->model->where($where)->order($order); - if($allData){ - $data = $data->select()->toArray(); - }else{ - $limit = $this->request->param('limit', 10); - $data = $data->paginate($limit)->toArray(); - } - return $this->success('数据获取成功', $data); - } - - - - - //查看详情 - public function info() - { - $id = $this->request->param('id'); - $info = $this->model->find($id); - return $this->success('获取成功', $info); - } - - - - - - -} diff --git a/app/controller/api/Common.php b/app/controller/api/Common.php index dd0c726b154503c61cabd687f78de2240823bf73..8087a87ea8757ada63ef1fc339ad0b5f5c69e235 100644 --- a/app/controller/api/Common.php +++ b/app/controller/api/Common.php @@ -88,14 +88,14 @@ class Common extends Api $inputValue = ""; //上传至七牛云 if ($uploadType == 'qiniu-kodo') { - if(ConfServiceFacade::get('qiniuKodo.conf.switch') != 1){ + if(ConfServiceFacade::get('plugin.qiniu_kodo.switch') != 1){ return $this->error('未开启七牛云KODO存储,请到七牛云KODO配置中开启'); } $kodoConf = [ - 'accessKey' => ConfServiceFacade::get('qiniuKodo.conf.accessKey'), - 'secretKey' => ConfServiceFacade::get('qiniuKodo.conf.secretKey'), - 'bucket' => ConfServiceFacade::get('qiniuKodo.conf.bucket'), - 'domain' => ConfServiceFacade::get('qiniuKodo.conf.domain'), + 'accessKey' => ConfServiceFacade::get('plugin.qiniu_kodo.accessKey'), + 'secretKey' => ConfServiceFacade::get('plugin.qiniu_kodo.secretKey'), + 'bucket' => ConfServiceFacade::get('plugin.qiniu_kodo.bucket'), + 'domain' => ConfServiceFacade::get('plugin.qiniu_kodo.domain'), ]; $kodo = Kodo::instance(); $kodoRes = $kodo->upload($file->getPathname(), $object, $kodoConf); @@ -108,15 +108,15 @@ class Common extends Api //上传至阿里云 if ($uploadType == 'ali-oss') { - if(ConfServiceFacade::get('system.aliOss.switch') != 1){ + if(ConfServiceFacade::get('plugin.ali_oss.switch') != 1){ return $this->error('未开启阿里云OSS存储,请到阿里云OSS配置中开启'); } $ossConf = [ - 'accessKeyID' => ConfServiceFacade::get('aliOss.conf.accessKeyID'), - 'accessKeySecret' => ConfServiceFacade::get('aliOss.conf.accessKeySecret'), - 'bucket' => ConfServiceFacade::get('aliOss.conf.bucket'), - 'endpoint' => ConfServiceFacade::get('aliOss.conf.endpoint'), - 'domain' => ConfServiceFacade::get('aliOss.conf.domain'), + 'accessKeyID' => ConfServiceFacade::get('plugin.ali_oss.accessKeyID'), + 'accessKeySecret' => ConfServiceFacade::get('plugin.ali_oss.accessKeySecret'), + 'bucket' => ConfServiceFacade::get('plugin.ali_oss.bucket'), + 'endpoint' => ConfServiceFacade::get('plugin.ali_oss.endpoint'), + 'domain' => ConfServiceFacade::get('plugin.ali_oss.domain'), ]; $oss = Oss::instance(); $ossUploadRes = $oss->upload($file->getPathname(), $object, $ossConf); @@ -188,7 +188,7 @@ class Common extends Api */ /*@formatter:on*/ public function sendEmailCode(){ - $emailStatus = ConfServiceFacade::get('system.email.status'); + $emailStatus = ConfServiceFacade::get('plugin.email.status'); if($emailStatus !== 'open'){ return $this->error('邮件功能未开启,请先到插件市场安装邮件插件,并在[邮件配置]中开启'); } @@ -229,7 +229,7 @@ class Common extends Api */ /*@formatter:on*/ public function checkEmailCode(){ - $emailStatus = ConfServiceFacade::get('system.email.status'); + $emailStatus = ConfServiceFacade::get('plugin.email.status'); if($emailStatus !== 'open'){ return $this->error('邮件功能未开启,请先到插件市场安装邮件插件,并在[邮件配置]中开启'); } @@ -268,7 +268,7 @@ class Common extends Api */ /*@formatter:on*/ public function sendMobileCode(){ - $aliSmsStatus = ConfServiceFacade::groupGet('aliSms.conf'); + $aliSmsStatus = ConfServiceFacade::groupGet('plugin.ali_sms'); if(!$aliSmsStatus){ return $this->error('请先到插件市场安装阿里云手机短信插件,并进行相关配置'); } diff --git a/app/controller/api/User.php b/app/controller/api/Member.php similarity index 89% rename from app/controller/api/User.php rename to app/controller/api/Member.php index b4f280381af67ad2c85e0edf4c6835b7ee5ae98d..70c4be4226e5ebb5f5aef97b3d55db188f2011ff 100644 --- a/app/controller/api/User.php +++ b/app/controller/api/Member.php @@ -2,7 +2,7 @@ namespace app\controller\api; -use app\service\api\UserServiceFacade; +use app\service\api\MemberServiceFacade; use app\validate\api\user\EmailLogin; use app\validate\api\user\EmailReg; use laytp\controller\Api; @@ -11,7 +11,7 @@ use laytp\controller\Api; * 会员相关 * @ApiWeigh (90) */ -class User extends Api +class Member extends Api { public $noNeedLogin = [ 'emailReg', @@ -53,7 +53,7 @@ class User extends Api /*@formatter:on*/ public function info() { - return $this->success('获取成功', UserServiceFacade::getUserInfo()); + return $this->success('获取成功', MemberServiceFacade::getUserInfo()); } /*@formatter:off*/ @@ -61,7 +61,7 @@ class User extends Api * @ApiTitle (邮箱注册) * @ApiSummary (邮箱注册) * @ApiMethod (POST) - * @ApiRoute (/api.user/emailReg) + * @ApiRoute (/api.member/emailReg) * @ApiParams (name="email", type="string", required="true", description="邮箱") * @ApiParams (name="password", type="string", required="true", description="密码") * @ApiParams (name="repassword", type="string", required="true", description="重复密码") @@ -88,10 +88,10 @@ class User extends Api $validate = new EmailReg(); if ($validate->check($param)) { - if (UserServiceFacade::emailRegLogin($param)) { - return $this->success('注册成功', ['token' => UserServiceFacade::getToken()]); + if (MemberServiceFacade::emailRegLogin($param)) { + return $this->success('注册成功', ['token' => MemberServiceFacade::getToken()]); } else { - return $this->error('注册失败,' . UserServiceFacade::getError()); + return $this->error('注册失败,' . MemberServiceFacade::getError()); } } else { return $this->error('注册失败,' . $validate->getError()); @@ -103,7 +103,7 @@ class User extends Api * @ApiTitle (邮箱密码登录) * @ApiSummary (邮箱密码登录) * @ApiMethod (POST) - * @ApiRoute (/api.user/emailLogin) + * @ApiRoute (/api.member/emailLogin) * @ApiParams (name="email", type="string", required="true", description="邮箱") * @ApiParams (name="password", type="string", required="true", description="密码") * @ApiReturnParams (name="code", type="integer", description="接口返回码.0=常规正确码,表示常规操作成功;1=常规错误码,客户端仅需提示msg;其他返回码与具体业务相关。框架实现了的唯一其他返回码:10401,前端需要跳转至登录界面。在一个复杂的交互过程中,你可能需要自行定义其他返回码") @@ -128,10 +128,10 @@ class User extends Api $validate = new EmailLogin(); if ($validate->check($param)) { - if (UserServiceFacade::emailRegLogin($param)) { - return $this->success('登录成功', ['token' => UserServiceFacade::getToken()]); + if (MemberServiceFacade::emailRegLogin($param)) { + return $this->success('登录成功', ['token' => MemberServiceFacade::getToken()]); } else { - return $this->error('登录失败,' . UserServiceFacade::getError()); + return $this->error('登录失败,' . MemberServiceFacade::getError()); } } else { return $this->error('登录失败,' . $validate->getError()); @@ -143,7 +143,7 @@ class User extends Api * @ApiTitle (注销登录) * @ApiSummary (注销登录信息) * @ApiMethod (GET) - * @ApiRoute (/api.user/logout) + * @ApiRoute (/api.member/logout) * @ApiHeaders (name="token", type="string", required="true", description="用户登录后得到的Token") * @ApiReturnParams (name="code", type="integer", description="接口返回码.0=常规正确码,表示常规操作成功;1=常规错误码,客户端仅需提示msg;其他返回码与具体业务相关。框架实现了的唯一其他返回码:10401,前端需要跳转至登录界面。在一个复杂的交互过程中,你可能需要自行定义其他返回码") * @ApiReturnParams (name="msg", type="string", description="返回描述") @@ -160,10 +160,10 @@ class User extends Api /*@formatter:on*/ public function logout() { - if (UserServiceFacade::logout()) { + if (MemberServiceFacade::logout()) { return $this->success('注销成功'); } else { - return $this->error(UserServiceFacade::getError()); + return $this->error(MemberServiceFacade::getError()); } } } \ No newline at end of file diff --git a/app/exception/Http.php b/app/exception/Http.php index 361c92ea66f893ac4b53cb9238d7bbef401f53b2..f5f57902549bafdf0e4cb386433e3b66c2076d49 100644 --- a/app/exception/Http.php +++ b/app/exception/Http.php @@ -80,7 +80,7 @@ class Http extends Handle protected function changeToUtf8(array $data): array { foreach ($data as $key => $value) { - $data[$key] = mb_convert_encoding($value, "UTF-8", "GBK, GBK2312"); + $data[$key] = is_array($value)?$this->changeToUtf8($value):mb_convert_encoding($value, "UTF-8", mb_detect_encoding($value)); } return $data; diff --git a/app/middleware/AllowCrossDomain.php b/app/middleware/AllowCrossDomain.php index ca7f9e36db8e266d67ab625f51ee440d0476c812..e8c582d3eb7bd9438c81ceca49c67654484b5580 100644 --- a/app/middleware/AllowCrossDomain.php +++ b/app/middleware/AllowCrossDomain.php @@ -21,11 +21,25 @@ class AllowCrossDomain extends BaseMiddleware public function handle($request, \Closure $next) { $header = [ - 'Access-Control-Allow-Origin' => '*', - 'Access-Control-Allow-Methods' => 'GET, POST, PATCH, PUT, DELETE, OPTIONS', - 'Access-Control-Allow-Headers' => '*', + 'Access-Control-Allow-Origin' => '*', + 'Access-Control-Allow-Methods' => 'GET, POST, PATCH, PUT, DELETE, OPTIONS', + 'Access-Control-Allow-Headers' => '*', ]; + if (env('CROS_RESTRICT', 'false') == 'true') { + $header['Access-Control-Allow-Origin'] = ''; + foreach (explode(',', env('DOMAIN.CROS_ORIGIN', '')) as $domain) { + if ($request->header('origin') == $domain) { + $header['Access-Control-Allow-Origin'] = $domain; + break; + } + } + } + + // Chromium Options 头,实际不传参,多域名部署时需要拦截 + if ($request->isOptions()) + return response('', 200, $header); + return $next($request)->header($header); } } \ No newline at end of file diff --git a/app/middleware/admin/Auth.php b/app/middleware/admin/Auth.php index 5e9adfb5f3536f04ed2e144891a61d535e26edfe..1553d8b9fdbbca0ad6a6e5c411673d83bb4f0608 100644 --- a/app/middleware/admin/Auth.php +++ b/app/middleware/admin/Auth.php @@ -18,7 +18,10 @@ class Auth extends BaseMiddleware public function handle(Request $request, \Closure $next) { if (AuthServiceFacade::needLogin()) { - $initUser = UserServiceFacade::init($request->header('laytp-admin-token', $request->cookie('laytpAdminToken'))); + // 为了兼容windows和linux获取header中驼峰命名的参数修改 + // windows中,使用原样获取,比如laytpAdminToken + // linux中,驼峰需要转换成短横杆获取,比如laytpAdminToken要使用laytp-admin-token来获取 + $initUser = UserServiceFacade::init($request->header('laytp-admin-token', $request->header('laytpAdminToken', $request->cookie('laytpAdminToken')))); if (!$initUser) return $this->error(UserServiceFacade::getError(), 10401); if (!UserServiceFacade::isLogin()) { if ($request->isAjax()) { diff --git a/app/middleware/api/Auth.php b/app/middleware/api/Auth.php index 336931e358fe5d1b37ebfe05816ded9cc40547e1..c22a8f90d87f7fa6125a0a0ede7e050271b7ab12 100644 --- a/app/middleware/api/Auth.php +++ b/app/middleware/api/Auth.php @@ -3,7 +3,7 @@ namespace app\middleware\api; use app\service\api\AuthServiceFacade; -use app\service\api\UserServiceFacade; +use app\service\api\MemberServiceFacade; use laytp\BaseMiddleware; use think\Request; @@ -18,14 +18,14 @@ class Auth extends BaseMiddleware public function handle(Request $request, \Closure $next) { if (AuthServiceFacade::needLogin()) { - $initUser = UserServiceFacade::init($request->header('token')); - if (!$initUser) return $this->error(UserServiceFacade::getError(), 10401); - if (!UserServiceFacade::isLogin()) { + $initUser = MemberServiceFacade::init($request->header('token')); + if (!$initUser) return $this->error(MemberServiceFacade::getError(), 10401); + if (!MemberServiceFacade::isLogin()) { return $this->error('登录信息已过期', 10401); } } else { //不需要登录的接口,也可能需要获取登录用户的信息 - UserServiceFacade::init($request->header('token')); + MemberServiceFacade::init($request->header('token')); } return $next($request); } diff --git a/app/model/plugin/ali/Sms.php b/app/model/Member.php similarity index 45% rename from app/model/plugin/ali/Sms.php rename to app/model/Member.php index fed813760ac8f6009e747fd274a8537b06784d52..fdccff05367533ee03ba092018206c5d0d42dec6 100644 --- a/app/model/plugin/ali/Sms.php +++ b/app/model/Member.php @@ -1,33 +1,47 @@ 'timestamp:Y-m-d H:i:s', + ]; //表名 //关联模型 - + public function avatarPicFile(){ + return $this->belongsTo('app\model\Files','avatar_pic','id'); + } //新增属性的方法 - public function getCreateTimeIntAttr($value, $data) + public function getVipTimeIntAttr($value, $data) + { + return isset($data['vip_time']) ? $data['vip_time'] : 0; + } + + public function getLoginTimeIntAttr($value, $data) + { + return isset($data['login_time']) ? strtotime($data['login_time']) : 0; + } + + public function getCreateTimeIntAttr($value, $data) { return isset($data['create_time']) ? strtotime($data['create_time']) : 0; } diff --git a/app/model/User.php b/app/model/User.php deleted file mode 100644 index 0694d633b50418757873ae923b8fcdc162652ea9..0000000000000000000000000000000000000000 --- a/app/model/User.php +++ /dev/null @@ -1,56 +0,0 @@ - 'timestamp:Y-m-d H:i:s', - ]; - - protected $append = ['vip_time_int']; - - //表名 - - - //关联模型 - - - //新增属性的方法 - public function getVipTimeIntAttr($value, $data) - { - return isset($data['vip_time']) ? $data['vip_time'] : 0; - } - - public function getLoginTimeIntAttr($value, $data) - { - return isset($data['login_time']) ? strtotime($data['login_time']) : 0; - } - - public function getCreateTimeIntAttr($value, $data) - { - return isset($data['create_time']) ? strtotime($data['create_time']) : 0; - } - - public function getUpdateTimeIntAttr($value, $data) - { - return isset($data['update_time']) ? strtotime($data['update_time']) : 0; - } - - public function getDeleteTimeIntAttr($value, $data) - { - return isset($data['delete_time']) ? strtotime($data['delete_time']) : 0; - } -} diff --git a/app/model/admin/Menu.php b/app/model/admin/Menu.php index 31490ae56da864834d6f0b454ecec88f14db3828..3361b0b4633525040099a0bcc723d7b67657084a 100644 --- a/app/model/admin/Menu.php +++ b/app/model/admin/Menu.php @@ -13,4 +13,11 @@ class Menu extends BaseModel use SoftDelete; protected $name = 'admin_menu'; + + protected $append = ['show_icon']; + + public function getShowIconAttr($value, $data) + { + return ''; + } } \ No newline at end of file diff --git a/app/service/Conf.php b/app/service/Conf.php index 74d175ce9bbd00022395c8b23f214f8538058fb8..814d9d16c182a040c843821bf1f23f64650673bf 100644 --- a/app/service/Conf.php +++ b/app/service/Conf.php @@ -16,14 +16,16 @@ class Conf { use Error; - protected $redis = null; + // 是否使用redis,如果不想使用redis,修改此处为false即可 + protected $useRedis = true; + // 数据库连接句柄 protected $db = null; //判断是否配置了redis protected function hasRedis(){ $redisConf = Config::get('cache'); - if(isset($redisConf['stores']['redis']['type'])){ + if(isset($redisConf['stores']['redis']['type']) && $this->useRedis){ return true; } return false; diff --git a/app/service/admin/Plugins.php b/app/service/admin/Plugins.php index 6e1190e1c1da28e396c366d7af486c3d0555ace3..9a14f218f8b9d85c82e85a70d52860e25c2230eb 100644 --- a/app/service/admin/Plugins.php +++ b/app/service/admin/Plugins.php @@ -106,7 +106,7 @@ class Plugins // 删除插件目录 DirFile::rmDirs($pluginDir); // 修改系统插件配置文件config/plugin.php - $this->unInstallPluginConf($plugin); + $this->unInstallPluginConf($plugin, $info); return true; } @@ -121,17 +121,20 @@ class Plugins // 下载zip文件到本地 public function download($plugin, $laytpGwToken) { - $res = Http::post(Config::get('plugin.apiUrl') . "/plugins/install", ['plugin'=>$plugin], array( + $ltVersion = request()->param('ltVersion'); + $pluginVersion = request()->param('pluginVersion'); + $res = Http::post(Config::get('plugin.apiUrl') . "/plugins/install", [ + 'plugin'=>$plugin, + 'ltVersion'=>$ltVersion, + 'pluginVersion'=>$pluginVersion, + ], array( CURLOPT_HTTPHEADER => array( "token: ".$laytpGwToken ), )); $resArr = json_decode($res, true); - if($resArr['code'] === 1){ - $this->setError(1); - return false; - }else if($resArr['code'] === 2){ - $this->setError(2); + if($resArr['code'] > 0 ){ + $this->setError(['msg'=>$resArr['msg'],'code'=>$resArr['code']]); return false; } $url = $resArr['data']['url']; @@ -166,6 +169,10 @@ class Plugins $this->migrate($plugin); // 复制静态文件 + if(!function_exists('exec')){ + $this->setError('php函数exec不允许执行'); + return false; + } $this->copyPublicFile($plugin); // 生成菜单,同时将新增的菜单id写入info.ini配置文件中,便于卸载时同时删除菜单 @@ -175,7 +182,7 @@ class Plugins $this->installPluginConf($plugin); return true; }catch (\Exception $e){ - $this->setError($e->getMessage(). $e->getLine() . $e->getFile()); + $this->setError(['msg'=>$e->getMessage(). $e->getLine() . $e->getFile(),'code'=>3]); return false; } } @@ -358,13 +365,21 @@ class Plugins $pluginConf['installed'][] = $plugin; $pluginConf['installed'] = array_unique($pluginConf['installed']); sort($pluginConf['installed']); + + $info = $this->getPluginInfo($plugin); + if(isset($info['is_editor']) && $info['is_editor']){ + $pluginConf['installedEditor'][] = $plugin; + $pluginConf['installedEditor'] = array_unique($pluginConf['installedEditor']); + sort($pluginConf['installedEditor']); + } + $fileName = root_path() . DS . 'config' . DS . 'plugin.php'; file_put_contents($fileName,"$installed){ @@ -372,6 +387,15 @@ class Plugins } $pluginConf['installed'] = array_unique($pluginConf['installed']); sort($pluginConf['installed']); + + if(isset($info['is_editor']) && $info['is_editor']){ + foreach($pluginConf['installedEditor'] as $k=>$installedEditor){ + if($installedEditor === $plugin) unset($pluginConf['installedEditor'][$k]); + } + $pluginConf['installedEditor'] = array_unique($pluginConf['installedEditor']); + sort($pluginConf['installedEditor']); + } + $fileName = root_path() . DS . 'config' . DS . 'plugin.php'; file_put_contents($fileName," 0) { - $user = \app\model\User::find($userId); + $user = \app\model\Member::find($userId); if (!$user) { $this->setError('账号不存在,请重新登录'); return false; @@ -72,7 +72,7 @@ class User public function emailRegLogin($params) { try { - $user = \app\model\User::where('email', '=', $params['email'])->find(); + $user = \app\model\Member::where('email', '=', $params['email'])->find(); if (!$user) { $data = [ 'email' => $params['email'], @@ -82,8 +82,8 @@ class User 'login_ip' => request()->ip(), ]; - $user = \app\model\User::create($data); - $this->_user = \app\model\User::find($user->id); + $user = \app\model\Member::create($data); + $this->_user = \app\model\Member::find($user->id); } else { $this->_user = $user; } @@ -148,7 +148,7 @@ class User /** * 获取User模型 - * @return User + * @return Member */ public function getUser() { diff --git a/app/service/api/UserServiceFacade.php b/app/service/api/MemberServiceFacade.php similarity index 90% rename from app/service/api/UserServiceFacade.php rename to app/service/api/MemberServiceFacade.php index 7792e9fe13b8e1220cba4e5978083e63af31139a..da977ec8364f7253ff886dcafbfa19c288c07962 100644 --- a/app/service/api/UserServiceFacade.php +++ b/app/service/api/MemberServiceFacade.php @@ -17,10 +17,10 @@ use think\Facade; * @method static mixed getToken() 获取token * @method static mixed getAllowFields() 允许输出的字段 */ -class UserServiceFacade extends Facade +class MemberServiceFacade extends Facade { protected static function getFacadeClass() { - return User::class; + return Member::class; } } diff --git a/app/validate/admin/member/Add.php b/app/validate/admin/member/Add.php new file mode 100644 index 0000000000000000000000000000000000000000..fd1e19ba230e67ce50d046d3039d1ead05b7c9a1 --- /dev/null +++ b/app/validate/admin/member/Add.php @@ -0,0 +1,20 @@ + 'confirm:re_password|min:6|max:26', + ]; + + //定义内置方法检验失败后返回的字符 + protected $message = [ + 'password.confirm' => '两次密码输入不相同', + 'password.min' => '密码长度不能低于6个字符', + 'password.max' => '密码长度不能高于26个字符', + ]; +} \ No newline at end of file diff --git a/app/validate/admin/member/Edit.php b/app/validate/admin/member/Edit.php new file mode 100644 index 0000000000000000000000000000000000000000..a8fd1727ef9e3c6a59c32fe1916ebff253dfc3a7 --- /dev/null +++ b/app/validate/admin/member/Edit.php @@ -0,0 +1,20 @@ + 'confirm:re_password|min:6|max:26', + ]; + + //定义内置方法检验失败后返回的字符 + protected $message = [ + 'password.confirm' => '两次密码输入不相同', + 'password.min' => '密码长度不能低于6个字符', + 'password.max' => '密码长度不能高于26个字符', + ]; +} \ No newline at end of file diff --git a/app/validate/api/user/EmailLogin.php b/app/validate/api/user/EmailLogin.php index b2253b03a441438c20e3ba2931869713e4cae821..1ef606e0f4b14603a4f0bea836c0b0bf134ecddc 100644 --- a/app/validate/api/user/EmailLogin.php +++ b/app/validate/api/user/EmailLogin.php @@ -3,7 +3,7 @@ namespace app\validate\api\user; //邮箱密码登录验证器 -use app\model\User; +use app\model\Member; use laytp\library\Str; use think\Validate; @@ -27,8 +27,8 @@ class EmailLogin extends Validate protected function checkPassword($password, $rule, $data) { $email = $data['email']; - $user = new User(); + $user = new Member(); $passwordHash = $user->getFieldByEmail($email, 'password'); - return (!Str::checkPassword(md5($password), $passwordHash)) ? '账户信息错误' : true; + return (!Str::checkPassword($password, $passwordHash)) ? '账户信息错误' : true; } } \ No newline at end of file diff --git a/composer.json b/composer.json index 939ed07588a398d48b35af0a6e0f6519860152c4..188227abcb5357d4461693b540ad2ea4d262fc4b 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,7 @@ { "name": "yunwuxin", "email": "448901948@qq.com" - } + } ], "require": { "php": ">=7.1.0", @@ -28,11 +28,12 @@ "topthink/think-view": "^1.0", "alibabacloud/sdk": "^1.8", "aliyuncs/oss-sdk-php": "^2.4", - "qiniu/php-sdk": "^7.4" + "qiniu/php-sdk": "^7.4", + "topthink/think-filesystem": "^2.0" }, "require-dev": { "symfony/var-dumper": "^4.2", - "topthink/think-trace":"^1.0" + "topthink/think-trace": "^1.0" }, "autoload": { "psr-4": { @@ -52,4 +53,4 @@ "@php think vendor:publish" ] } -} +} \ No newline at end of file diff --git a/config/cookie.php b/config/cookie.php index 3dfbae4805b4612262be2a0ad9ca0cbec9e95902..7cf7cdfbd7a85f6f150630f9751af0397a400b21 100644 --- a/config/cookie.php +++ b/config/cookie.php @@ -8,7 +8,7 @@ return [ // cookie 保存路径 'path' => '/', // cookie 有效域名 - 'domain' => '', + 'domain' => env('domain.main', ''), // cookie 启用安全传输 'secure' => false, // httponly设置 diff --git a/config/database.php b/config/database.php index fbbfba98d551dcfcd77dd87dfe2103ac2f567a21..59f2d0549a2cf7376f9fcfd667c1ab1c749f665b 100644 --- a/config/database.php +++ b/config/database.php @@ -19,23 +19,23 @@ return [ 'connections' => [ 'mysql' => [ // 数据库类型 - 'type' => env('database.type', 'mysql'), + 'type' => env('database.type', ''), // 服务器地址 - 'hostname' => env('database.hostname', '127.0.0.1'), + 'hostname' => env('database.hostname', ''), // 数据库名 'database' => env('database.database', ''), // 用户名 - 'username' => env('database.username', 'root'), + 'username' => env('database.username', ''), // 密码 'password' => env('database.password', ''), // 端口 - 'hostport' => env('database.hostport', '3306'), + 'hostport' => env('database.hostport', ''), // 数据库连接参数 'params' => [], // 数据库编码默认采用utf8 - 'charset' => env('database.charset', 'utf8'), + 'charset' => env('database.charset', ''), // 数据库表前缀 - 'prefix' => env('database.prefix', 'lt_'), + 'prefix' => env('database.prefix', ''), // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) 'deploy' => 0, @@ -55,6 +55,31 @@ return [ 'fields_cache' => false, ], + 'redis' => [ + // Redis 配置 + 'type' => 'redis', + // Redis 主机 + 'host' => env('redis.host', '127.0.0.1'), + // Redis 端口 + 'port' => env('redis.port', 6379), + // Redis 密码 + 'password' => env('redis.password', ''), + // Redis 库编号 + 'select' => env('redis.select', 0), + // Redis 连接超时时间 + 'timeout' => env('redis.timeout', 0), + // Redis TTL + 'expire' => env('redis.expire', 0), + // Redis 长连接 + 'persistent' => env('redis.persistent', false), + // Redis key前缀 + 'prefix' => env('redis.prefix', ''), + // Redis 标签前缀 + 'tag_prefix' => 'tag:', + // Redis 序列化 + 'serialize' => [], + ], + // 更多的数据库配置信息 ], ]; diff --git a/config/paginate.php b/config/paginate.php new file mode 100644 index 0000000000000000000000000000000000000000..1524607031f38bd1815542602eb4f8a23d5d75a2 --- /dev/null +++ b/config/paginate.php @@ -0,0 +1,9 @@ + 10 +]; \ No newline at end of file diff --git a/config/plugin.php b/config/plugin.php index 70e8a7c83a68ef09c9282b6f34817628259919ef..27b55e51d588997c06f10298661adedd69f6e934 100644 --- a/config/plugin.php +++ b/config/plugin.php @@ -3,7 +3,6 @@ return array ( 'apiUrl' => 'https://api.laytp.com', 'installed' => array ( - ), 'installedEditor' => array ( diff --git a/database/migrations/20201013152727_adminMenu.php b/database/migrations/20201013152727_adminMenu.php index 0f7999aec7c281cb5001f9c9a0352227c59ad032..308381e0d492a05783374bc6fe239ea7d3419a28 100644 --- a/database/migrations/20201013152727_adminMenu.php +++ b/database/migrations/20201013152727_adminMenu.php @@ -40,7 +40,6 @@ class AdminMenu extends Migrator $table ->addColumn('name', 'string', ['length' => 100, 'default' => '', 'comment' => '名称']) ->addColumn('href', 'string', ['length' => 255, 'default' => '', 'comment' => '点击菜单,打开的url地址']) - ->addColumn('open_type', 'string', ['length' => 255, 'default' => '_iframe', 'comment' => '打开方式,_iframe=iframe的地址和_blank=新窗口打开']) ->addColumn('rule', 'string', ['length' => 100, 'default' => '', 'comment' => '路由规则']) ->addColumn('is_menu', 'boolean', ['default' => 1, 'comment' => '是否为menu.2=不是,1=是']) ->addColumn('sort', 'integer', ['default' => 0, 'comment' => '排序,从大到小,倒叙排序']) @@ -64,7 +63,6 @@ class AdminMenu extends Migrator '2' => [ 'name' => '控制面板', 'href' => '/admin/console.html', - 'open_type' => '_iframe', 'pid' => 1, 'icon' => 'layui-icon layui-icon-console', 'des' => '控制面板', @@ -82,7 +80,6 @@ class AdminMenu extends Migrator '4' => [ 'name' => '管理员管理', 'href' => '/admin/user/index.html', - 'open_type' => '_iframe', 'pid' => 3, 'des' => '管理员管理', 'create_time' => date('Y-m-d H:i:s'), @@ -181,7 +178,6 @@ class AdminMenu extends Migrator '15' => [ 'name' => '角色管理', 'href' => '/admin/role/index.html', - 'open_type' => '_iframe', 'pid' => 3, 'des' => '角色管理', 'create_time' => date('Y-m-d H:i:s'), @@ -262,7 +258,6 @@ class AdminMenu extends Migrator '24' => [ 'name' => '菜单管理', 'href' => '/admin/menu/index.html', - 'open_type' => '_iframe', 'pid' => 3, 'des' => '菜单管理', 'create_time' => date('Y-m-d H:i:s'), @@ -719,6 +714,123 @@ class AdminMenu extends Migrator 'create_time' => date('Y-m-d H:i:s'), 'update_time' => date('Y-m-d H:i:s'), ], + '76' => [ + 'name' => '设置排序', + 'rule' => '/admin.menu/setSort', + 'is_menu' => 2, + 'pid' => 24, + 'des' => '设置排序', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '77' => [ + 'name' => '会员管理', + 'pid' => 1, + 'href' => '/admin/member/index.html', + 'icon' => 'layui-icon layui-icon-username', + 'des' => '会员管理', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '78' => [ + 'name' => '查看和搜索列表', + 'pid' => 77, + 'rule' => '/admin.member/index', + 'is_menu' => 2, + 'des' => '查看和搜索列表', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '79' => [ + 'name' => '查看单条数据详情', + 'pid' => 77, + 'rule' => '/admin.member/info', + 'is_menu' => 2, + 'des' => '查看单条数据详情', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '80' => [ + 'name' => '添加', + 'pid' => 77, + 'rule' => '/admin.member/add', + 'is_menu' => 2, + 'des' => '添加', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '81' => [ + 'name' => '编辑', + 'pid' => 77, + 'rule' => '/admin.member/edit', + 'is_menu' => 2, + 'des' => '编辑', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '82' => [ + 'name' => '删除', + 'pid' => 77, + 'rule' => '/admin.member/del', + 'is_menu' => 2, + 'des' => '删除', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '83' => [ + 'name' => '设置账号状态', + 'pid' => 77, + 'rule' => '/admin.member/setStatus', + 'is_menu' => 2, + 'des' => '设置账号状态', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '84' => [ + 'name' => '回收站', + 'pid' => 77, + 'rule' => '/admin.member/recycle', + 'is_menu' => 2, + 'des' => '回收站', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '85' => [ + 'name' => '还原', + 'pid' => 77, + 'rule' => '/admin.member/restore', + 'is_menu' => 2, + 'des' => '还原', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '86' => [ + 'name' => '真实删除', + 'pid' => 77, + 'rule' => '/admin.member/trueDel', + 'is_menu' => 2, + 'des' => '真实删除', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '87' => [ + 'name' => '复制菜单', + 'rule' => '/admin.menu/copy', + 'is_menu' => 2, + 'pid' => 24, + 'des' => '复制菜单', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], + '88' => [ + 'name' => '移动菜单', + 'rule' => '/admin.menu/move', + 'is_menu' => 2, + 'pid' => 24, + 'des' => '复制菜单', + 'create_time' => date('Y-m-d H:i:s'), + 'update_time' => date('Y-m-d H:i:s'), + ], ]; $table->setData($data)->create(); diff --git a/database/migrations/20211013152732_conf.php b/database/migrations/20211013152732_conf.php index 9c2b95c68394dcd0249b302f322402da6c11ec8f..78af1fb50f6ae9af9cbcc5e34d6d702eb9d0af6d 100644 --- a/database/migrations/20211013152732_conf.php +++ b/database/migrations/20211013152732_conf.php @@ -26,12 +26,18 @@ class Conf extends Migrator $data = [ '1' => [ + 'group' => 'system.upload', + 'key' => 'defaultType', + 'value' => 'local', + 'form_type' => 'xmSelect', + ], + '2' => [ 'group' => 'system.upload', 'key' => 'size', 'value' => '200MB', 'form_type' => 'input', ], - '2' => [ + '3' => [ 'group' => 'system.upload', 'key' => 'mime', 'value' => 'png,jpg,gif,jpeg,doc,xls,pdf', diff --git a/database/migrations/20211113034943_area.php b/database/migrations/20211113034943_area.php index 636f60bb2280dba8d9cfc47210d4b88ba3db97bd..174498ca59cbcd851459e524b8c558297ca00c00 100644 --- a/database/migrations/20211113034943_area.php +++ b/database/migrations/20211113034943_area.php @@ -59872,9 +59872,9 @@ class Area extends Migrator array ( 'id' => 3325, 'pid' => 0, - 'short_name' => '台湾', - 'name' => '台湾', - 'merge_name' => '中国,台湾', + 'short_name' => '台湾省', + 'name' => '台湾省', + 'merge_name' => '中国,台湾省', 'level' => 1, 'pinyin' => 'taiwan', 'code' => '', @@ -59892,7 +59892,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '台北', 'name' => '台北市', - 'merge_name' => '中国,台湾,台北市', + 'merge_name' => '中国,台湾省,台北市', 'level' => 2, 'pinyin' => 'taipei', 'code' => '02', @@ -59910,7 +59910,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '松山', 'name' => '松山区', - 'merge_name' => '中国,台湾,台北市,松山区', + 'merge_name' => '中国,台湾省,台北市,松山区', 'level' => 3, 'pinyin' => 'songshan', 'code' => '02', @@ -59928,7 +59928,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '信义', 'name' => '信义区', - 'merge_name' => '中国,台湾,台北市,信义区', + 'merge_name' => '中国,台湾省,台北市,信义区', 'level' => 3, 'pinyin' => 'xinyi', 'code' => '02', @@ -59946,7 +59946,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '大安', 'name' => '大安区', - 'merge_name' => '中国,台湾,台北市,大安区', + 'merge_name' => '中国,台湾省,台北市,大安区', 'level' => 3, 'pinyin' => 'da\'an', 'code' => '02', @@ -59964,7 +59964,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '中山', 'name' => '中山区', - 'merge_name' => '中国,台湾,台北市,中山区', + 'merge_name' => '中国,台湾省,台北市,中山区', 'level' => 3, 'pinyin' => 'zhongshan', 'code' => '02', @@ -59982,7 +59982,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '中正', 'name' => '中正区', - 'merge_name' => '中国,台湾,台北市,中正区', + 'merge_name' => '中国,台湾省,台北市,中正区', 'level' => 3, 'pinyin' => 'zhongzheng', 'code' => '02', @@ -60000,7 +60000,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '大同', 'name' => '大同区', - 'merge_name' => '中国,台湾,台北市,大同区', + 'merge_name' => '中国,台湾省,台北市,大同区', 'level' => 3, 'pinyin' => 'datong', 'code' => '02', @@ -60018,7 +60018,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '万华', 'name' => '万华区', - 'merge_name' => '中国,台湾,台北市,万华区', + 'merge_name' => '中国,台湾省,台北市,万华区', 'level' => 3, 'pinyin' => 'wanhua', 'code' => '02', @@ -60036,7 +60036,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '文山', 'name' => '文山区', - 'merge_name' => '中国,台湾,台北市,文山区', + 'merge_name' => '中国,台湾省,台北市,文山区', 'level' => 3, 'pinyin' => 'wenshan', 'code' => '02', @@ -60054,7 +60054,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '南港', 'name' => '南港区', - 'merge_name' => '中国,台湾,台北市,南港区', + 'merge_name' => '中国,台湾省,台北市,南港区', 'level' => 3, 'pinyin' => 'nangang', 'code' => '02', @@ -60072,7 +60072,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '内湖', 'name' => '内湖区', - 'merge_name' => '中国,台湾,台北市,内湖区', + 'merge_name' => '中国,台湾省,台北市,内湖区', 'level' => 3, 'pinyin' => 'nahu', 'code' => '02', @@ -60090,7 +60090,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '士林', 'name' => '士林区', - 'merge_name' => '中国,台湾,台北市,士林区', + 'merge_name' => '中国,台湾省,台北市,士林区', 'level' => 3, 'pinyin' => 'shilin', 'code' => '02', @@ -60108,7 +60108,7 @@ class Area extends Migrator 'pid' => 3326, 'short_name' => '北投', 'name' => '北投区', - 'merge_name' => '中国,台湾,台北市,北投区', + 'merge_name' => '中国,台湾省,台北市,北投区', 'level' => 3, 'pinyin' => 'beitou', 'code' => '02', @@ -60126,7 +60126,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '高雄', 'name' => '高雄市', - 'merge_name' => '中国,台湾,高雄市', + 'merge_name' => '中国,台湾省,高雄市', 'level' => 2, 'pinyin' => 'kaohsiung', 'code' => '07', @@ -60144,7 +60144,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '盐埕', 'name' => '盐埕区', - 'merge_name' => '中国,台湾,高雄市,盐埕区', + 'merge_name' => '中国,台湾省,高雄市,盐埕区', 'level' => 3, 'pinyin' => 'yancheng', 'code' => '07', @@ -60162,7 +60162,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '鼓山', 'name' => '鼓山区', - 'merge_name' => '中国,台湾,高雄市,鼓山区', + 'merge_name' => '中国,台湾省,高雄市,鼓山区', 'level' => 3, 'pinyin' => 'gushan', 'code' => '07', @@ -60180,7 +60180,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '左营', 'name' => '左营区', - 'merge_name' => '中国,台湾,高雄市,左营区', + 'merge_name' => '中国,台湾省,高雄市,左营区', 'level' => 3, 'pinyin' => 'zuoying', 'code' => '07', @@ -60198,7 +60198,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '楠梓', 'name' => '楠梓区', - 'merge_name' => '中国,台湾,高雄市,楠梓区', + 'merge_name' => '中国,台湾省,高雄市,楠梓区', 'level' => 3, 'pinyin' => 'nanzi', 'code' => '07', @@ -60216,7 +60216,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '三民', 'name' => '三民区', - 'merge_name' => '中国,台湾,高雄市,三民区', + 'merge_name' => '中国,台湾省,高雄市,三民区', 'level' => 3, 'pinyin' => 'sanmin', 'code' => '07', @@ -60234,7 +60234,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '新兴', 'name' => '新兴区', - 'merge_name' => '中国,台湾,高雄市,新兴区', + 'merge_name' => '中国,台湾省,高雄市,新兴区', 'level' => 3, 'pinyin' => 'xinxing', 'code' => '07', @@ -60252,7 +60252,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '前金', 'name' => '前金区', - 'merge_name' => '中国,台湾,高雄市,前金区', + 'merge_name' => '中国,台湾省,高雄市,前金区', 'level' => 3, 'pinyin' => 'qianjin', 'code' => '07', @@ -60270,7 +60270,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '苓雅', 'name' => '苓雅区', - 'merge_name' => '中国,台湾,高雄市,苓雅区', + 'merge_name' => '中国,台湾省,高雄市,苓雅区', 'level' => 3, 'pinyin' => 'lingya', 'code' => '07', @@ -60288,7 +60288,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '前镇', 'name' => '前镇区', - 'merge_name' => '中国,台湾,高雄市,前镇区', + 'merge_name' => '中国,台湾省,高雄市,前镇区', 'level' => 3, 'pinyin' => 'qianzhen', 'code' => '07', @@ -60306,7 +60306,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '旗津', 'name' => '旗津区', - 'merge_name' => '中国,台湾,高雄市,旗津区', + 'merge_name' => '中国,台湾省,高雄市,旗津区', 'level' => 3, 'pinyin' => 'qijin', 'code' => '07', @@ -60324,7 +60324,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '小港', 'name' => '小港区', - 'merge_name' => '中国,台湾,高雄市,小港区', + 'merge_name' => '中国,台湾省,高雄市,小港区', 'level' => 3, 'pinyin' => 'xiaogang', 'code' => '07', @@ -60342,7 +60342,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '凤山', 'name' => '凤山区', - 'merge_name' => '中国,台湾,高雄市,凤山区', + 'merge_name' => '中国,台湾省,高雄市,凤山区', 'level' => 3, 'pinyin' => 'fengshan', 'code' => '07', @@ -60360,7 +60360,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '林园', 'name' => '林园区', - 'merge_name' => '中国,台湾,高雄市,林园区', + 'merge_name' => '中国,台湾省,高雄市,林园区', 'level' => 3, 'pinyin' => 'linyuan', 'code' => '07', @@ -60378,7 +60378,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '大寮', 'name' => '大寮区', - 'merge_name' => '中国,台湾,高雄市,大寮区', + 'merge_name' => '中国,台湾省,高雄市,大寮区', 'level' => 3, 'pinyin' => 'daliao', 'code' => '07', @@ -60396,7 +60396,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '大树', 'name' => '大树区', - 'merge_name' => '中国,台湾,高雄市,大树区', + 'merge_name' => '中国,台湾省,高雄市,大树区', 'level' => 3, 'pinyin' => 'dashu', 'code' => '07', @@ -60414,7 +60414,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '大社', 'name' => '大社区', - 'merge_name' => '中国,台湾,高雄市,大社区', + 'merge_name' => '中国,台湾省,高雄市,大社区', 'level' => 3, 'pinyin' => 'dashe', 'code' => '07', @@ -60432,7 +60432,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '仁武', 'name' => '仁武区', - 'merge_name' => '中国,台湾,高雄市,仁武区', + 'merge_name' => '中国,台湾省,高雄市,仁武区', 'level' => 3, 'pinyin' => 'renwu', 'code' => '07', @@ -60450,7 +60450,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '鸟松', 'name' => '鸟松区', - 'merge_name' => '中国,台湾,高雄市,鸟松区', + 'merge_name' => '中国,台湾省,高雄市,鸟松区', 'level' => 3, 'pinyin' => 'niaosong', 'code' => '07', @@ -60468,7 +60468,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '冈山', 'name' => '冈山区', - 'merge_name' => '中国,台湾,高雄市,冈山区', + 'merge_name' => '中国,台湾省,高雄市,冈山区', 'level' => 3, 'pinyin' => 'gangshan', 'code' => '07', @@ -60486,7 +60486,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '桥头', 'name' => '桥头区', - 'merge_name' => '中国,台湾,高雄市,桥头区', + 'merge_name' => '中国,台湾省,高雄市,桥头区', 'level' => 3, 'pinyin' => 'qiaotou', 'code' => '07', @@ -60504,7 +60504,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '燕巢', 'name' => '燕巢区', - 'merge_name' => '中国,台湾,高雄市,燕巢区', + 'merge_name' => '中国,台湾省,高雄市,燕巢区', 'level' => 3, 'pinyin' => 'yanchao', 'code' => '07', @@ -60522,7 +60522,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '田寮', 'name' => '田寮区', - 'merge_name' => '中国,台湾,高雄市,田寮区', + 'merge_name' => '中国,台湾省,高雄市,田寮区', 'level' => 3, 'pinyin' => 'tianliao', 'code' => '07', @@ -60540,7 +60540,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '阿莲', 'name' => '阿莲区', - 'merge_name' => '中国,台湾,高雄市,阿莲区', + 'merge_name' => '中国,台湾省,高雄市,阿莲区', 'level' => 3, 'pinyin' => 'alian', 'code' => '07', @@ -60558,7 +60558,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '路竹', 'name' => '路竹区', - 'merge_name' => '中国,台湾,高雄市,路竹区', + 'merge_name' => '中国,台湾省,高雄市,路竹区', 'level' => 3, 'pinyin' => 'luzhu', 'code' => '07', @@ -60576,7 +60576,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '湖内', 'name' => '湖内区', - 'merge_name' => '中国,台湾,高雄市,湖内区', + 'merge_name' => '中国,台湾省,高雄市,湖内区', 'level' => 3, 'pinyin' => 'huna', 'code' => '07', @@ -60594,7 +60594,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '茄萣', 'name' => '茄萣区', - 'merge_name' => '中国,台湾,高雄市,茄萣区', + 'merge_name' => '中国,台湾省,高雄市,茄萣区', 'level' => 3, 'pinyin' => 'qieding', 'code' => '07', @@ -60612,7 +60612,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '永安', 'name' => '永安区', - 'merge_name' => '中国,台湾,高雄市,永安区', + 'merge_name' => '中国,台湾省,高雄市,永安区', 'level' => 3, 'pinyin' => 'yong\'an', 'code' => '07', @@ -60630,7 +60630,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '弥陀', 'name' => '弥陀区', - 'merge_name' => '中国,台湾,高雄市,弥陀区', + 'merge_name' => '中国,台湾省,高雄市,弥陀区', 'level' => 3, 'pinyin' => 'mituo', 'code' => '07', @@ -60648,7 +60648,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '梓官', 'name' => '梓官区', - 'merge_name' => '中国,台湾,高雄市,梓官区', + 'merge_name' => '中国,台湾省,高雄市,梓官区', 'level' => 3, 'pinyin' => 'ziguan', 'code' => '07', @@ -60666,7 +60666,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '旗山', 'name' => '旗山区', - 'merge_name' => '中国,台湾,高雄市,旗山区', + 'merge_name' => '中国,台湾省,高雄市,旗山区', 'level' => 3, 'pinyin' => 'qishan', 'code' => '07', @@ -60684,7 +60684,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '美浓', 'name' => '美浓区', - 'merge_name' => '中国,台湾,高雄市,美浓区', + 'merge_name' => '中国,台湾省,高雄市,美浓区', 'level' => 3, 'pinyin' => 'meinong', 'code' => '07', @@ -60702,7 +60702,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '六龟', 'name' => '六龟区', - 'merge_name' => '中国,台湾,高雄市,六龟区', + 'merge_name' => '中国,台湾省,高雄市,六龟区', 'level' => 3, 'pinyin' => 'liugui', 'code' => '07', @@ -60720,7 +60720,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '甲仙', 'name' => '甲仙区', - 'merge_name' => '中国,台湾,高雄市,甲仙区', + 'merge_name' => '中国,台湾省,高雄市,甲仙区', 'level' => 3, 'pinyin' => 'jiaxian', 'code' => '07', @@ -60738,7 +60738,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '杉林', 'name' => '杉林区', - 'merge_name' => '中国,台湾,高雄市,杉林区', + 'merge_name' => '中国,台湾省,高雄市,杉林区', 'level' => 3, 'pinyin' => 'shanlin', 'code' => '07', @@ -60756,7 +60756,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '内门', 'name' => '内门区', - 'merge_name' => '中国,台湾,高雄市,内门区', + 'merge_name' => '中国,台湾省,高雄市,内门区', 'level' => 3, 'pinyin' => 'namen', 'code' => '07', @@ -60774,7 +60774,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '茂林', 'name' => '茂林区', - 'merge_name' => '中国,台湾,高雄市,茂林区', + 'merge_name' => '中国,台湾省,高雄市,茂林区', 'level' => 3, 'pinyin' => 'maolin', 'code' => '07', @@ -60792,7 +60792,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '桃源', 'name' => '桃源区', - 'merge_name' => '中国,台湾,高雄市,桃源区', + 'merge_name' => '中国,台湾省,高雄市,桃源区', 'level' => 3, 'pinyin' => 'taoyuan', 'code' => '07', @@ -60810,7 +60810,7 @@ class Area extends Migrator 'pid' => 3339, 'short_name' => '那玛夏', 'name' => '那玛夏区', - 'merge_name' => '中国,台湾,高雄市,那玛夏区', + 'merge_name' => '中国,台湾省,高雄市,那玛夏区', 'level' => 3, 'pinyin' => 'namaxia', 'code' => '07', @@ -60828,7 +60828,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '基隆', 'name' => '基隆市', - 'merge_name' => '中国,台湾,基隆市', + 'merge_name' => '中国,台湾省,基隆市', 'level' => 2, 'pinyin' => 'keelung', 'code' => '02', @@ -60846,7 +60846,7 @@ class Area extends Migrator 'pid' => 3378, 'short_name' => '中正', 'name' => '中正区', - 'merge_name' => '中国,台湾,基隆市,中正区', + 'merge_name' => '中国,台湾省,基隆市,中正区', 'level' => 3, 'pinyin' => 'zhongzheng', 'code' => '02', @@ -60864,7 +60864,7 @@ class Area extends Migrator 'pid' => 3378, 'short_name' => '七堵', 'name' => '七堵区', - 'merge_name' => '中国,台湾,基隆市,七堵区', + 'merge_name' => '中国,台湾省,基隆市,七堵区', 'level' => 3, 'pinyin' => 'qidu', 'code' => '02', @@ -60882,7 +60882,7 @@ class Area extends Migrator 'pid' => 3378, 'short_name' => '暖暖', 'name' => '暖暖区', - 'merge_name' => '中国,台湾,基隆市,暖暖区', + 'merge_name' => '中国,台湾省,基隆市,暖暖区', 'level' => 3, 'pinyin' => 'nuannuan', 'code' => '02', @@ -60900,7 +60900,7 @@ class Area extends Migrator 'pid' => 3378, 'short_name' => '仁爱', 'name' => '仁爱区', - 'merge_name' => '中国,台湾,基隆市,仁爱区', + 'merge_name' => '中国,台湾省,基隆市,仁爱区', 'level' => 3, 'pinyin' => 'renai', 'code' => '02', @@ -60918,7 +60918,7 @@ class Area extends Migrator 'pid' => 3378, 'short_name' => '中山', 'name' => '中山区', - 'merge_name' => '中国,台湾,基隆市,中山区', + 'merge_name' => '中国,台湾省,基隆市,中山区', 'level' => 3, 'pinyin' => 'zhongshan', 'code' => '02', @@ -60936,7 +60936,7 @@ class Area extends Migrator 'pid' => 3378, 'short_name' => '安乐', 'name' => '安乐区', - 'merge_name' => '中国,台湾,基隆市,安乐区', + 'merge_name' => '中国,台湾省,基隆市,安乐区', 'level' => 3, 'pinyin' => 'anle', 'code' => '02', @@ -60954,7 +60954,7 @@ class Area extends Migrator 'pid' => 3378, 'short_name' => '信义', 'name' => '信义区', - 'merge_name' => '中国,台湾,基隆市,信义区', + 'merge_name' => '中国,台湾省,基隆市,信义区', 'level' => 3, 'pinyin' => 'xinyi', 'code' => '02', @@ -60972,7 +60972,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '台中', 'name' => '台中市', - 'merge_name' => '中国,台湾,台中市', + 'merge_name' => '中国,台湾省,台中市', 'level' => 2, 'pinyin' => 'taichung', 'code' => '04', @@ -60990,7 +60990,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '中区', 'name' => '中区', - 'merge_name' => '中国,台湾,台中市,中区', + 'merge_name' => '中国,台湾省,台中市,中区', 'level' => 3, 'pinyin' => 'zhongqu', 'code' => '04', @@ -61008,7 +61008,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '东区', 'name' => '东区', - 'merge_name' => '中国,台湾,台中市,东区', + 'merge_name' => '中国,台湾省,台中市,东区', 'level' => 3, 'pinyin' => 'dongqu', 'code' => '04', @@ -61026,7 +61026,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '南区', 'name' => '南区', - 'merge_name' => '中国,台湾,台中市,南区', + 'merge_name' => '中国,台湾省,台中市,南区', 'level' => 3, 'pinyin' => 'nanqu', 'code' => '04', @@ -61044,7 +61044,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '西区', 'name' => '西区', - 'merge_name' => '中国,台湾,台中市,西区', + 'merge_name' => '中国,台湾省,台中市,西区', 'level' => 3, 'pinyin' => 'xiqu', 'code' => '04', @@ -61062,7 +61062,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '北区', 'name' => '北区', - 'merge_name' => '中国,台湾,台中市,北区', + 'merge_name' => '中国,台湾省,台中市,北区', 'level' => 3, 'pinyin' => 'beiqu', 'code' => '04', @@ -61080,7 +61080,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '西屯', 'name' => '西屯区', - 'merge_name' => '中国,台湾,台中市,西屯区', + 'merge_name' => '中国,台湾省,台中市,西屯区', 'level' => 3, 'pinyin' => 'xitun', 'code' => '04', @@ -61098,7 +61098,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '南屯', 'name' => '南屯区', - 'merge_name' => '中国,台湾,台中市,南屯区', + 'merge_name' => '中国,台湾省,台中市,南屯区', 'level' => 3, 'pinyin' => 'nantun', 'code' => '04', @@ -61116,7 +61116,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '北屯', 'name' => '北屯区', - 'merge_name' => '中国,台湾,台中市,北屯区', + 'merge_name' => '中国,台湾省,台中市,北屯区', 'level' => 3, 'pinyin' => 'beitun', 'code' => '04', @@ -61134,7 +61134,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '丰原', 'name' => '丰原区', - 'merge_name' => '中国,台湾,台中市,丰原区', + 'merge_name' => '中国,台湾省,台中市,丰原区', 'level' => 3, 'pinyin' => 'fengyuan', 'code' => '04', @@ -61152,7 +61152,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '东势', 'name' => '东势区', - 'merge_name' => '中国,台湾,台中市,东势区', + 'merge_name' => '中国,台湾省,台中市,东势区', 'level' => 3, 'pinyin' => 'dongshi', 'code' => '04', @@ -61170,7 +61170,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '大甲', 'name' => '大甲区', - 'merge_name' => '中国,台湾,台中市,大甲区', + 'merge_name' => '中国,台湾省,台中市,大甲区', 'level' => 3, 'pinyin' => 'dajia', 'code' => '04', @@ -61188,7 +61188,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '清水', 'name' => '清水区', - 'merge_name' => '中国,台湾,台中市,清水区', + 'merge_name' => '中国,台湾省,台中市,清水区', 'level' => 3, 'pinyin' => 'qingshui', 'code' => '04', @@ -61206,7 +61206,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '沙鹿', 'name' => '沙鹿区', - 'merge_name' => '中国,台湾,台中市,沙鹿区', + 'merge_name' => '中国,台湾省,台中市,沙鹿区', 'level' => 3, 'pinyin' => 'shalu', 'code' => '04', @@ -61224,7 +61224,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '梧栖', 'name' => '梧栖区', - 'merge_name' => '中国,台湾,台中市,梧栖区', + 'merge_name' => '中国,台湾省,台中市,梧栖区', 'level' => 3, 'pinyin' => 'wuqi', 'code' => '04', @@ -61242,7 +61242,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '后里', 'name' => '后里区', - 'merge_name' => '中国,台湾,台中市,后里区', + 'merge_name' => '中国,台湾省,台中市,后里区', 'level' => 3, 'pinyin' => 'houli', 'code' => '04', @@ -61260,7 +61260,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '神冈', 'name' => '神冈区', - 'merge_name' => '中国,台湾,台中市,神冈区', + 'merge_name' => '中国,台湾省,台中市,神冈区', 'level' => 3, 'pinyin' => 'shengang', 'code' => '04', @@ -61278,7 +61278,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '潭子', 'name' => '潭子区', - 'merge_name' => '中国,台湾,台中市,潭子区', + 'merge_name' => '中国,台湾省,台中市,潭子区', 'level' => 3, 'pinyin' => 'tanzi', 'code' => '04', @@ -61296,7 +61296,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '大雅', 'name' => '大雅区', - 'merge_name' => '中国,台湾,台中市,大雅区', + 'merge_name' => '中国,台湾省,台中市,大雅区', 'level' => 3, 'pinyin' => 'daya', 'code' => '04', @@ -61314,7 +61314,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '新社', 'name' => '新社区', - 'merge_name' => '中国,台湾,台中市,新社区', + 'merge_name' => '中国,台湾省,台中市,新社区', 'level' => 3, 'pinyin' => 'xinshe', 'code' => '04', @@ -61332,7 +61332,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '石冈', 'name' => '石冈区', - 'merge_name' => '中国,台湾,台中市,石冈区', + 'merge_name' => '中国,台湾省,台中市,石冈区', 'level' => 3, 'pinyin' => 'shigang', 'code' => '04', @@ -61350,7 +61350,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '外埔', 'name' => '外埔区', - 'merge_name' => '中国,台湾,台中市,外埔区', + 'merge_name' => '中国,台湾省,台中市,外埔区', 'level' => 3, 'pinyin' => 'waipu', 'code' => '04', @@ -61368,7 +61368,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '大安', 'name' => '大安区', - 'merge_name' => '中国,台湾,台中市,大安区', + 'merge_name' => '中国,台湾省,台中市,大安区', 'level' => 3, 'pinyin' => 'da\'an', 'code' => '04', @@ -61386,7 +61386,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '乌日', 'name' => '乌日区', - 'merge_name' => '中国,台湾,台中市,乌日区', + 'merge_name' => '中国,台湾省,台中市,乌日区', 'level' => 3, 'pinyin' => 'wuri', 'code' => '04', @@ -61404,7 +61404,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '大肚', 'name' => '大肚区', - 'merge_name' => '中国,台湾,台中市,大肚区', + 'merge_name' => '中国,台湾省,台中市,大肚区', 'level' => 3, 'pinyin' => 'dadu', 'code' => '04', @@ -61422,7 +61422,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '龙井', 'name' => '龙井区', - 'merge_name' => '中国,台湾,台中市,龙井区', + 'merge_name' => '中国,台湾省,台中市,龙井区', 'level' => 3, 'pinyin' => 'longjing', 'code' => '04', @@ -61440,7 +61440,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '雾峰', 'name' => '雾峰区', - 'merge_name' => '中国,台湾,台中市,雾峰区', + 'merge_name' => '中国,台湾省,台中市,雾峰区', 'level' => 3, 'pinyin' => 'wufeng', 'code' => '04', @@ -61458,7 +61458,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '太平', 'name' => '太平区', - 'merge_name' => '中国,台湾,台中市,太平区', + 'merge_name' => '中国,台湾省,台中市,太平区', 'level' => 3, 'pinyin' => 'taiping', 'code' => '04', @@ -61476,7 +61476,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '大里', 'name' => '大里区', - 'merge_name' => '中国,台湾,台中市,大里区', + 'merge_name' => '中国,台湾省,台中市,大里区', 'level' => 3, 'pinyin' => 'dali', 'code' => '04', @@ -61494,7 +61494,7 @@ class Area extends Migrator 'pid' => 3386, 'short_name' => '和平', 'name' => '和平区', - 'merge_name' => '中国,台湾,台中市,和平区', + 'merge_name' => '中国,台湾省,台中市,和平区', 'level' => 3, 'pinyin' => 'heping', 'code' => '04', @@ -61512,7 +61512,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '台南', 'name' => '台南市', - 'merge_name' => '中国,台湾,台南市', + 'merge_name' => '中国,台湾省,台南市', 'level' => 2, 'pinyin' => 'tainan', 'code' => '06', @@ -61530,7 +61530,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '东区', 'name' => '东区', - 'merge_name' => '中国,台湾,台南市,东区', + 'merge_name' => '中国,台湾省,台南市,东区', 'level' => 3, 'pinyin' => 'dongqu', 'code' => '06', @@ -61548,7 +61548,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '南区', 'name' => '南区', - 'merge_name' => '中国,台湾,台南市,南区', + 'merge_name' => '中国,台湾省,台南市,南区', 'level' => 3, 'pinyin' => 'nanqu', 'code' => '06', @@ -61566,7 +61566,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '北区', 'name' => '北区', - 'merge_name' => '中国,台湾,台南市,北区', + 'merge_name' => '中国,台湾省,台南市,北区', 'level' => 3, 'pinyin' => 'beiqu', 'code' => '06', @@ -61584,7 +61584,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '安南', 'name' => '安南区', - 'merge_name' => '中国,台湾,台南市,安南区', + 'merge_name' => '中国,台湾省,台南市,安南区', 'level' => 3, 'pinyin' => 'annan', 'code' => '06', @@ -61602,7 +61602,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '安平', 'name' => '安平区', - 'merge_name' => '中国,台湾,台南市,安平区', + 'merge_name' => '中国,台湾省,台南市,安平区', 'level' => 3, 'pinyin' => 'anping', 'code' => '06', @@ -61620,7 +61620,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '中西', 'name' => '中西区', - 'merge_name' => '中国,台湾,台南市,中西区', + 'merge_name' => '中国,台湾省,台南市,中西区', 'level' => 3, 'pinyin' => 'zhongxi', 'code' => '06', @@ -61638,7 +61638,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '新营', 'name' => '新营区', - 'merge_name' => '中国,台湾,台南市,新营区', + 'merge_name' => '中国,台湾省,台南市,新营区', 'level' => 3, 'pinyin' => 'xinying', 'code' => '06', @@ -61656,7 +61656,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '盐水', 'name' => '盐水区', - 'merge_name' => '中国,台湾,台南市,盐水区', + 'merge_name' => '中国,台湾省,台南市,盐水区', 'level' => 3, 'pinyin' => 'yanshui', 'code' => '06', @@ -61674,7 +61674,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '白河', 'name' => '白河区', - 'merge_name' => '中国,台湾,台南市,白河区', + 'merge_name' => '中国,台湾省,台南市,白河区', 'level' => 3, 'pinyin' => 'baihe', 'code' => '06', @@ -61692,7 +61692,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '柳营', 'name' => '柳营区', - 'merge_name' => '中国,台湾,台南市,柳营区', + 'merge_name' => '中国,台湾省,台南市,柳营区', 'level' => 3, 'pinyin' => 'liuying', 'code' => '06', @@ -61710,7 +61710,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '后壁', 'name' => '后壁区', - 'merge_name' => '中国,台湾,台南市,后壁区', + 'merge_name' => '中国,台湾省,台南市,后壁区', 'level' => 3, 'pinyin' => 'houbi', 'code' => '06', @@ -61728,7 +61728,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '东山', 'name' => '东山区', - 'merge_name' => '中国,台湾,台南市,东山区', + 'merge_name' => '中国,台湾省,台南市,东山区', 'level' => 3, 'pinyin' => 'dongshan', 'code' => '06', @@ -61746,7 +61746,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '麻豆', 'name' => '麻豆区', - 'merge_name' => '中国,台湾,台南市,麻豆区', + 'merge_name' => '中国,台湾省,台南市,麻豆区', 'level' => 3, 'pinyin' => 'madou', 'code' => '06', @@ -61764,7 +61764,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '下营', 'name' => '下营区', - 'merge_name' => '中国,台湾,台南市,下营区', + 'merge_name' => '中国,台湾省,台南市,下营区', 'level' => 3, 'pinyin' => 'xiaying', 'code' => '06', @@ -61782,7 +61782,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '六甲', 'name' => '六甲区', - 'merge_name' => '中国,台湾,台南市,六甲区', + 'merge_name' => '中国,台湾省,台南市,六甲区', 'level' => 3, 'pinyin' => 'liujia', 'code' => '06', @@ -61800,7 +61800,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '官田', 'name' => '官田区', - 'merge_name' => '中国,台湾,台南市,官田区', + 'merge_name' => '中国,台湾省,台南市,官田区', 'level' => 3, 'pinyin' => 'guantian', 'code' => '06', @@ -61818,7 +61818,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '大内', 'name' => '大内区', - 'merge_name' => '中国,台湾,台南市,大内区', + 'merge_name' => '中国,台湾省,台南市,大内区', 'level' => 3, 'pinyin' => 'dana', 'code' => '06', @@ -61836,7 +61836,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '佳里', 'name' => '佳里区', - 'merge_name' => '中国,台湾,台南市,佳里区', + 'merge_name' => '中国,台湾省,台南市,佳里区', 'level' => 3, 'pinyin' => 'jiali', 'code' => '06', @@ -61854,7 +61854,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '学甲', 'name' => '学甲区', - 'merge_name' => '中国,台湾,台南市,学甲区', + 'merge_name' => '中国,台湾省,台南市,学甲区', 'level' => 3, 'pinyin' => 'xuejia', 'code' => '06', @@ -61872,7 +61872,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '西港', 'name' => '西港区', - 'merge_name' => '中国,台湾,台南市,西港区', + 'merge_name' => '中国,台湾省,台南市,西港区', 'level' => 3, 'pinyin' => 'xigang', 'code' => '06', @@ -61890,7 +61890,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '七股', 'name' => '七股区', - 'merge_name' => '中国,台湾,台南市,七股区', + 'merge_name' => '中国,台湾省,台南市,七股区', 'level' => 3, 'pinyin' => 'qigu', 'code' => '06', @@ -61908,7 +61908,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '将军', 'name' => '将军区', - 'merge_name' => '中国,台湾,台南市,将军区', + 'merge_name' => '中国,台湾省,台南市,将军区', 'level' => 3, 'pinyin' => 'jiangjun', 'code' => '06', @@ -61926,7 +61926,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '北门', 'name' => '北门区', - 'merge_name' => '中国,台湾,台南市,北门区', + 'merge_name' => '中国,台湾省,台南市,北门区', 'level' => 3, 'pinyin' => 'beimen', 'code' => '06', @@ -61944,7 +61944,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '新化', 'name' => '新化区', - 'merge_name' => '中国,台湾,台南市,新化区', + 'merge_name' => '中国,台湾省,台南市,新化区', 'level' => 3, 'pinyin' => 'xinhua', 'code' => '06', @@ -61962,7 +61962,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '善化', 'name' => '善化区', - 'merge_name' => '中国,台湾,台南市,善化区', + 'merge_name' => '中国,台湾省,台南市,善化区', 'level' => 3, 'pinyin' => 'shanhua', 'code' => '06', @@ -61980,7 +61980,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '新市', 'name' => '新市区', - 'merge_name' => '中国,台湾,台南市,新市区', + 'merge_name' => '中国,台湾省,台南市,新市区', 'level' => 3, 'pinyin' => 'xinshi', 'code' => '06', @@ -61998,7 +61998,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '安定', 'name' => '安定区', - 'merge_name' => '中国,台湾,台南市,安定区', + 'merge_name' => '中国,台湾省,台南市,安定区', 'level' => 3, 'pinyin' => 'anding', 'code' => '06', @@ -62016,7 +62016,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '山上', 'name' => '山上区', - 'merge_name' => '中国,台湾,台南市,山上区', + 'merge_name' => '中国,台湾省,台南市,山上区', 'level' => 3, 'pinyin' => 'shanshang', 'code' => '06', @@ -62034,7 +62034,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '玉井', 'name' => '玉井区', - 'merge_name' => '中国,台湾,台南市,玉井区', + 'merge_name' => '中国,台湾省,台南市,玉井区', 'level' => 3, 'pinyin' => 'yujing', 'code' => '06', @@ -62052,7 +62052,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '楠西', 'name' => '楠西区', - 'merge_name' => '中国,台湾,台南市,楠西区', + 'merge_name' => '中国,台湾省,台南市,楠西区', 'level' => 3, 'pinyin' => 'nanxi', 'code' => '06', @@ -62070,7 +62070,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '南化', 'name' => '南化区', - 'merge_name' => '中国,台湾,台南市,南化区', + 'merge_name' => '中国,台湾省,台南市,南化区', 'level' => 3, 'pinyin' => 'nanhua', 'code' => '06', @@ -62088,7 +62088,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '左镇', 'name' => '左镇区', - 'merge_name' => '中国,台湾,台南市,左镇区', + 'merge_name' => '中国,台湾省,台南市,左镇区', 'level' => 3, 'pinyin' => 'zuozhen', 'code' => '06', @@ -62106,7 +62106,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '仁德', 'name' => '仁德区', - 'merge_name' => '中国,台湾,台南市,仁德区', + 'merge_name' => '中国,台湾省,台南市,仁德区', 'level' => 3, 'pinyin' => 'rende', 'code' => '06', @@ -62124,7 +62124,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '归仁', 'name' => '归仁区', - 'merge_name' => '中国,台湾,台南市,归仁区', + 'merge_name' => '中国,台湾省,台南市,归仁区', 'level' => 3, 'pinyin' => 'guiren', 'code' => '06', @@ -62142,7 +62142,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '关庙', 'name' => '关庙区', - 'merge_name' => '中国,台湾,台南市,关庙区', + 'merge_name' => '中国,台湾省,台南市,关庙区', 'level' => 3, 'pinyin' => 'guanmiao', 'code' => '06', @@ -62160,7 +62160,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '龙崎', 'name' => '龙崎区', - 'merge_name' => '中国,台湾,台南市,龙崎区', + 'merge_name' => '中国,台湾省,台南市,龙崎区', 'level' => 3, 'pinyin' => 'longqi', 'code' => '06', @@ -62178,7 +62178,7 @@ class Area extends Migrator 'pid' => 3416, 'short_name' => '永康', 'name' => '永康区', - 'merge_name' => '中国,台湾,台南市,永康区', + 'merge_name' => '中国,台湾省,台南市,永康区', 'level' => 3, 'pinyin' => 'yongkang', 'code' => '06', @@ -62196,7 +62196,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '新竹', 'name' => '新竹市', - 'merge_name' => '中国,台湾,新竹市', + 'merge_name' => '中国,台湾省,新竹市', 'level' => 2, 'pinyin' => 'hsinchu', 'code' => '03', @@ -62214,7 +62214,7 @@ class Area extends Migrator 'pid' => 3454, 'short_name' => '东区', 'name' => '东区', - 'merge_name' => '中国,台湾,新竹市,东区', + 'merge_name' => '中国,台湾省,新竹市,东区', 'level' => 3, 'pinyin' => 'dongqu', 'code' => '03', @@ -62232,7 +62232,7 @@ class Area extends Migrator 'pid' => 3454, 'short_name' => '北区', 'name' => '北区', - 'merge_name' => '中国,台湾,新竹市,北区', + 'merge_name' => '中国,台湾省,新竹市,北区', 'level' => 3, 'pinyin' => 'beiqu', 'code' => '03', @@ -62250,7 +62250,7 @@ class Area extends Migrator 'pid' => 3454, 'short_name' => '香山', 'name' => '香山区', - 'merge_name' => '中国,台湾,新竹市,香山区', + 'merge_name' => '中国,台湾省,新竹市,香山区', 'level' => 3, 'pinyin' => 'xiangshan', 'code' => '03', @@ -62268,7 +62268,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '嘉义', 'name' => '嘉义市', - 'merge_name' => '中国,台湾,嘉义市', + 'merge_name' => '中国,台湾省,嘉义市', 'level' => 2, 'pinyin' => 'chiayi', 'code' => '05', @@ -62286,7 +62286,7 @@ class Area extends Migrator 'pid' => 3458, 'short_name' => '东区', 'name' => '东区', - 'merge_name' => '中国,台湾,嘉义市,东区', + 'merge_name' => '中国,台湾省,嘉义市,东区', 'level' => 3, 'pinyin' => 'dongqu', 'code' => '05', @@ -62304,7 +62304,7 @@ class Area extends Migrator 'pid' => 3458, 'short_name' => '西区', 'name' => '西区', - 'merge_name' => '中国,台湾,嘉义市,西区', + 'merge_name' => '中国,台湾省,嘉义市,西区', 'level' => 3, 'pinyin' => 'xiqu', 'code' => '05', @@ -62322,7 +62322,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '新北', 'name' => '新北市', - 'merge_name' => '中国,台湾,新北市', + 'merge_name' => '中国,台湾省,新北市', 'level' => 2, 'pinyin' => 'newtaipei', 'code' => '02', @@ -62340,7 +62340,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '板桥', 'name' => '板桥区', - 'merge_name' => '中国,台湾,新北市,板桥区', + 'merge_name' => '中国,台湾省,新北市,板桥区', 'level' => 3, 'pinyin' => 'banqiao', 'code' => '02', @@ -62358,7 +62358,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '三重', 'name' => '三重区', - 'merge_name' => '中国,台湾,新北市,三重区', + 'merge_name' => '中国,台湾省,新北市,三重区', 'level' => 3, 'pinyin' => 'sanzhong', 'code' => '02', @@ -62376,7 +62376,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '中和', 'name' => '中和区', - 'merge_name' => '中国,台湾,新北市,中和区', + 'merge_name' => '中国,台湾省,新北市,中和区', 'level' => 3, 'pinyin' => 'zhonghe', 'code' => '02', @@ -62394,7 +62394,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '永和', 'name' => '永和区', - 'merge_name' => '中国,台湾,新北市,永和区', + 'merge_name' => '中国,台湾省,新北市,永和区', 'level' => 3, 'pinyin' => 'yonghe', 'code' => '02', @@ -62412,7 +62412,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '新庄', 'name' => '新庄区', - 'merge_name' => '中国,台湾,新北市,新庄区', + 'merge_name' => '中国,台湾省,新北市,新庄区', 'level' => 3, 'pinyin' => 'xinzhuang', 'code' => '02', @@ -62430,7 +62430,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '新店', 'name' => '新店区', - 'merge_name' => '中国,台湾,新北市,新店区', + 'merge_name' => '中国,台湾省,新北市,新店区', 'level' => 3, 'pinyin' => 'xindian', 'code' => '02', @@ -62448,7 +62448,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '树林', 'name' => '树林区', - 'merge_name' => '中国,台湾,新北市,树林区', + 'merge_name' => '中国,台湾省,新北市,树林区', 'level' => 3, 'pinyin' => 'shulin', 'code' => '02', @@ -62466,7 +62466,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '莺歌', 'name' => '莺歌区', - 'merge_name' => '中国,台湾,新北市,莺歌区', + 'merge_name' => '中国,台湾省,新北市,莺歌区', 'level' => 3, 'pinyin' => 'yingge', 'code' => '02', @@ -62484,7 +62484,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '三峡', 'name' => '三峡区', - 'merge_name' => '中国,台湾,新北市,三峡区', + 'merge_name' => '中国,台湾省,新北市,三峡区', 'level' => 3, 'pinyin' => 'sanxia', 'code' => '02', @@ -62502,7 +62502,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '淡水', 'name' => '淡水区', - 'merge_name' => '中国,台湾,新北市,淡水区', + 'merge_name' => '中国,台湾省,新北市,淡水区', 'level' => 3, 'pinyin' => 'danshui', 'code' => '02', @@ -62520,7 +62520,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '汐止', 'name' => '汐止区', - 'merge_name' => '中国,台湾,新北市,汐止区', + 'merge_name' => '中国,台湾省,新北市,汐止区', 'level' => 3, 'pinyin' => 'xizhi', 'code' => '02', @@ -62538,7 +62538,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '瑞芳', 'name' => '瑞芳区', - 'merge_name' => '中国,台湾,新北市,瑞芳区', + 'merge_name' => '中国,台湾省,新北市,瑞芳区', 'level' => 3, 'pinyin' => 'ruifang', 'code' => '02', @@ -62556,7 +62556,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '土城', 'name' => '土城区', - 'merge_name' => '中国,台湾,新北市,土城区', + 'merge_name' => '中国,台湾省,新北市,土城区', 'level' => 3, 'pinyin' => 'tucheng', 'code' => '02', @@ -62574,7 +62574,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '芦洲', 'name' => '芦洲区', - 'merge_name' => '中国,台湾,新北市,芦洲区', + 'merge_name' => '中国,台湾省,新北市,芦洲区', 'level' => 3, 'pinyin' => 'luzhou', 'code' => '02', @@ -62592,7 +62592,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '五股', 'name' => '五股区', - 'merge_name' => '中国,台湾,新北市,五股区', + 'merge_name' => '中国,台湾省,新北市,五股区', 'level' => 3, 'pinyin' => 'wugu', 'code' => '02', @@ -62610,7 +62610,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '泰山', 'name' => '泰山区', - 'merge_name' => '中国,台湾,新北市,泰山区', + 'merge_name' => '中国,台湾省,新北市,泰山区', 'level' => 3, 'pinyin' => 'taishan', 'code' => '02', @@ -62628,7 +62628,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '林口', 'name' => '林口区', - 'merge_name' => '中国,台湾,新北市,林口区', + 'merge_name' => '中国,台湾省,新北市,林口区', 'level' => 3, 'pinyin' => 'linkou', 'code' => '02', @@ -62646,7 +62646,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '深坑', 'name' => '深坑区', - 'merge_name' => '中国,台湾,新北市,深坑区', + 'merge_name' => '中国,台湾省,新北市,深坑区', 'level' => 3, 'pinyin' => 'shenkeng', 'code' => '02', @@ -62664,7 +62664,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '石碇', 'name' => '石碇区', - 'merge_name' => '中国,台湾,新北市,石碇区', + 'merge_name' => '中国,台湾省,新北市,石碇区', 'level' => 3, 'pinyin' => 'shiding', 'code' => '02', @@ -62682,7 +62682,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '坪林', 'name' => '坪林区', - 'merge_name' => '中国,台湾,新北市,坪林区', + 'merge_name' => '中国,台湾省,新北市,坪林区', 'level' => 3, 'pinyin' => 'pinglin', 'code' => '02', @@ -62700,7 +62700,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '三芝', 'name' => '三芝区', - 'merge_name' => '中国,台湾,新北市,三芝区', + 'merge_name' => '中国,台湾省,新北市,三芝区', 'level' => 3, 'pinyin' => 'sanzhi', 'code' => '02', @@ -62718,7 +62718,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '石门', 'name' => '石门区', - 'merge_name' => '中国,台湾,新北市,石门区', + 'merge_name' => '中国,台湾省,新北市,石门区', 'level' => 3, 'pinyin' => 'shimen', 'code' => '02', @@ -62736,7 +62736,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '八里', 'name' => '八里区', - 'merge_name' => '中国,台湾,新北市,八里区', + 'merge_name' => '中国,台湾省,新北市,八里区', 'level' => 3, 'pinyin' => 'bali', 'code' => '02', @@ -62754,7 +62754,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '平溪', 'name' => '平溪区', - 'merge_name' => '中国,台湾,新北市,平溪区', + 'merge_name' => '中国,台湾省,新北市,平溪区', 'level' => 3, 'pinyin' => 'pingxi', 'code' => '02', @@ -62772,7 +62772,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '双溪', 'name' => '双溪区', - 'merge_name' => '中国,台湾,新北市,双溪区', + 'merge_name' => '中国,台湾省,新北市,双溪区', 'level' => 3, 'pinyin' => 'shuangxi', 'code' => '02', @@ -62790,7 +62790,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '贡寮', 'name' => '贡寮区', - 'merge_name' => '中国,台湾,新北市,贡寮区', + 'merge_name' => '中国,台湾省,新北市,贡寮区', 'level' => 3, 'pinyin' => 'gongliao', 'code' => '02', @@ -62808,7 +62808,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '金山', 'name' => '金山区', - 'merge_name' => '中国,台湾,新北市,金山区', + 'merge_name' => '中国,台湾省,新北市,金山区', 'level' => 3, 'pinyin' => 'jinshan', 'code' => '02', @@ -62826,7 +62826,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '万里', 'name' => '万里区', - 'merge_name' => '中国,台湾,新北市,万里区', + 'merge_name' => '中国,台湾省,新北市,万里区', 'level' => 3, 'pinyin' => 'wanli', 'code' => '02', @@ -62844,7 +62844,7 @@ class Area extends Migrator 'pid' => 3461, 'short_name' => '乌来', 'name' => '乌来区', - 'merge_name' => '中国,台湾,新北市,乌来区', + 'merge_name' => '中国,台湾省,新北市,乌来区', 'level' => 3, 'pinyin' => 'wulai', 'code' => '02', @@ -62862,7 +62862,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '宜兰', 'name' => '宜兰县', - 'merge_name' => '中国,台湾,宜兰县', + 'merge_name' => '中国,台湾省,宜兰县', 'level' => 2, 'pinyin' => 'yilan', 'code' => '03', @@ -62880,7 +62880,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '宜兰', 'name' => '宜兰市', - 'merge_name' => '中国,台湾,宜兰县,宜兰市', + 'merge_name' => '中国,台湾省,宜兰县,宜兰市', 'level' => 3, 'pinyin' => 'yilan', 'code' => '03', @@ -62898,7 +62898,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '罗东', 'name' => '罗东镇', - 'merge_name' => '中国,台湾,宜兰县,罗东镇', + 'merge_name' => '中国,台湾省,宜兰县,罗东镇', 'level' => 3, 'pinyin' => 'luodong', 'code' => '03', @@ -62916,7 +62916,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '苏澳', 'name' => '苏澳镇', - 'merge_name' => '中国,台湾,宜兰县,苏澳镇', + 'merge_name' => '中国,台湾省,宜兰县,苏澳镇', 'level' => 3, 'pinyin' => 'suao', 'code' => '03', @@ -62934,7 +62934,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '头城', 'name' => '头城镇', - 'merge_name' => '中国,台湾,宜兰县,头城镇', + 'merge_name' => '中国,台湾省,宜兰县,头城镇', 'level' => 3, 'pinyin' => 'toucheng', 'code' => '03', @@ -62952,7 +62952,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '礁溪', 'name' => '礁溪乡', - 'merge_name' => '中国,台湾,宜兰县,礁溪乡', + 'merge_name' => '中国,台湾省,宜兰县,礁溪乡', 'level' => 3, 'pinyin' => 'jiaoxi', 'code' => '03', @@ -62970,7 +62970,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '壮围', 'name' => '壮围乡', - 'merge_name' => '中国,台湾,宜兰县,壮围乡', + 'merge_name' => '中国,台湾省,宜兰县,壮围乡', 'level' => 3, 'pinyin' => 'zhuangwei', 'code' => '03', @@ -62988,7 +62988,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '员山', 'name' => '员山乡', - 'merge_name' => '中国,台湾,宜兰县,员山乡', + 'merge_name' => '中国,台湾省,宜兰县,员山乡', 'level' => 3, 'pinyin' => 'yuanshan', 'code' => '03', @@ -63006,7 +63006,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '冬山', 'name' => '冬山乡', - 'merge_name' => '中国,台湾,宜兰县,冬山乡', + 'merge_name' => '中国,台湾省,宜兰县,冬山乡', 'level' => 3, 'pinyin' => 'dongshan', 'code' => '03', @@ -63024,7 +63024,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '五结', 'name' => '五结乡', - 'merge_name' => '中国,台湾,宜兰县,五结乡', + 'merge_name' => '中国,台湾省,宜兰县,五结乡', 'level' => 3, 'pinyin' => 'wujie', 'code' => '03', @@ -63042,7 +63042,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '三星', 'name' => '三星乡', - 'merge_name' => '中国,台湾,宜兰县,三星乡', + 'merge_name' => '中国,台湾省,宜兰县,三星乡', 'level' => 3, 'pinyin' => 'sanxing', 'code' => '03', @@ -63060,7 +63060,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '大同', 'name' => '大同乡', - 'merge_name' => '中国,台湾,宜兰县,大同乡', + 'merge_name' => '中国,台湾省,宜兰县,大同乡', 'level' => 3, 'pinyin' => 'datong', 'code' => '03', @@ -63078,7 +63078,7 @@ class Area extends Migrator 'pid' => 3491, 'short_name' => '南澳', 'name' => '南澳乡', - 'merge_name' => '中国,台湾,宜兰县,南澳乡', + 'merge_name' => '中国,台湾省,宜兰县,南澳乡', 'level' => 3, 'pinyin' => 'nanao', 'code' => '03', @@ -63096,7 +63096,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '桃园', 'name' => '桃园县', - 'merge_name' => '中国,台湾,桃园县', + 'merge_name' => '中国,台湾省,桃园县', 'level' => 2, 'pinyin' => 'taoyuan', 'code' => '03', @@ -63114,7 +63114,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '桃园', 'name' => '桃园市', - 'merge_name' => '中国,台湾,桃园县,桃园市', + 'merge_name' => '中国,台湾省,桃园县,桃园市', 'level' => 3, 'pinyin' => 'taoyuan', 'code' => '03', @@ -63132,7 +63132,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '中坜', 'name' => '中坜市', - 'merge_name' => '中国,台湾,桃园县,中坜市', + 'merge_name' => '中国,台湾省,桃园县,中坜市', 'level' => 3, 'pinyin' => 'zhongli', 'code' => '03', @@ -63150,7 +63150,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '平镇', 'name' => '平镇市', - 'merge_name' => '中国,台湾,桃园县,平镇市', + 'merge_name' => '中国,台湾省,桃园县,平镇市', 'level' => 3, 'pinyin' => 'pingzhen', 'code' => '03', @@ -63168,7 +63168,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '八德', 'name' => '八德市', - 'merge_name' => '中国,台湾,桃园县,八德市', + 'merge_name' => '中国,台湾省,桃园县,八德市', 'level' => 3, 'pinyin' => 'bade', 'code' => '03', @@ -63186,7 +63186,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '杨梅', 'name' => '杨梅市', - 'merge_name' => '中国,台湾,桃园县,杨梅市', + 'merge_name' => '中国,台湾省,桃园县,杨梅市', 'level' => 3, 'pinyin' => 'yangmei', 'code' => '03', @@ -63204,7 +63204,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '芦竹', 'name' => '芦竹市', - 'merge_name' => '中国,台湾,桃园县,芦竹市', + 'merge_name' => '中国,台湾省,桃园县,芦竹市', 'level' => 3, 'pinyin' => 'luzhu', 'code' => '03', @@ -63222,7 +63222,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '大溪', 'name' => '大溪镇', - 'merge_name' => '中国,台湾,桃园县,大溪镇', + 'merge_name' => '中国,台湾省,桃园县,大溪镇', 'level' => 3, 'pinyin' => 'daxi', 'code' => '03', @@ -63240,7 +63240,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '大园', 'name' => '大园乡', - 'merge_name' => '中国,台湾,桃园县,大园乡', + 'merge_name' => '中国,台湾省,桃园县,大园乡', 'level' => 3, 'pinyin' => 'dayuan', 'code' => '03', @@ -63258,7 +63258,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '龟山', 'name' => '龟山乡', - 'merge_name' => '中国,台湾,桃园县,龟山乡', + 'merge_name' => '中国,台湾省,桃园县,龟山乡', 'level' => 3, 'pinyin' => 'guishan', 'code' => '03', @@ -63276,7 +63276,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '龙潭', 'name' => '龙潭乡', - 'merge_name' => '中国,台湾,桃园县,龙潭乡', + 'merge_name' => '中国,台湾省,桃园县,龙潭乡', 'level' => 3, 'pinyin' => 'longtan', 'code' => '03', @@ -63294,7 +63294,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '新屋', 'name' => '新屋乡', - 'merge_name' => '中国,台湾,桃园县,新屋乡', + 'merge_name' => '中国,台湾省,桃园县,新屋乡', 'level' => 3, 'pinyin' => 'xinwu', 'code' => '03', @@ -63312,7 +63312,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '观音', 'name' => '观音乡', - 'merge_name' => '中国,台湾,桃园县,观音乡', + 'merge_name' => '中国,台湾省,桃园县,观音乡', 'level' => 3, 'pinyin' => 'guanyin', 'code' => '03', @@ -63330,7 +63330,7 @@ class Area extends Migrator 'pid' => 3504, 'short_name' => '复兴', 'name' => '复兴乡', - 'merge_name' => '中国,台湾,桃园县,复兴乡', + 'merge_name' => '中国,台湾省,桃园县,复兴乡', 'level' => 3, 'pinyin' => 'fuxing', 'code' => '03', @@ -63348,7 +63348,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '新竹', 'name' => '新竹县', - 'merge_name' => '中国,台湾,新竹县', + 'merge_name' => '中国,台湾省,新竹县', 'level' => 2, 'pinyin' => 'hsinchu', 'code' => '03', @@ -63366,7 +63366,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '竹北', 'name' => '竹北市', - 'merge_name' => '中国,台湾,新竹县,竹北市', + 'merge_name' => '中国,台湾省,新竹县,竹北市', 'level' => 3, 'pinyin' => 'zhubei', 'code' => '03', @@ -63384,7 +63384,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '竹东', 'name' => '竹东镇', - 'merge_name' => '中国,台湾,新竹县,竹东镇', + 'merge_name' => '中国,台湾省,新竹县,竹东镇', 'level' => 3, 'pinyin' => 'zhudong', 'code' => '03', @@ -63402,7 +63402,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '新埔', 'name' => '新埔镇', - 'merge_name' => '中国,台湾,新竹县,新埔镇', + 'merge_name' => '中国,台湾省,新竹县,新埔镇', 'level' => 3, 'pinyin' => 'xinpu', 'code' => '03', @@ -63420,7 +63420,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '关西', 'name' => '关西镇', - 'merge_name' => '中国,台湾,新竹县,关西镇', + 'merge_name' => '中国,台湾省,新竹县,关西镇', 'level' => 3, 'pinyin' => 'guanxi', 'code' => '03', @@ -63438,7 +63438,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '湖口', 'name' => '湖口乡', - 'merge_name' => '中国,台湾,新竹县,湖口乡', + 'merge_name' => '中国,台湾省,新竹县,湖口乡', 'level' => 3, 'pinyin' => 'hukou', 'code' => '03', @@ -63456,7 +63456,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '新丰', 'name' => '新丰乡', - 'merge_name' => '中国,台湾,新竹县,新丰乡', + 'merge_name' => '中国,台湾省,新竹县,新丰乡', 'level' => 3, 'pinyin' => 'xinfeng', 'code' => '03', @@ -63474,7 +63474,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '芎林', 'name' => '芎林乡', - 'merge_name' => '中国,台湾,新竹县,芎林乡', + 'merge_name' => '中国,台湾省,新竹县,芎林乡', 'level' => 3, 'pinyin' => 'xionglin', 'code' => '03', @@ -63492,7 +63492,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '横山', 'name' => '横山乡', - 'merge_name' => '中国,台湾,新竹县,横山乡', + 'merge_name' => '中国,台湾省,新竹县,横山乡', 'level' => 3, 'pinyin' => 'hengshan', 'code' => '03', @@ -63510,7 +63510,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '北埔', 'name' => '北埔乡', - 'merge_name' => '中国,台湾,新竹县,北埔乡', + 'merge_name' => '中国,台湾省,新竹县,北埔乡', 'level' => 3, 'pinyin' => 'beipu', 'code' => '03', @@ -63528,7 +63528,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '宝山', 'name' => '宝山乡', - 'merge_name' => '中国,台湾,新竹县,宝山乡', + 'merge_name' => '中国,台湾省,新竹县,宝山乡', 'level' => 3, 'pinyin' => 'baoshan', 'code' => '03', @@ -63546,7 +63546,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '峨眉', 'name' => '峨眉乡', - 'merge_name' => '中国,台湾,新竹县,峨眉乡', + 'merge_name' => '中国,台湾省,新竹县,峨眉乡', 'level' => 3, 'pinyin' => 'emei', 'code' => '03', @@ -63564,7 +63564,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '尖石', 'name' => '尖石乡', - 'merge_name' => '中国,台湾,新竹县,尖石乡', + 'merge_name' => '中国,台湾省,新竹县,尖石乡', 'level' => 3, 'pinyin' => 'jianshi', 'code' => '03', @@ -63582,7 +63582,7 @@ class Area extends Migrator 'pid' => 3518, 'short_name' => '五峰', 'name' => '五峰乡', - 'merge_name' => '中国,台湾,新竹县,五峰乡', + 'merge_name' => '中国,台湾省,新竹县,五峰乡', 'level' => 3, 'pinyin' => 'wufeng', 'code' => '03', @@ -63600,7 +63600,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '苗栗', 'name' => '苗栗县', - 'merge_name' => '中国,台湾,苗栗县', + 'merge_name' => '中国,台湾省,苗栗县', 'level' => 2, 'pinyin' => 'miaoli', 'code' => '037', @@ -63618,7 +63618,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '苗栗', 'name' => '苗栗市', - 'merge_name' => '中国,台湾,苗栗县,苗栗市', + 'merge_name' => '中国,台湾省,苗栗县,苗栗市', 'level' => 3, 'pinyin' => 'miaoli', 'code' => '037', @@ -63636,7 +63636,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '苑里', 'name' => '苑里镇', - 'merge_name' => '中国,台湾,苗栗县,苑里镇', + 'merge_name' => '中国,台湾省,苗栗县,苑里镇', 'level' => 3, 'pinyin' => 'yuanli', 'code' => '037', @@ -63654,7 +63654,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '通霄', 'name' => '通霄镇', - 'merge_name' => '中国,台湾,苗栗县,通霄镇', + 'merge_name' => '中国,台湾省,苗栗县,通霄镇', 'level' => 3, 'pinyin' => 'tongxiao', 'code' => '037', @@ -63672,7 +63672,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '竹南', 'name' => '竹南镇', - 'merge_name' => '中国,台湾,苗栗县,竹南镇', + 'merge_name' => '中国,台湾省,苗栗县,竹南镇', 'level' => 3, 'pinyin' => 'zhunan', 'code' => '037', @@ -63690,7 +63690,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '头份', 'name' => '头份镇', - 'merge_name' => '中国,台湾,苗栗县,头份镇', + 'merge_name' => '中国,台湾省,苗栗县,头份镇', 'level' => 3, 'pinyin' => 'toufen', 'code' => '037', @@ -63708,7 +63708,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '后龙', 'name' => '后龙镇', - 'merge_name' => '中国,台湾,苗栗县,后龙镇', + 'merge_name' => '中国,台湾省,苗栗县,后龙镇', 'level' => 3, 'pinyin' => 'houlong', 'code' => '037', @@ -63726,7 +63726,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '卓兰', 'name' => '卓兰镇', - 'merge_name' => '中国,台湾,苗栗县,卓兰镇', + 'merge_name' => '中国,台湾省,苗栗县,卓兰镇', 'level' => 3, 'pinyin' => 'zhuolan', 'code' => '037', @@ -63744,7 +63744,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '大湖', 'name' => '大湖乡', - 'merge_name' => '中国,台湾,苗栗县,大湖乡', + 'merge_name' => '中国,台湾省,苗栗县,大湖乡', 'level' => 3, 'pinyin' => 'dahu', 'code' => '037', @@ -63762,7 +63762,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '公馆', 'name' => '公馆乡', - 'merge_name' => '中国,台湾,苗栗县,公馆乡', + 'merge_name' => '中国,台湾省,苗栗县,公馆乡', 'level' => 3, 'pinyin' => 'gongguan', 'code' => '037', @@ -63780,7 +63780,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '铜锣', 'name' => '铜锣乡', - 'merge_name' => '中国,台湾,苗栗县,铜锣乡', + 'merge_name' => '中国,台湾省,苗栗县,铜锣乡', 'level' => 3, 'pinyin' => 'tongluo', 'code' => '037', @@ -63798,7 +63798,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '南庄', 'name' => '南庄乡', - 'merge_name' => '中国,台湾,苗栗县,南庄乡', + 'merge_name' => '中国,台湾省,苗栗县,南庄乡', 'level' => 3, 'pinyin' => 'nanzhuang', 'code' => '037', @@ -63816,7 +63816,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '头屋', 'name' => '头屋乡', - 'merge_name' => '中国,台湾,苗栗县,头屋乡', + 'merge_name' => '中国,台湾省,苗栗县,头屋乡', 'level' => 3, 'pinyin' => 'touwu', 'code' => '037', @@ -63834,7 +63834,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '三义', 'name' => '三义乡', - 'merge_name' => '中国,台湾,苗栗县,三义乡', + 'merge_name' => '中国,台湾省,苗栗县,三义乡', 'level' => 3, 'pinyin' => 'sanyi', 'code' => '037', @@ -63852,7 +63852,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '西湖', 'name' => '西湖乡', - 'merge_name' => '中国,台湾,苗栗县,西湖乡', + 'merge_name' => '中国,台湾省,苗栗县,西湖乡', 'level' => 3, 'pinyin' => 'xihu', 'code' => '037', @@ -63870,7 +63870,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '造桥', 'name' => '造桥乡', - 'merge_name' => '中国,台湾,苗栗县,造桥乡', + 'merge_name' => '中国,台湾省,苗栗县,造桥乡', 'level' => 3, 'pinyin' => 'zaoqiao', 'code' => '037', @@ -63888,7 +63888,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '三湾', 'name' => '三湾乡', - 'merge_name' => '中国,台湾,苗栗县,三湾乡', + 'merge_name' => '中国,台湾省,苗栗县,三湾乡', 'level' => 3, 'pinyin' => 'sanwan', 'code' => '037', @@ -63906,7 +63906,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '狮潭', 'name' => '狮潭乡', - 'merge_name' => '中国,台湾,苗栗县,狮潭乡', + 'merge_name' => '中国,台湾省,苗栗县,狮潭乡', 'level' => 3, 'pinyin' => 'shitan', 'code' => '037', @@ -63924,7 +63924,7 @@ class Area extends Migrator 'pid' => 3532, 'short_name' => '泰安', 'name' => '泰安乡', - 'merge_name' => '中国,台湾,苗栗县,泰安乡', + 'merge_name' => '中国,台湾省,苗栗县,泰安乡', 'level' => 3, 'pinyin' => 'tai\'an', 'code' => '037', @@ -63942,7 +63942,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '彰化', 'name' => '彰化县', - 'merge_name' => '中国,台湾,彰化县', + 'merge_name' => '中国,台湾省,彰化县', 'level' => 2, 'pinyin' => 'changhua', 'code' => '04', @@ -63960,7 +63960,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '彰化市', 'name' => '彰化市', - 'merge_name' => '中国,台湾,彰化县,彰化市', + 'merge_name' => '中国,台湾省,彰化县,彰化市', 'level' => 3, 'pinyin' => 'zhanghuashi', 'code' => '04', @@ -63978,7 +63978,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '鹿港', 'name' => '鹿港镇', - 'merge_name' => '中国,台湾,彰化县,鹿港镇', + 'merge_name' => '中国,台湾省,彰化县,鹿港镇', 'level' => 3, 'pinyin' => 'lugang', 'code' => '04', @@ -63996,7 +63996,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '和美', 'name' => '和美镇', - 'merge_name' => '中国,台湾,彰化县,和美镇', + 'merge_name' => '中国,台湾省,彰化县,和美镇', 'level' => 3, 'pinyin' => 'hemei', 'code' => '04', @@ -64014,7 +64014,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '线西', 'name' => '线西乡', - 'merge_name' => '中国,台湾,彰化县,线西乡', + 'merge_name' => '中国,台湾省,彰化县,线西乡', 'level' => 3, 'pinyin' => 'xianxi', 'code' => '04', @@ -64032,7 +64032,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '伸港', 'name' => '伸港乡', - 'merge_name' => '中国,台湾,彰化县,伸港乡', + 'merge_name' => '中国,台湾省,彰化县,伸港乡', 'level' => 3, 'pinyin' => 'shengang', 'code' => '04', @@ -64050,7 +64050,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '福兴', 'name' => '福兴乡', - 'merge_name' => '中国,台湾,彰化县,福兴乡', + 'merge_name' => '中国,台湾省,彰化县,福兴乡', 'level' => 3, 'pinyin' => 'fuxing', 'code' => '04', @@ -64068,7 +64068,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '秀水', 'name' => '秀水乡', - 'merge_name' => '中国,台湾,彰化县,秀水乡', + 'merge_name' => '中国,台湾省,彰化县,秀水乡', 'level' => 3, 'pinyin' => 'xiushui', 'code' => '04', @@ -64086,7 +64086,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '花坛', 'name' => '花坛乡', - 'merge_name' => '中国,台湾,彰化县,花坛乡', + 'merge_name' => '中国,台湾省,彰化县,花坛乡', 'level' => 3, 'pinyin' => 'huatan', 'code' => '04', @@ -64104,7 +64104,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '芬园', 'name' => '芬园乡', - 'merge_name' => '中国,台湾,彰化县,芬园乡', + 'merge_name' => '中国,台湾省,彰化县,芬园乡', 'level' => 3, 'pinyin' => 'fenyuan', 'code' => '04', @@ -64122,7 +64122,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '员林', 'name' => '员林镇', - 'merge_name' => '中国,台湾,彰化县,员林镇', + 'merge_name' => '中国,台湾省,彰化县,员林镇', 'level' => 3, 'pinyin' => 'yuanlin', 'code' => '04', @@ -64140,7 +64140,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '溪湖', 'name' => '溪湖镇', - 'merge_name' => '中国,台湾,彰化县,溪湖镇', + 'merge_name' => '中国,台湾省,彰化县,溪湖镇', 'level' => 3, 'pinyin' => 'xihu', 'code' => '04', @@ -64158,7 +64158,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '田中', 'name' => '田中镇', - 'merge_name' => '中国,台湾,彰化县,田中镇', + 'merge_name' => '中国,台湾省,彰化县,田中镇', 'level' => 3, 'pinyin' => 'tianzhong', 'code' => '04', @@ -64176,7 +64176,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '大村', 'name' => '大村乡', - 'merge_name' => '中国,台湾,彰化县,大村乡', + 'merge_name' => '中国,台湾省,彰化县,大村乡', 'level' => 3, 'pinyin' => 'dacun', 'code' => '04', @@ -64194,7 +64194,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '埔盐', 'name' => '埔盐乡', - 'merge_name' => '中国,台湾,彰化县,埔盐乡', + 'merge_name' => '中国,台湾省,彰化县,埔盐乡', 'level' => 3, 'pinyin' => 'puyan', 'code' => '04', @@ -64212,7 +64212,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '埔心', 'name' => '埔心乡', - 'merge_name' => '中国,台湾,彰化县,埔心乡', + 'merge_name' => '中国,台湾省,彰化县,埔心乡', 'level' => 3, 'pinyin' => 'puxin', 'code' => '04', @@ -64230,7 +64230,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '永靖', 'name' => '永靖乡', - 'merge_name' => '中国,台湾,彰化县,永靖乡', + 'merge_name' => '中国,台湾省,彰化县,永靖乡', 'level' => 3, 'pinyin' => 'yongjing', 'code' => '04', @@ -64248,7 +64248,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '社头', 'name' => '社头乡', - 'merge_name' => '中国,台湾,彰化县,社头乡', + 'merge_name' => '中国,台湾省,彰化县,社头乡', 'level' => 3, 'pinyin' => 'shetou', 'code' => '04', @@ -64266,7 +64266,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '二水', 'name' => '二水乡', - 'merge_name' => '中国,台湾,彰化县,二水乡', + 'merge_name' => '中国,台湾省,彰化县,二水乡', 'level' => 3, 'pinyin' => 'ershui', 'code' => '04', @@ -64284,7 +64284,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '北斗', 'name' => '北斗镇', - 'merge_name' => '中国,台湾,彰化县,北斗镇', + 'merge_name' => '中国,台湾省,彰化县,北斗镇', 'level' => 3, 'pinyin' => 'beidou', 'code' => '04', @@ -64302,7 +64302,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '二林', 'name' => '二林镇', - 'merge_name' => '中国,台湾,彰化县,二林镇', + 'merge_name' => '中国,台湾省,彰化县,二林镇', 'level' => 3, 'pinyin' => 'erlin', 'code' => '04', @@ -64320,7 +64320,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '田尾', 'name' => '田尾乡', - 'merge_name' => '中国,台湾,彰化县,田尾乡', + 'merge_name' => '中国,台湾省,彰化县,田尾乡', 'level' => 3, 'pinyin' => 'tianwei', 'code' => '04', @@ -64338,7 +64338,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '埤头', 'name' => '埤头乡', - 'merge_name' => '中国,台湾,彰化县,埤头乡', + 'merge_name' => '中国,台湾省,彰化县,埤头乡', 'level' => 3, 'pinyin' => 'pitou', 'code' => '04', @@ -64356,7 +64356,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '芳苑', 'name' => '芳苑乡', - 'merge_name' => '中国,台湾,彰化县,芳苑乡', + 'merge_name' => '中国,台湾省,彰化县,芳苑乡', 'level' => 3, 'pinyin' => 'fangyuan', 'code' => '04', @@ -64374,7 +64374,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '大城', 'name' => '大城乡', - 'merge_name' => '中国,台湾,彰化县,大城乡', + 'merge_name' => '中国,台湾省,彰化县,大城乡', 'level' => 3, 'pinyin' => 'dacheng', 'code' => '04', @@ -64392,7 +64392,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '竹塘', 'name' => '竹塘乡', - 'merge_name' => '中国,台湾,彰化县,竹塘乡', + 'merge_name' => '中国,台湾省,彰化县,竹塘乡', 'level' => 3, 'pinyin' => 'zhutang', 'code' => '04', @@ -64410,7 +64410,7 @@ class Area extends Migrator 'pid' => 3551, 'short_name' => '溪州', 'name' => '溪州乡', - 'merge_name' => '中国,台湾,彰化县,溪州乡', + 'merge_name' => '中国,台湾省,彰化县,溪州乡', 'level' => 3, 'pinyin' => 'xizhou', 'code' => '04', @@ -64428,7 +64428,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '南投', 'name' => '南投县', - 'merge_name' => '中国,台湾,南投县', + 'merge_name' => '中国,台湾省,南投县', 'level' => 2, 'pinyin' => 'nantou', 'code' => '049', @@ -64446,7 +64446,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '南投市', 'name' => '南投市', - 'merge_name' => '中国,台湾,南投县,南投市', + 'merge_name' => '中国,台湾省,南投县,南投市', 'level' => 3, 'pinyin' => 'nantoushi', 'code' => '049', @@ -64464,7 +64464,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '埔里', 'name' => '埔里镇', - 'merge_name' => '中国,台湾,南投县,埔里镇', + 'merge_name' => '中国,台湾省,南投县,埔里镇', 'level' => 3, 'pinyin' => 'puli', 'code' => '049', @@ -64482,7 +64482,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '草屯', 'name' => '草屯镇', - 'merge_name' => '中国,台湾,南投县,草屯镇', + 'merge_name' => '中国,台湾省,南投县,草屯镇', 'level' => 3, 'pinyin' => 'caotun', 'code' => '049', @@ -64500,7 +64500,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '竹山', 'name' => '竹山镇', - 'merge_name' => '中国,台湾,南投县,竹山镇', + 'merge_name' => '中国,台湾省,南投县,竹山镇', 'level' => 3, 'pinyin' => 'zhushan', 'code' => '049', @@ -64518,7 +64518,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '集集', 'name' => '集集镇', - 'merge_name' => '中国,台湾,南投县,集集镇', + 'merge_name' => '中国,台湾省,南投县,集集镇', 'level' => 3, 'pinyin' => 'jiji', 'code' => '049', @@ -64536,7 +64536,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '名间', 'name' => '名间乡', - 'merge_name' => '中国,台湾,南投县,名间乡', + 'merge_name' => '中国,台湾省,南投县,名间乡', 'level' => 3, 'pinyin' => 'mingjian', 'code' => '049', @@ -64554,7 +64554,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '鹿谷', 'name' => '鹿谷乡', - 'merge_name' => '中国,台湾,南投县,鹿谷乡', + 'merge_name' => '中国,台湾省,南投县,鹿谷乡', 'level' => 3, 'pinyin' => 'lugu', 'code' => '049', @@ -64572,7 +64572,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '中寮', 'name' => '中寮乡', - 'merge_name' => '中国,台湾,南投县,中寮乡', + 'merge_name' => '中国,台湾省,南投县,中寮乡', 'level' => 3, 'pinyin' => 'zhongliao', 'code' => '049', @@ -64590,7 +64590,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '鱼池', 'name' => '鱼池乡', - 'merge_name' => '中国,台湾,南投县,鱼池乡', + 'merge_name' => '中国,台湾省,南投县,鱼池乡', 'level' => 3, 'pinyin' => 'yuchi', 'code' => '049', @@ -64608,7 +64608,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '国姓', 'name' => '国姓乡', - 'merge_name' => '中国,台湾,南投县,国姓乡', + 'merge_name' => '中国,台湾省,南投县,国姓乡', 'level' => 3, 'pinyin' => 'guoxing', 'code' => '049', @@ -64626,7 +64626,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '水里', 'name' => '水里乡', - 'merge_name' => '中国,台湾,南投县,水里乡', + 'merge_name' => '中国,台湾省,南投县,水里乡', 'level' => 3, 'pinyin' => 'shuili', 'code' => '049', @@ -64644,7 +64644,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '信义', 'name' => '信义乡', - 'merge_name' => '中国,台湾,南投县,信义乡', + 'merge_name' => '中国,台湾省,南投县,信义乡', 'level' => 3, 'pinyin' => 'xinyi', 'code' => '049', @@ -64662,7 +64662,7 @@ class Area extends Migrator 'pid' => 3578, 'short_name' => '仁爱', 'name' => '仁爱乡', - 'merge_name' => '中国,台湾,南投县,仁爱乡', + 'merge_name' => '中国,台湾省,南投县,仁爱乡', 'level' => 3, 'pinyin' => 'renai', 'code' => '049', @@ -64680,7 +64680,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '云林', 'name' => '云林县', - 'merge_name' => '中国,台湾,云林县', + 'merge_name' => '中国,台湾省,云林县', 'level' => 2, 'pinyin' => 'yunlin', 'code' => '05', @@ -64698,7 +64698,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '斗六', 'name' => '斗六市', - 'merge_name' => '中国,台湾,云林县,斗六市', + 'merge_name' => '中国,台湾省,云林县,斗六市', 'level' => 3, 'pinyin' => 'douliu', 'code' => '05', @@ -64716,7 +64716,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '斗南', 'name' => '斗南镇', - 'merge_name' => '中国,台湾,云林县,斗南镇', + 'merge_name' => '中国,台湾省,云林县,斗南镇', 'level' => 3, 'pinyin' => 'dounan', 'code' => '05', @@ -64734,7 +64734,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '虎尾', 'name' => '虎尾镇', - 'merge_name' => '中国,台湾,云林县,虎尾镇', + 'merge_name' => '中国,台湾省,云林县,虎尾镇', 'level' => 3, 'pinyin' => 'huwei', 'code' => '05', @@ -64752,7 +64752,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '西螺', 'name' => '西螺镇', - 'merge_name' => '中国,台湾,云林县,西螺镇', + 'merge_name' => '中国,台湾省,云林县,西螺镇', 'level' => 3, 'pinyin' => 'xiluo', 'code' => '05', @@ -64770,7 +64770,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '土库', 'name' => '土库镇', - 'merge_name' => '中国,台湾,云林县,土库镇', + 'merge_name' => '中国,台湾省,云林县,土库镇', 'level' => 3, 'pinyin' => 'tuku', 'code' => '05', @@ -64788,7 +64788,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '北港', 'name' => '北港镇', - 'merge_name' => '中国,台湾,云林县,北港镇', + 'merge_name' => '中国,台湾省,云林县,北港镇', 'level' => 3, 'pinyin' => 'beigang', 'code' => '05', @@ -64806,7 +64806,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '古坑', 'name' => '古坑乡', - 'merge_name' => '中国,台湾,云林县,古坑乡', + 'merge_name' => '中国,台湾省,云林县,古坑乡', 'level' => 3, 'pinyin' => 'gukeng', 'code' => '05', @@ -64824,7 +64824,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '大埤', 'name' => '大埤乡', - 'merge_name' => '中国,台湾,云林县,大埤乡', + 'merge_name' => '中国,台湾省,云林县,大埤乡', 'level' => 3, 'pinyin' => 'dapi', 'code' => '05', @@ -64842,7 +64842,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '莿桐', 'name' => '莿桐乡', - 'merge_name' => '中国,台湾,云林县,莿桐乡', + 'merge_name' => '中国,台湾省,云林县,莿桐乡', 'level' => 3, 'pinyin' => 'citong', 'code' => '05', @@ -64860,7 +64860,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '林内', 'name' => '林内乡', - 'merge_name' => '中国,台湾,云林县,林内乡', + 'merge_name' => '中国,台湾省,云林县,林内乡', 'level' => 3, 'pinyin' => 'linna', 'code' => '05', @@ -64878,7 +64878,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '二仑', 'name' => '二仑乡', - 'merge_name' => '中国,台湾,云林县,二仑乡', + 'merge_name' => '中国,台湾省,云林县,二仑乡', 'level' => 3, 'pinyin' => 'erlun', 'code' => '05', @@ -64896,7 +64896,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '仑背', 'name' => '仑背乡', - 'merge_name' => '中国,台湾,云林县,仑背乡', + 'merge_name' => '中国,台湾省,云林县,仑背乡', 'level' => 3, 'pinyin' => 'lunbei', 'code' => '05', @@ -64914,7 +64914,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '麦寮', 'name' => '麦寮乡', - 'merge_name' => '中国,台湾,云林县,麦寮乡', + 'merge_name' => '中国,台湾省,云林县,麦寮乡', 'level' => 3, 'pinyin' => 'mailiao', 'code' => '05', @@ -64932,7 +64932,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '东势', 'name' => '东势乡', - 'merge_name' => '中国,台湾,云林县,东势乡', + 'merge_name' => '中国,台湾省,云林县,东势乡', 'level' => 3, 'pinyin' => 'dongshi', 'code' => '05', @@ -64950,7 +64950,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '褒忠', 'name' => '褒忠乡', - 'merge_name' => '中国,台湾,云林县,褒忠乡', + 'merge_name' => '中国,台湾省,云林县,褒忠乡', 'level' => 3, 'pinyin' => 'baozhong', 'code' => '05', @@ -64968,7 +64968,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '台西', 'name' => '台西乡', - 'merge_name' => '中国,台湾,云林县,台西乡', + 'merge_name' => '中国,台湾省,云林县,台西乡', 'level' => 3, 'pinyin' => 'taixi', 'code' => '05', @@ -64986,7 +64986,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '元长', 'name' => '元长乡', - 'merge_name' => '中国,台湾,云林县,元长乡', + 'merge_name' => '中国,台湾省,云林县,元长乡', 'level' => 3, 'pinyin' => 'yuanchang', 'code' => '05', @@ -65004,7 +65004,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '四湖', 'name' => '四湖乡', - 'merge_name' => '中国,台湾,云林县,四湖乡', + 'merge_name' => '中国,台湾省,云林县,四湖乡', 'level' => 3, 'pinyin' => 'sihu', 'code' => '05', @@ -65022,7 +65022,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '口湖', 'name' => '口湖乡', - 'merge_name' => '中国,台湾,云林县,口湖乡', + 'merge_name' => '中国,台湾省,云林县,口湖乡', 'level' => 3, 'pinyin' => 'kouhu', 'code' => '05', @@ -65040,7 +65040,7 @@ class Area extends Migrator 'pid' => 3592, 'short_name' => '水林', 'name' => '水林乡', - 'merge_name' => '中国,台湾,云林县,水林乡', + 'merge_name' => '中国,台湾省,云林县,水林乡', 'level' => 3, 'pinyin' => 'shuilin', 'code' => '05', @@ -65058,7 +65058,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '嘉义', 'name' => '嘉义县', - 'merge_name' => '中国,台湾,嘉义县', + 'merge_name' => '中国,台湾省,嘉义县', 'level' => 2, 'pinyin' => 'chiayi', 'code' => '05', @@ -65076,7 +65076,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '太保', 'name' => '太保市', - 'merge_name' => '中国,台湾,嘉义县,太保市', + 'merge_name' => '中国,台湾省,嘉义县,太保市', 'level' => 3, 'pinyin' => 'taibao', 'code' => '05', @@ -65094,7 +65094,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '朴子', 'name' => '朴子市', - 'merge_name' => '中国,台湾,嘉义县,朴子市', + 'merge_name' => '中国,台湾省,嘉义县,朴子市', 'level' => 3, 'pinyin' => 'puzi', 'code' => '05', @@ -65112,7 +65112,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '布袋', 'name' => '布袋镇', - 'merge_name' => '中国,台湾,嘉义县,布袋镇', + 'merge_name' => '中国,台湾省,嘉义县,布袋镇', 'level' => 3, 'pinyin' => 'budai', 'code' => '05', @@ -65130,7 +65130,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '大林', 'name' => '大林镇', - 'merge_name' => '中国,台湾,嘉义县,大林镇', + 'merge_name' => '中国,台湾省,嘉义县,大林镇', 'level' => 3, 'pinyin' => 'dalin', 'code' => '05', @@ -65148,7 +65148,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '民雄', 'name' => '民雄乡', - 'merge_name' => '中国,台湾,嘉义县,民雄乡', + 'merge_name' => '中国,台湾省,嘉义县,民雄乡', 'level' => 3, 'pinyin' => 'minxiong', 'code' => '05', @@ -65166,7 +65166,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '溪口', 'name' => '溪口乡', - 'merge_name' => '中国,台湾,嘉义县,溪口乡', + 'merge_name' => '中国,台湾省,嘉义县,溪口乡', 'level' => 3, 'pinyin' => 'xikou', 'code' => '05', @@ -65184,7 +65184,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '新港', 'name' => '新港乡', - 'merge_name' => '中国,台湾,嘉义县,新港乡', + 'merge_name' => '中国,台湾省,嘉义县,新港乡', 'level' => 3, 'pinyin' => 'xingang', 'code' => '05', @@ -65202,7 +65202,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '六脚', 'name' => '六脚乡', - 'merge_name' => '中国,台湾,嘉义县,六脚乡', + 'merge_name' => '中国,台湾省,嘉义县,六脚乡', 'level' => 3, 'pinyin' => 'liujiao', 'code' => '05', @@ -65220,7 +65220,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '东石', 'name' => '东石乡', - 'merge_name' => '中国,台湾,嘉义县,东石乡', + 'merge_name' => '中国,台湾省,嘉义县,东石乡', 'level' => 3, 'pinyin' => 'dongshi', 'code' => '05', @@ -65238,7 +65238,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '义竹', 'name' => '义竹乡', - 'merge_name' => '中国,台湾,嘉义县,义竹乡', + 'merge_name' => '中国,台湾省,嘉义县,义竹乡', 'level' => 3, 'pinyin' => 'yizhu', 'code' => '05', @@ -65256,7 +65256,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '鹿草', 'name' => '鹿草乡', - 'merge_name' => '中国,台湾,嘉义县,鹿草乡', + 'merge_name' => '中国,台湾省,嘉义县,鹿草乡', 'level' => 3, 'pinyin' => 'lucao', 'code' => '05', @@ -65274,7 +65274,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '水上', 'name' => '水上乡', - 'merge_name' => '中国,台湾,嘉义县,水上乡', + 'merge_name' => '中国,台湾省,嘉义县,水上乡', 'level' => 3, 'pinyin' => 'shuishang', 'code' => '05', @@ -65292,7 +65292,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '中埔', 'name' => '中埔乡', - 'merge_name' => '中国,台湾,嘉义县,中埔乡', + 'merge_name' => '中国,台湾省,嘉义县,中埔乡', 'level' => 3, 'pinyin' => 'zhongpu', 'code' => '05', @@ -65310,7 +65310,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '竹崎', 'name' => '竹崎乡', - 'merge_name' => '中国,台湾,嘉义县,竹崎乡', + 'merge_name' => '中国,台湾省,嘉义县,竹崎乡', 'level' => 3, 'pinyin' => 'zhuqi', 'code' => '05', @@ -65328,7 +65328,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '梅山', 'name' => '梅山乡', - 'merge_name' => '中国,台湾,嘉义县,梅山乡', + 'merge_name' => '中国,台湾省,嘉义县,梅山乡', 'level' => 3, 'pinyin' => 'meishan', 'code' => '05', @@ -65346,7 +65346,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '番路', 'name' => '番路乡', - 'merge_name' => '中国,台湾,嘉义县,番路乡', + 'merge_name' => '中国,台湾省,嘉义县,番路乡', 'level' => 3, 'pinyin' => 'fanlu', 'code' => '05', @@ -65364,7 +65364,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '大埔', 'name' => '大埔乡', - 'merge_name' => '中国,台湾,嘉义县,大埔乡', + 'merge_name' => '中国,台湾省,嘉义县,大埔乡', 'level' => 3, 'pinyin' => 'dapu', 'code' => '05', @@ -65382,7 +65382,7 @@ class Area extends Migrator 'pid' => 3613, 'short_name' => '阿里山', 'name' => '阿里山乡', - 'merge_name' => '中国,台湾,嘉义县,阿里山乡', + 'merge_name' => '中国,台湾省,嘉义县,阿里山乡', 'level' => 3, 'pinyin' => 'alishan', 'code' => '05', @@ -65400,7 +65400,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '屏东', 'name' => '屏东县', - 'merge_name' => '中国,台湾,屏东县', + 'merge_name' => '中国,台湾省,屏东县', 'level' => 2, 'pinyin' => 'pingtung', 'code' => '08', @@ -65418,7 +65418,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '屏东', 'name' => '屏东市', - 'merge_name' => '中国,台湾,屏东县,屏东市', + 'merge_name' => '中国,台湾省,屏东县,屏东市', 'level' => 3, 'pinyin' => 'pingdong', 'code' => '08', @@ -65436,7 +65436,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '潮州', 'name' => '潮州镇', - 'merge_name' => '中国,台湾,屏东县,潮州镇', + 'merge_name' => '中国,台湾省,屏东县,潮州镇', 'level' => 3, 'pinyin' => 'chaozhou', 'code' => '08', @@ -65454,7 +65454,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '东港', 'name' => '东港镇', - 'merge_name' => '中国,台湾,屏东县,东港镇', + 'merge_name' => '中国,台湾省,屏东县,东港镇', 'level' => 3, 'pinyin' => 'donggang', 'code' => '08', @@ -65472,7 +65472,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '恒春', 'name' => '恒春镇', - 'merge_name' => '中国,台湾,屏东县,恒春镇', + 'merge_name' => '中国,台湾省,屏东县,恒春镇', 'level' => 3, 'pinyin' => 'hengchun', 'code' => '08', @@ -65490,7 +65490,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '万丹', 'name' => '万丹乡', - 'merge_name' => '中国,台湾,屏东县,万丹乡', + 'merge_name' => '中国,台湾省,屏东县,万丹乡', 'level' => 3, 'pinyin' => 'wandan', 'code' => '08', @@ -65508,7 +65508,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '长治', 'name' => '长治乡', - 'merge_name' => '中国,台湾,屏东县,长治乡', + 'merge_name' => '中国,台湾省,屏东县,长治乡', 'level' => 3, 'pinyin' => 'changzhi', 'code' => '08', @@ -65526,7 +65526,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '麟洛', 'name' => '麟洛乡', - 'merge_name' => '中国,台湾,屏东县,麟洛乡', + 'merge_name' => '中国,台湾省,屏东县,麟洛乡', 'level' => 3, 'pinyin' => 'linluo', 'code' => '08', @@ -65544,7 +65544,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '九如', 'name' => '九如乡', - 'merge_name' => '中国,台湾,屏东县,九如乡', + 'merge_name' => '中国,台湾省,屏东县,九如乡', 'level' => 3, 'pinyin' => 'jiuru', 'code' => '08', @@ -65562,7 +65562,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '里港', 'name' => '里港乡', - 'merge_name' => '中国,台湾,屏东县,里港乡', + 'merge_name' => '中国,台湾省,屏东县,里港乡', 'level' => 3, 'pinyin' => 'ligang', 'code' => '08', @@ -65580,7 +65580,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '盐埔', 'name' => '盐埔乡', - 'merge_name' => '中国,台湾,屏东县,盐埔乡', + 'merge_name' => '中国,台湾省,屏东县,盐埔乡', 'level' => 3, 'pinyin' => 'yanpu', 'code' => '08', @@ -65598,7 +65598,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '高树', 'name' => '高树乡', - 'merge_name' => '中国,台湾,屏东县,高树乡', + 'merge_name' => '中国,台湾省,屏东县,高树乡', 'level' => 3, 'pinyin' => 'gaoshu', 'code' => '08', @@ -65616,7 +65616,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '万峦', 'name' => '万峦乡', - 'merge_name' => '中国,台湾,屏东县,万峦乡', + 'merge_name' => '中国,台湾省,屏东县,万峦乡', 'level' => 3, 'pinyin' => 'wanluan', 'code' => '08', @@ -65634,7 +65634,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '内埔', 'name' => '内埔乡', - 'merge_name' => '中国,台湾,屏东县,内埔乡', + 'merge_name' => '中国,台湾省,屏东县,内埔乡', 'level' => 3, 'pinyin' => 'napu', 'code' => '08', @@ -65652,7 +65652,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '竹田', 'name' => '竹田乡', - 'merge_name' => '中国,台湾,屏东县,竹田乡', + 'merge_name' => '中国,台湾省,屏东县,竹田乡', 'level' => 3, 'pinyin' => 'zhutian', 'code' => '08', @@ -65670,7 +65670,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '新埤', 'name' => '新埤乡', - 'merge_name' => '中国,台湾,屏东县,新埤乡', + 'merge_name' => '中国,台湾省,屏东县,新埤乡', 'level' => 3, 'pinyin' => 'xinpi', 'code' => '08', @@ -65688,7 +65688,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '枋寮', 'name' => '枋寮乡', - 'merge_name' => '中国,台湾,屏东县,枋寮乡', + 'merge_name' => '中国,台湾省,屏东县,枋寮乡', 'level' => 3, 'pinyin' => 'fangliao', 'code' => '08', @@ -65706,7 +65706,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '新园', 'name' => '新园乡', - 'merge_name' => '中国,台湾,屏东县,新园乡', + 'merge_name' => '中国,台湾省,屏东县,新园乡', 'level' => 3, 'pinyin' => 'xinyuan', 'code' => '08', @@ -65724,7 +65724,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '崁顶', 'name' => '崁顶乡', - 'merge_name' => '中国,台湾,屏东县,崁顶乡', + 'merge_name' => '中国,台湾省,屏东县,崁顶乡', 'level' => 3, 'pinyin' => 'kanding', 'code' => '08', @@ -65742,7 +65742,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '林边', 'name' => '林边乡', - 'merge_name' => '中国,台湾,屏东县,林边乡', + 'merge_name' => '中国,台湾省,屏东县,林边乡', 'level' => 3, 'pinyin' => 'linbian', 'code' => '08', @@ -65760,7 +65760,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '南州', 'name' => '南州乡', - 'merge_name' => '中国,台湾,屏东县,南州乡', + 'merge_name' => '中国,台湾省,屏东县,南州乡', 'level' => 3, 'pinyin' => 'nanzhou', 'code' => '08', @@ -65778,7 +65778,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '佳冬', 'name' => '佳冬乡', - 'merge_name' => '中国,台湾,屏东县,佳冬乡', + 'merge_name' => '中国,台湾省,屏东县,佳冬乡', 'level' => 3, 'pinyin' => 'jiadong', 'code' => '08', @@ -65796,7 +65796,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '琉球', 'name' => '琉球乡', - 'merge_name' => '中国,台湾,屏东县,琉球乡', + 'merge_name' => '中国,台湾省,屏东县,琉球乡', 'level' => 3, 'pinyin' => 'liuqiu', 'code' => '08', @@ -65814,7 +65814,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '车城', 'name' => '车城乡', - 'merge_name' => '中国,台湾,屏东县,车城乡', + 'merge_name' => '中国,台湾省,屏东县,车城乡', 'level' => 3, 'pinyin' => 'checheng', 'code' => '08', @@ -65832,7 +65832,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '满州', 'name' => '满州乡', - 'merge_name' => '中国,台湾,屏东县,满州乡', + 'merge_name' => '中国,台湾省,屏东县,满州乡', 'level' => 3, 'pinyin' => 'manzhou', 'code' => '08', @@ -65850,7 +65850,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '枋山', 'name' => '枋山乡', - 'merge_name' => '中国,台湾,屏东县,枋山乡', + 'merge_name' => '中国,台湾省,屏东县,枋山乡', 'level' => 3, 'pinyin' => 'fangshan', 'code' => '08', @@ -65868,7 +65868,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '三地门', 'name' => '三地门乡', - 'merge_name' => '中国,台湾,屏东县,三地门乡', + 'merge_name' => '中国,台湾省,屏东县,三地门乡', 'level' => 3, 'pinyin' => 'sandimen', 'code' => '08', @@ -65886,7 +65886,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '雾台', 'name' => '雾台乡', - 'merge_name' => '中国,台湾,屏东县,雾台乡', + 'merge_name' => '中国,台湾省,屏东县,雾台乡', 'level' => 3, 'pinyin' => 'wutai', 'code' => '08', @@ -65904,7 +65904,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '玛家', 'name' => '玛家乡', - 'merge_name' => '中国,台湾,屏东县,玛家乡', + 'merge_name' => '中国,台湾省,屏东县,玛家乡', 'level' => 3, 'pinyin' => 'majia', 'code' => '08', @@ -65922,7 +65922,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '泰武', 'name' => '泰武乡', - 'merge_name' => '中国,台湾,屏东县,泰武乡', + 'merge_name' => '中国,台湾省,屏东县,泰武乡', 'level' => 3, 'pinyin' => 'taiwu', 'code' => '08', @@ -65940,7 +65940,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '来义', 'name' => '来义乡', - 'merge_name' => '中国,台湾,屏东县,来义乡', + 'merge_name' => '中国,台湾省,屏东县,来义乡', 'level' => 3, 'pinyin' => 'laiyi', 'code' => '08', @@ -65958,7 +65958,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '春日', 'name' => '春日乡', - 'merge_name' => '中国,台湾,屏东县,春日乡', + 'merge_name' => '中国,台湾省,屏东县,春日乡', 'level' => 3, 'pinyin' => 'chunri', 'code' => '08', @@ -65976,7 +65976,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '狮子', 'name' => '狮子乡', - 'merge_name' => '中国,台湾,屏东县,狮子乡', + 'merge_name' => '中国,台湾省,屏东县,狮子乡', 'level' => 3, 'pinyin' => 'shizi', 'code' => '08', @@ -65994,7 +65994,7 @@ class Area extends Migrator 'pid' => 3632, 'short_name' => '牡丹', 'name' => '牡丹乡', - 'merge_name' => '中国,台湾,屏东县,牡丹乡', + 'merge_name' => '中国,台湾省,屏东县,牡丹乡', 'level' => 3, 'pinyin' => 'mudan', 'code' => '08', @@ -66012,7 +66012,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '台东', 'name' => '台东县', - 'merge_name' => '中国,台湾,台东县', + 'merge_name' => '中国,台湾省,台东县', 'level' => 2, 'pinyin' => 'taitung', 'code' => '089', @@ -66030,7 +66030,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '台东', 'name' => '台东市', - 'merge_name' => '中国,台湾,台东县,台东市', + 'merge_name' => '中国,台湾省,台东县,台东市', 'level' => 3, 'pinyin' => 'taidong', 'code' => '089', @@ -66048,7 +66048,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '成功', 'name' => '成功镇', - 'merge_name' => '中国,台湾,台东县,成功镇', + 'merge_name' => '中国,台湾省,台东县,成功镇', 'level' => 3, 'pinyin' => 'chenggong', 'code' => '089', @@ -66066,7 +66066,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '关山', 'name' => '关山镇', - 'merge_name' => '中国,台湾,台东县,关山镇', + 'merge_name' => '中国,台湾省,台东县,关山镇', 'level' => 3, 'pinyin' => 'guanshan', 'code' => '089', @@ -66084,7 +66084,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '卑南', 'name' => '卑南乡', - 'merge_name' => '中国,台湾,台东县,卑南乡', + 'merge_name' => '中国,台湾省,台东县,卑南乡', 'level' => 3, 'pinyin' => 'beinan', 'code' => '089', @@ -66102,7 +66102,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '鹿野', 'name' => '鹿野乡', - 'merge_name' => '中国,台湾,台东县,鹿野乡', + 'merge_name' => '中国,台湾省,台东县,鹿野乡', 'level' => 3, 'pinyin' => 'luye', 'code' => '089', @@ -66120,7 +66120,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '池上', 'name' => '池上乡', - 'merge_name' => '中国,台湾,台东县,池上乡', + 'merge_name' => '中国,台湾省,台东县,池上乡', 'level' => 3, 'pinyin' => 'chishang', 'code' => '089', @@ -66138,7 +66138,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '东河', 'name' => '东河乡', - 'merge_name' => '中国,台湾,台东县,东河乡', + 'merge_name' => '中国,台湾省,台东县,东河乡', 'level' => 3, 'pinyin' => 'donghe', 'code' => '089', @@ -66156,7 +66156,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '长滨', 'name' => '长滨乡', - 'merge_name' => '中国,台湾,台东县,长滨乡', + 'merge_name' => '中国,台湾省,台东县,长滨乡', 'level' => 3, 'pinyin' => 'changbin', 'code' => '089', @@ -66174,7 +66174,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '太麻里', 'name' => '太麻里乡', - 'merge_name' => '中国,台湾,台东县,太麻里乡', + 'merge_name' => '中国,台湾省,台东县,太麻里乡', 'level' => 3, 'pinyin' => 'taimali', 'code' => '089', @@ -66192,7 +66192,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '大武', 'name' => '大武乡', - 'merge_name' => '中国,台湾,台东县,大武乡', + 'merge_name' => '中国,台湾省,台东县,大武乡', 'level' => 3, 'pinyin' => 'dawu', 'code' => '089', @@ -66210,7 +66210,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '绿岛', 'name' => '绿岛乡', - 'merge_name' => '中国,台湾,台东县,绿岛乡', + 'merge_name' => '中国,台湾省,台东县,绿岛乡', 'level' => 3, 'pinyin' => 'lvdao', 'code' => '089', @@ -66228,7 +66228,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '海端', 'name' => '海端乡', - 'merge_name' => '中国,台湾,台东县,海端乡', + 'merge_name' => '中国,台湾省,台东县,海端乡', 'level' => 3, 'pinyin' => 'haiduan', 'code' => '089', @@ -66246,7 +66246,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '延平', 'name' => '延平乡', - 'merge_name' => '中国,台湾,台东县,延平乡', + 'merge_name' => '中国,台湾省,台东县,延平乡', 'level' => 3, 'pinyin' => 'yanping', 'code' => '089', @@ -66264,7 +66264,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '金峰', 'name' => '金峰乡', - 'merge_name' => '中国,台湾,台东县,金峰乡', + 'merge_name' => '中国,台湾省,台东县,金峰乡', 'level' => 3, 'pinyin' => 'jinfeng', 'code' => '089', @@ -66282,7 +66282,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '达仁', 'name' => '达仁乡', - 'merge_name' => '中国,台湾,台东县,达仁乡', + 'merge_name' => '中国,台湾省,台东县,达仁乡', 'level' => 3, 'pinyin' => 'daren', 'code' => '089', @@ -66300,7 +66300,7 @@ class Area extends Migrator 'pid' => 3666, 'short_name' => '兰屿', 'name' => '兰屿乡', - 'merge_name' => '中国,台湾,台东县,兰屿乡', + 'merge_name' => '中国,台湾省,台东县,兰屿乡', 'level' => 3, 'pinyin' => 'lanyu', 'code' => '089', @@ -66318,7 +66318,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '花莲', 'name' => '花莲县', - 'merge_name' => '中国,台湾,花莲县', + 'merge_name' => '中国,台湾省,花莲县', 'level' => 2, 'pinyin' => 'hualien', 'code' => '03', @@ -66336,7 +66336,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '花莲', 'name' => '花莲市', - 'merge_name' => '中国,台湾,花莲县,花莲市', + 'merge_name' => '中国,台湾省,花莲县,花莲市', 'level' => 3, 'pinyin' => 'hualian', 'code' => '03', @@ -66354,7 +66354,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '凤林', 'name' => '凤林镇', - 'merge_name' => '中国,台湾,花莲县,凤林镇', + 'merge_name' => '中国,台湾省,花莲县,凤林镇', 'level' => 3, 'pinyin' => 'fenglin', 'code' => '03', @@ -66372,7 +66372,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '玉里', 'name' => '玉里镇', - 'merge_name' => '中国,台湾,花莲县,玉里镇', + 'merge_name' => '中国,台湾省,花莲县,玉里镇', 'level' => 3, 'pinyin' => 'yuli', 'code' => '03', @@ -66390,7 +66390,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '新城', 'name' => '新城乡', - 'merge_name' => '中国,台湾,花莲县,新城乡', + 'merge_name' => '中国,台湾省,花莲县,新城乡', 'level' => 3, 'pinyin' => 'xincheng', 'code' => '03', @@ -66408,7 +66408,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '吉安', 'name' => '吉安乡', - 'merge_name' => '中国,台湾,花莲县,吉安乡', + 'merge_name' => '中国,台湾省,花莲县,吉安乡', 'level' => 3, 'pinyin' => 'ji\'an', 'code' => '03', @@ -66426,7 +66426,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '寿丰', 'name' => '寿丰乡', - 'merge_name' => '中国,台湾,花莲县,寿丰乡', + 'merge_name' => '中国,台湾省,花莲县,寿丰乡', 'level' => 3, 'pinyin' => 'shoufeng', 'code' => '03', @@ -66444,7 +66444,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '光复', 'name' => '光复乡', - 'merge_name' => '中国,台湾,花莲县,光复乡', + 'merge_name' => '中国,台湾省,花莲县,光复乡', 'level' => 3, 'pinyin' => 'guangfu', 'code' => '03', @@ -66462,7 +66462,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '丰滨', 'name' => '丰滨乡', - 'merge_name' => '中国,台湾,花莲县,丰滨乡', + 'merge_name' => '中国,台湾省,花莲县,丰滨乡', 'level' => 3, 'pinyin' => 'fengbin', 'code' => '03', @@ -66480,7 +66480,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '瑞穗', 'name' => '瑞穗乡', - 'merge_name' => '中国,台湾,花莲县,瑞穗乡', + 'merge_name' => '中国,台湾省,花莲县,瑞穗乡', 'level' => 3, 'pinyin' => 'ruisui', 'code' => '03', @@ -66498,7 +66498,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '富里', 'name' => '富里乡', - 'merge_name' => '中国,台湾,花莲县,富里乡', + 'merge_name' => '中国,台湾省,花莲县,富里乡', 'level' => 3, 'pinyin' => 'fuli', 'code' => '03', @@ -66516,7 +66516,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '秀林', 'name' => '秀林乡', - 'merge_name' => '中国,台湾,花莲县,秀林乡', + 'merge_name' => '中国,台湾省,花莲县,秀林乡', 'level' => 3, 'pinyin' => 'xiulin', 'code' => '03', @@ -66534,7 +66534,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '万荣', 'name' => '万荣乡', - 'merge_name' => '中国,台湾,花莲县,万荣乡', + 'merge_name' => '中国,台湾省,花莲县,万荣乡', 'level' => 3, 'pinyin' => 'wanrong', 'code' => '03', @@ -66552,7 +66552,7 @@ class Area extends Migrator 'pid' => 3683, 'short_name' => '卓溪', 'name' => '卓溪乡', - 'merge_name' => '中国,台湾,花莲县,卓溪乡', + 'merge_name' => '中国,台湾省,花莲县,卓溪乡', 'level' => 3, 'pinyin' => 'zhuoxi', 'code' => '03', @@ -66570,7 +66570,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '澎湖', 'name' => '澎湖县', - 'merge_name' => '中国,台湾,澎湖县', + 'merge_name' => '中国,台湾省,澎湖县', 'level' => 2, 'pinyin' => 'penghu', 'code' => '06', @@ -66588,7 +66588,7 @@ class Area extends Migrator 'pid' => 3697, 'short_name' => '马公', 'name' => '马公市', - 'merge_name' => '中国,台湾,澎湖县,马公市', + 'merge_name' => '中国,台湾省,澎湖县,马公市', 'level' => 3, 'pinyin' => 'magong', 'code' => '06', @@ -66606,7 +66606,7 @@ class Area extends Migrator 'pid' => 3697, 'short_name' => '湖西', 'name' => '湖西乡', - 'merge_name' => '中国,台湾,澎湖县,湖西乡', + 'merge_name' => '中国,台湾省,澎湖县,湖西乡', 'level' => 3, 'pinyin' => 'huxi', 'code' => '06', @@ -66624,7 +66624,7 @@ class Area extends Migrator 'pid' => 3697, 'short_name' => '白沙', 'name' => '白沙乡', - 'merge_name' => '中国,台湾,澎湖县,白沙乡', + 'merge_name' => '中国,台湾省,澎湖县,白沙乡', 'level' => 3, 'pinyin' => 'baisha', 'code' => '06', @@ -66642,7 +66642,7 @@ class Area extends Migrator 'pid' => 3697, 'short_name' => '西屿', 'name' => '西屿乡', - 'merge_name' => '中国,台湾,澎湖县,西屿乡', + 'merge_name' => '中国,台湾省,澎湖县,西屿乡', 'level' => 3, 'pinyin' => 'xiyu', 'code' => '06', @@ -66660,7 +66660,7 @@ class Area extends Migrator 'pid' => 3697, 'short_name' => '望安', 'name' => '望安乡', - 'merge_name' => '中国,台湾,澎湖县,望安乡', + 'merge_name' => '中国,台湾省,澎湖县,望安乡', 'level' => 3, 'pinyin' => 'wang\'an', 'code' => '06', @@ -66678,7 +66678,7 @@ class Area extends Migrator 'pid' => 3697, 'short_name' => '七美', 'name' => '七美乡', - 'merge_name' => '中国,台湾,澎湖县,七美乡', + 'merge_name' => '中国,台湾省,澎湖县,七美乡', 'level' => 3, 'pinyin' => 'qimei', 'code' => '06', @@ -66696,7 +66696,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '金门', 'name' => '金门县', - 'merge_name' => '中国,台湾,金门县', + 'merge_name' => '中国,台湾省,金门县', 'level' => 2, 'pinyin' => 'jinmen', 'code' => '082', @@ -66714,7 +66714,7 @@ class Area extends Migrator 'pid' => 3704, 'short_name' => '金城', 'name' => '金城镇', - 'merge_name' => '中国,台湾,金门县,金城镇', + 'merge_name' => '中国,台湾省,金门县,金城镇', 'level' => 3, 'pinyin' => 'jincheng', 'code' => '082', @@ -66732,7 +66732,7 @@ class Area extends Migrator 'pid' => 3704, 'short_name' => '金湖', 'name' => '金湖镇', - 'merge_name' => '中国,台湾,金门县,金湖镇', + 'merge_name' => '中国,台湾省,金门县,金湖镇', 'level' => 3, 'pinyin' => 'jinhu', 'code' => '082', @@ -66750,7 +66750,7 @@ class Area extends Migrator 'pid' => 3704, 'short_name' => '金沙', 'name' => '金沙镇', - 'merge_name' => '中国,台湾,金门县,金沙镇', + 'merge_name' => '中国,台湾省,金门县,金沙镇', 'level' => 3, 'pinyin' => 'jinsha', 'code' => '082', @@ -66768,7 +66768,7 @@ class Area extends Migrator 'pid' => 3704, 'short_name' => '金宁', 'name' => '金宁乡', - 'merge_name' => '中国,台湾,金门县,金宁乡', + 'merge_name' => '中国,台湾省,金门县,金宁乡', 'level' => 3, 'pinyin' => 'jinning', 'code' => '082', @@ -66786,7 +66786,7 @@ class Area extends Migrator 'pid' => 3704, 'short_name' => '烈屿', 'name' => '烈屿乡', - 'merge_name' => '中国,台湾,金门县,烈屿乡', + 'merge_name' => '中国,台湾省,金门县,烈屿乡', 'level' => 3, 'pinyin' => 'lieyu', 'code' => '082', @@ -66804,7 +66804,7 @@ class Area extends Migrator 'pid' => 3704, 'short_name' => '乌丘', 'name' => '乌丘乡', - 'merge_name' => '中国,台湾,金门县,乌丘乡', + 'merge_name' => '中国,台湾省,金门县,乌丘乡', 'level' => 3, 'pinyin' => 'wuqiu', 'code' => '082', @@ -66822,7 +66822,7 @@ class Area extends Migrator 'pid' => 3325, 'short_name' => '连江', 'name' => '连江县', - 'merge_name' => '中国,台湾,连江县', + 'merge_name' => '中国,台湾省,连江县', 'level' => 2, 'pinyin' => 'lienchiang', 'code' => '0836', @@ -66840,7 +66840,7 @@ class Area extends Migrator 'pid' => 3711, 'short_name' => '南竿', 'name' => '南竿乡', - 'merge_name' => '中国,台湾,连江县,南竿乡', + 'merge_name' => '中国,台湾省,连江县,南竿乡', 'level' => 3, 'pinyin' => 'nangan', 'code' => '0836', @@ -66858,7 +66858,7 @@ class Area extends Migrator 'pid' => 3711, 'short_name' => '北竿', 'name' => '北竿乡', - 'merge_name' => '中国,台湾,连江县,北竿乡', + 'merge_name' => '中国,台湾省,连江县,北竿乡', 'level' => 3, 'pinyin' => 'beigan', 'code' => '0836', @@ -66876,7 +66876,7 @@ class Area extends Migrator 'pid' => 3711, 'short_name' => '莒光', 'name' => '莒光乡', - 'merge_name' => '中国,台湾,连江县,莒光乡', + 'merge_name' => '中国,台湾省,连江县,莒光乡', 'level' => 3, 'pinyin' => 'juguang', 'code' => '0836', @@ -66894,7 +66894,7 @@ class Area extends Migrator 'pid' => 3711, 'short_name' => '东引', 'name' => '东引乡', - 'merge_name' => '中国,台湾,连江县,东引乡', + 'merge_name' => '中国,台湾省,连江县,东引乡', 'level' => 3, 'pinyin' => 'dongyin', 'code' => '0836', diff --git a/database/migrations/20220111014748_testCategory.php b/database/migrations/20220928172448_member.php old mode 100755 new mode 100644 similarity index 34% rename from database/migrations/20220111014748_testCategory.php rename to database/migrations/20220928172448_member.php index 0a71fd95c277f9ec0a1c597731b8fde06e922877..f227f68335703ffa83500e48f5ceeb2497eb9163 --- a/database/migrations/20220111014748_testCategory.php +++ b/database/migrations/20220928172448_member.php @@ -2,13 +2,13 @@ use think\migration\Migrator; -class TestCategory extends Migrator +class Member extends Migrator { public function change() { - $table = $this->table('test_category', [ + $table = $this->table('member', [ 'engine' => 'InnoDB', - 'comment' => '官方举例,生成分类CURD', + 'comment' => '会员管理', 'collation' => 'utf8mb4_general_ci' ]); @@ -18,9 +18,15 @@ class TestCategory extends Migrator } $table - ->addColumn('name', 'string', ['limit' => 255, 'null' => 1, 'default' => '','comment' => '分类名']) - ->addColumn('pid', 'integer', ['limit' => 11, 'null' => 1, 'default' => '0','comment' => '上级分类']) - ->addColumn('sort', 'integer', ['limit' => 11, 'null' => 1, 'default' => '0','comment' => '排序']) + ->addColumn('email', 'string', ['limit' => 2551, 'null' => 1, 'default' => '','comment' => '邮箱']) + ->addColumn('password', 'string', ['limit' => 255, 'null' => 1, 'default' => '','comment' => '密码']) + ->addColumn('nickname', 'string', ['limit' => 255, 'null' => 1, 'default' => '','comment' => '昵称']) + ->addColumn('sex', 'boolean', ['limit' => 4, 'null' => 1, 'default' => '0','comment' => '性别.1=男,2=女,']) + ->addColumn('vip_time', 'integer', ['limit' => 11, 'null' => 1, 'default' => '0','comment' => 'vip到期时间']) + ->addColumn('avatar_pic', 'string', ['limit' => 255, 'null' => 1, 'default' => '0','comment' => '头像']) + ->addColumn('login_time', 'datetime', ['null' => 1, 'comment' => '注册时间']) + ->addColumn('login_ip', 'string', ['limit' => 255, 'null' => 1, 'default' => '','comment' => '登录IP']) + ->addColumn('status', 'boolean', ['limit' => 4, 'null' => 1, 'default' => '0','comment' => '账号状态.2=锁定,1=正常,默认:1']) ->addColumn('create_time', 'datetime', ['null' => 1, 'comment' => '创建时间']) ->addColumn('update_time', 'datetime', ['null' => 1, 'comment' => '更新时间']) ->addColumn('delete_time', 'datetime', ['null' => 1, 'comment' => '删除时间']) diff --git a/extend/laytp/controller/Backend.php b/extend/laytp/controller/Backend.php index 2d4d792b7da892cdc690ba8e2964143760149a65..a3364ccfd4342135376afd90f5e42ced5b2edfad 100644 --- a/extend/laytp/controller/Backend.php +++ b/extend/laytp/controller/Backend.php @@ -16,9 +16,9 @@ class Backend extends BaseController use \laytp\traits\Backend; protected $noNeedLogin = [];//无需登录,也无需鉴权的方法名列表,支持*通配符定义所有方法 - protected $noNeedAuth = [];//需要登录,但是无需鉴权的方法名列表,支持*通配符定义所有方法 - protected $hasSoftDel = 0;//当前访问的模型是否有软删除功能 - protected $orderRule = ['id' => 'desc'];//默认排序规则 + protected $noNeedAuth = [];//需要登录,但是无需鉴权的方法名列表,支持*通配符定义所有方法 + protected $hasSoftDel = 0;//当前访问的模型是否有软删除功能 + protected $orderRule = ['id' => 'desc'];//默认排序规则 /** * 中间件 @@ -60,8 +60,8 @@ class Backend extends BaseController */ public function buildSearchParams() { - $where = []; - $whereOr = []; + $where = []; + $whereOr = []; //传递了search_param就说明是进行搜索查询 $searchParam = $this->request->param('search_param'); if ($searchParam) { @@ -73,31 +73,31 @@ class Backend extends BaseController $where[] = [$field, '=', $valueCondition['value']]; break; case 'FIND_IN_SET': - $values = explode(',', $valueCondition['value']); + $values = explode(',', $valueCondition['value']); foreach ($values as $val) { $whereOr[] = [$field, 'find in set', $val]; } - if($whereOr){ - $where[] = function($query) use($whereOr){ + if ($whereOr) { + $where[] = function ($query) use ($whereOr) { $query->whereOr($whereOr); }; } break; case 'LIKE': - $where[] = [$field, 'like', '%'.$valueCondition['value'].'%']; + $where[] = [$field, 'like', '%' . $valueCondition['value'] . '%']; break; case 'IN': $where[] = [$field, 'in', $valueCondition['value']]; break; case 'BETWEEN': $arrBetween = explode(' - ', $valueCondition['value']); - $where[] = [$field, 'between', $arrBetween[0].','.$arrBetween[1]]; + $where[] = [$field, 'between', $arrBetween[0] . ',' . $arrBetween[1]]; break; case 'BETWEEN_STRTOTIME': $arrBetween = explode(' - ', $valueCondition['value']); $begin_time = strtotime($arrBetween[0]); $end_time = strtotime($arrBetween[1]); - $where[] = [$field, 'between', $begin_time.','.$end_time]; + $where[] = [$field, 'between', $begin_time . ',' . $end_time]; break; case '>': $where[] = [$field, '>', $valueCondition['value']]; @@ -130,13 +130,33 @@ class Backend extends BaseController $order = $this->orderRule; //传递了order_param字段,就说明是进行排序搜索 $orderParam = $this->request->param('order_param'); - if ($orderParam && $orderParam['field'] && in_array(strtolower($orderParam['type']), ['asc','desc'])) { - if(isset($order[$orderParam['field']])){ + if ($orderParam && $orderParam['field'] && in_array(strtolower($orderParam['type']), ['asc', 'desc'])) { + if (isset($order[$orderParam['field']])) { $order[$orderParam['field']] = $orderParam['type']; - }else{ + } else { $order = array_merge([$orderParam['field'] => $orderParam['type']], $order); } } return $order; } + + /** + * 获取已选中项 + */ + public function getSelectedData($data) + { + if (!$data) return []; + + $selectedVal = $this->request->param('selected'); + if (is_array($selectedVal) && $selectedVal) { + $selectedField = $this->request->param('selectedField', 'id'); + $columns = array_column($data, $selectedField); + $selectedVal = array_filter(array_unique(array_diff($selectedVal, $columns))); + if ($selectedVal) { + $selectedData = $this->model->where($selectedField, 'in', $selectedVal)->select()->toArray(); + $selectedData && $data = array_merge($data, $selectedData); + } + } + return $data; + } } \ No newline at end of file diff --git a/extend/laytp/library/Date.php b/extend/laytp/library/Date.php index 5c88285cf389db60269633fdf114097275d17495..3f40cf6c22d61e1273c8fdb5e4674a36691c9675 100644 --- a/extend/laytp/library/Date.php +++ b/extend/laytp/library/Date.php @@ -198,4 +198,161 @@ class Date } return $time; } + + /** + * 获取某个日期属于一年中的第几周 + * @param $date + * @return false|int|string + */ + public static function getWeekNum($date='') + { + $date = $date ? $date : date('Y-m-d'); + + $year = date('Y', strtotime($date)); + + $yearBegin = strtotime($year.'-1-1'); + + $month = intval(date('m', strtotime($date))); + + if( date('W', $yearBegin) == 1 ){ + return date('W', strtotime($date)); + }else if($month == 1 && date('W', $yearBegin) > 50){ + return 1; + }else{ + return date('W', strtotime($date)) + 1; + } + } + + /** + * 根据日期,获取周信息 + * @param $now string 日期,举例: 2021-01-01 + * @return array + */ + public static function getWeekInfo($now) + { + $str = []; + //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期 + $str['year'] = date('Y', strtotime($now)); + $first = 1; + //当日在整年中的第几周 + $str['week'] = date('W', strtotime($now)); + //获取当前周的第几天 周日是 0 周一到周六是 1 - 6 + $w = date('w', strtotime($now)); + //获取本周开始日期,如果$w是0,则表示周日,减去 6 天 + $weekStart = date('Y-m-d', strtotime("$now -" . ($w ? $w - $first : 6) . ' days')); + $str['week_start'] = $weekStart; + //本周结束日期 + $weekEnd = date('Y-m-d', strtotime("$weekStart +6 days")); + $str['week_end'] = $weekEnd; + return $str; + } + + /** + * 某去某年第几周的周信息 + * @param $year + * @param int $week + * @return mixed + */ + public static function weekDay($year, $week=1){ + $yearStart = mktime(0,0,0,1,1, $year); + $yearEnd = mktime(0,0,0,12,31, $year); + + $start = $yearStart;//把第一天做为第一周的开始 + $end = strtotime('+1 sunday', $yearStart);//把第一个周日作为第一周的结束 + + $lastStart = strtotime('-1 monday', $yearStart);//把最后一个周一作为最后一周的开始 + $lastEnd = $yearEnd;//把最后一天作为最后一周的结束 + + $totalWeekNum = intval(date('W', $yearStart)); + + if($week == 1){ + $weekday['begin'] = $start;//把第一天做为第一周的开始 + $weekday['begin_date'] = date('Y-m-d', $start);//把第一天做为第一周的开始 + $weekday['end'] = $end;//把第一个周日作为第一周的结束 + $weekday['end_date'] = date('Y-m-d', $end);//把第一个周日作为第一周的结束 + }else if($week == $totalWeekNum){ + $weekday['begin'] = $lastStart;//把最后一个周一作为最后一周的开始 + $weekday['begin_date'] = date('Y-m-d', $lastStart);//把第一天做为第一周的开始 + $weekday['end'] = $lastEnd;//把第一个周日作为第一周的结束 + $weekday['end_date'] = date('Y-m-d', $lastEnd);//把第一个周日作为第一周的结束 + }else if($week > 1 && $week < $totalWeekNum){ + $weekday['begin'] = strtotime('+' . ($week-1) . ' monday', $end); + $weekday['begin_date'] = date('Y-m-d', $weekday['begin']); + $weekday['end'] = strtotime('+' . ($week-1) . ' sunday', $end + 24 * 60 * 60); + $weekday['end_date'] = date('Y-m-d', $weekday['end']); + }else{ + return false; + } + + $weekday['week'] = $week; + $weekday['totalWeekNum'] = $totalWeekNum; + + return $weekday; + } + + /** + * 友好的时间显示 + * + * @param int $sTime 待显示的时间 + * @param string $type 类型. normal | mohu | full | ymd | other + * @param string $alt 已失效 + * @return string + */ + public static function friendlyDate($sTime,$type = 'default',$alt = 'false') { + //sTime=源时间,cTime=当前时间,dTime=时间差 + $cTime = time(); + $dTime = $cTime - $sTime; + $dDay = intval(date("z",$cTime)) - intval(date("z",$sTime)); + //$dDay = intval($dTime/3600/24); + $dYear = intval(date("Y",$cTime)) - intval(date("Y",$sTime)); + //normal:n秒前,n分钟前,n小时前,日期 + if($type=='normal'){ + if($dTime == 0){ + return '现在'; + }elseif( $dTime < 60 ){ + return $dTime."秒前"; + }elseif( $dTime < 3600 ){ + return intval($dTime/60)."分钟前"; + //今天的数据.年份相同.日期相同. + }elseif( $dYear==0 && $dDay == 0 ){ + //return intval($dTime/3600)."小时前"; + return '今天'.date('H:i',$sTime); + }elseif($dYear==0){ + return date("m月d日 H:i",$sTime); + }else{ + return date("Y-m-d H:i",$sTime); + } + }elseif($type=='mohu'){ + if( $dTime < 60 ){ + return $dTime."秒前"; + }elseif( $dTime < 3600 ){ + return intval($dTime/60)."分钟前"; + }elseif( $dTime >= 3600 && $dDay == 0 ){ + return intval($dTime/3600)."小时前"; + }elseif( $dDay > 0 && $dDay<=7 ){ + return intval($dDay)."天前"; + }elseif( $dDay > 7 && $dDay <= 30 ){ + return intval($dDay/7) . '周前'; + }elseif( $dDay > 30 ){ + return intval($dDay/30) . '个月前'; + } + //full: Y-m-d , H:i:s + }elseif($type=='full'){ + return date("Y-m-d , H:i:s",$sTime); + }elseif($type=='ymd'){ + return date("Y-m-d",$sTime); + }else{ + if( $dTime < 60 ){ + return $dTime."秒前"; + }elseif( $dTime < 3600 ){ + return intval($dTime/60)."分钟前"; + }elseif( $dTime >= 3600 && $dDay == 0 ){ + return intval($dTime/3600)."小时前"; + }elseif($dYear==0){ + return date("Y-m-d H:i:s",$sTime); + }else{ + return date("Y-m-d H:i:s",$sTime); + } + } + } } diff --git a/extend/laytp/library/Http.php b/extend/laytp/library/Http.php index 5173a64cfcadbbb7bfa12359465ce8919fae84e2..e08adf9f91c27d0f5f3024bde44c2a2ff31108fd 100644 --- a/extend/laytp/library/Http.php +++ b/extend/laytp/library/Http.php @@ -182,4 +182,20 @@ class Http } } } + + /** + * 获取远程https的图片保存到本地 + * @param $imgUrl string 图片地址 + * @param $saveToPath string 本地保存路径 + */ + public static function saveImageFromHttps($imgUrl, $saveToPath){ + $arrContextOptions = array( + "ssl"=>array( + "verify_peer"=>false, + "verify_peer_name"=>false, + ), + ); + $file_contents = file_get_contents($imgUrl, false, stream_context_create($arrContextOptions)); + file_put_contents($saveToPath, $file_contents); + } } diff --git a/extend/laytp/library/PluginRoute.php b/extend/laytp/library/PluginRoute.php index 0d9e9b6029f6f7fd9f5981bec5bb8312e87ef442..7b16ba3a222f4157f8bc1b25126710533b97e1a0 100644 --- a/extend/laytp/library/PluginRoute.php +++ b/extend/laytp/library/PluginRoute.php @@ -37,11 +37,6 @@ class PluginRoute extends Route $this->request->setController($controller)->setAction($classAndAction['action']); - $common_func_file = app()->getRootPath() . DS . 'plugin' . DS . $plugin . DS . 'common.php'; - if (file_exists($common_func_file)) { - include_once app()->getRootPath() . DS . 'plugin' . DS . $plugin . DS . 'common.php'; - } - $class = $classAndAction['class']; $action = $classAndAction['action']; $instance = app()->make($class, [], true); diff --git a/extend/laytp/library/Random.php b/extend/laytp/library/Random.php index 2943d42246acad0d1343184d40ba775db7a89ca5..0af524d781b3c95f837130317d334fd16ecb87aa 100644 --- a/extend/laytp/library/Random.php +++ b/extend/laytp/library/Random.php @@ -156,16 +156,12 @@ class Random */ public static function uuid() { - return sprintf( - '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', - mt_rand(0, 0xffff), - mt_rand(0, 0xffff), - mt_rand(0, 0xffff), - mt_rand(0, 0x0fff) | 0x4000, - mt_rand(0, 0x3fff) | 0x8000, - mt_rand(0, 0xffff), - mt_rand(0, 0xffff), - mt_rand(0, 0xffff) - ); + $chars = md5(uniqid(mt_rand(), true)); + $uuid = substr ( $chars, 0, 8 ) . '-' + . substr ( $chars, 8, 4 ) . '-' + . substr ( $chars, 12, 4 ) . '-' + . substr ( $chars, 16, 4 ) . '-' + . substr ( $chars, 20, 12 ); + return $uuid ; } } diff --git a/extend/laytp/library/Redis.php b/extend/laytp/library/Redis.php index 610b2448831b71059aaeb48e62f2a094ecc05822..facbe2291a7d968ab503d9a82df698d8a8823e4d 100644 --- a/extend/laytp/library/Redis.php +++ b/extend/laytp/library/Redis.php @@ -9,7 +9,7 @@ use think\facade\Cache; class Redis { /** - * 得到一个redis锁 + * 得到一个redis锁,循环获取锁,直到获取到锁为止 * @param $name string 锁名称 * @param $ttl int 锁存在的时间,单位秒,默认60秒 * @return bool @@ -19,14 +19,30 @@ class Redis set_time_limit(0); $redis = Cache::store('redis')->handler(); while(true){ - if($redis->setnx($name, 1)){ - $redis->expire($name, $ttl); + if($redis->set($name, 1, ['NX', 'EX'=>$ttl])){ break; } } return true; } + /** + * 得到一个redis锁,仅尝试获取一次 + * + * @param $name string 锁名称 + * @param $ttl int 锁存在的时间,单位秒,默认60秒 + * @return bool + */ + public static function getOnceLock($name, $ttl=60) + { + set_time_limit(0); + $redis = Cache::store('redis')->handler(); + if($redis->set($name, 1, ['NX', 'EX'=>$ttl])){ + return true; + } + return false; + } + /** * 删除一个redis锁 * @param $name string 锁名称 diff --git a/extend/laytp/library/UploadDomain.php b/extend/laytp/library/UploadDomain.php index 5d3394ce5d1aeaa5d089ecd3e8d89d529f9af89f..bd16df1cf4531a8c9b05158163db081eda6eeaa9 100644 --- a/extend/laytp/library/UploadDomain.php +++ b/extend/laytp/library/UploadDomain.php @@ -117,6 +117,8 @@ class UploadDomain */ static public function addUploadDomain($string, $uploadType = 'local') { + $defaultType = ConfServiceFacade::get('system.upload.defaultType', 'local'); + if($uploadType == 'default') $uploadType = $defaultType; $uploadDomain = self::getUploadDomain($uploadType, 'via'); //ueditor编辑器正则替换所有的图片、视频、音频 /* $string = preg_replace("/(+)/is", "\${1}{$uploadDomain}\${2}\${3}", $string);*/ @@ -144,6 +146,8 @@ class UploadDomain */ static public function delUploadDomain($string, $uploadType = 'local') { + $defaultType = ConfServiceFacade::get('system.upload.defaultType', 'local'); + if($uploadType == 'default') $uploadType = $defaultType; $uploadDomain = addcslashes(self::getUploadDomain($uploadType, 'via'), '/'); //ueditor编辑器正则替换所有的图片、视频、音频 $string = preg_replace("/(+)/is", "\${1}\${2}\${3}", $string); @@ -167,12 +171,12 @@ class UploadDomain if ($uploadType === 'local') { $uploadDomain = Env::get('domain.static', request()->domain() . '/static'); } else if ($uploadType === 'qiniu-kodo') { - $uploadDomain = Env::get('KODO.domain'); + $uploadDomain = ConfServiceFacade::get('plugin.qiniu_kodo.domain'); } else if ($uploadType === 'ali-oss') { if ($viaServer === 'via') { - $uploadDomain = Env::get('OSS.domain'); + $uploadDomain = ConfServiceFacade::get('plugin.ali_oss.domain'); } else { - $uploadDomain = Env::get('STS.domain'); + $uploadDomain = ConfServiceFacade::get('plugin.ali_oss_sts.domain'); } } return $uploadDomain; @@ -251,7 +255,7 @@ class UploadDomain public static function getDefaultAvatar() { $path = '/admin/images/avatar.jpg'; - $uploadDomain = Env::get('domain.static', '/static'); + $uploadDomain = Env::get('domain.static', request()->domain() . '/static'); return $uploadDomain . $path; } } \ No newline at end of file diff --git a/extend/laytp/traits/Backend.php b/extend/laytp/traits/Backend.php index f71b9261eedf46a725be68a7981330ac1099139f..52187756a5ebeaf3017d9b7a3289d3f31f7e8b3d 100644 --- a/extend/laytp/traits/Backend.php +++ b/extend/laytp/traits/Backend.php @@ -3,26 +3,27 @@ namespace laytp\traits; use laytp\library\CommonFun; +use think\facade\Config; use think\facade\Db; trait Backend { /** * 列表 - * all_data参数的值为true时,表示查询表中所有数据集,否则进行分页查询 * @return mixed */ public function index() { - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $allData = $this->request->param('all_data'); - $data = $this->model->where($where)->order($order); - if ($allData) { - $data = $data->select()->toArray(); + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $data = $this->model->where($where)->order($order); + $paging = $this->request->param('paging', false); + if ($paging) { + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $data->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); } else { - $limit = $this->request->param('limit', 10); - $data = $data->paginate($limit)->toArray(); + $data = $data->select()->toArray(); } return $this->success('数据获取成功', $data); } @@ -39,7 +40,7 @@ trait Backend public function add() { $post = CommonFun::filterPostData($this->request->post()); - try{ + try { if ($this->model->create($post)) { return $this->success('添加成功', $post); } else { @@ -81,13 +82,13 @@ trait Backend if (!$ids) { return $this->error('参数ids不能为空'); } - try{ + try { if ($this->model->destroy($ids)) { return $this->success('数据删除成功'); } else { return $this->error('数据删除失败'); } - }catch (\Exception $e){ + } catch (\Exception $e) { return $this->exceptionError($e); } } @@ -95,16 +96,12 @@ trait Backend //回收站 public function recycle() { - $where = $this->buildSearchParams(); - $order = $this->buildOrder(); - $allData = $this->request->param('all_data'); - $data = $this->model->onlyTrashed()->order($order)->where($where); - if ($allData) { - $data = $data->select()->toArray(); - } else { - $limit = $this->request->param('limit', 10); - $data = $data->paginate($limit)->toArray(); - } + $where = $this->buildSearchParams(); + $order = $this->buildOrder(); + $data = $this->model->onlyTrashed()->where($where)->order($order); + $limit = $this->request->param('limit', Config::get('paginate.limit')); + $data = $data->paginate($limit)->toArray(); + $data['data'] = $this->getSelectedData($data['data']); return $this->success('回收站数据获取成功', $data); } @@ -124,11 +121,11 @@ trait Backend { Db::startTrans(); try { - $ids = $this->request->post('ids'); - $res = $this->model->onlyTrashed()->where('id', 'in', $ids)->select(); + $ids = $this->request->post('ids'); + $res = $this->model->onlyTrashed()->where('id', 'in', $ids)->select(); foreach ($res as $key => $item) { $delRes = $item->force()->delete(); - if(!$delRes) throw new \Exception('删除失败'); + if (!$delRes) throw new \Exception('删除失败'); } Db::commit(); diff --git a/extend/laytp/traits/JsonReturn.php b/extend/laytp/traits/JsonReturn.php index 980cf277b7e584f4ff5d97f2a98ea5005c0e99ee..379e35726243ea77142c468cbacb736abde1cffa 100644 --- a/extend/laytp/traits/JsonReturn.php +++ b/extend/laytp/traits/JsonReturn.php @@ -93,7 +93,7 @@ trait JsonReturn /** * 捕获异常后返回数据 - * @param $e + * @param $e \Exception * @return \think\response\Json */ public function exceptionError($e){ @@ -103,6 +103,7 @@ trait JsonReturn 'message' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine(), + 'trace' => $e->getTrace() ]; } return $this->error($e->getMessage(), 1, $data); diff --git a/public/.htaccess b/public/.htaccess index cbc786893a070c031adbbd5f9cfb3ec3051bdf0b..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -1,8 +0,0 @@ - - Options +FollowSymlinks -Multiviews - RewriteEngine On - - RewriteCond %{REQUEST_FILENAME} !-d - RewriteCond %{REQUEST_FILENAME} !-f - RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] - diff --git a/public/admin/action/log/add.html b/public/admin/action/log/add.html index 041ca64d277f56a6b6d93015a13d765e9a8889ae..4c3163c9be37b435eb89dc30437eb6f12d0a98d1 100644 --- a/public/admin/action/log/add.html +++ b/public/admin/action/log/add.html @@ -87,11 +87,11 @@ + + + \ No newline at end of file diff --git a/public/admin/api/user/edit.html b/public/admin/api/user/edit.html new file mode 100644 index 0000000000000000000000000000000000000000..8d378167e0747a087ed6f4428fce3951139a4aa8 --- /dev/null +++ b/public/admin/api/user/edit.html @@ -0,0 +1,152 @@ + + + + + 编辑用户 + + + +
+ + + + \ No newline at end of file diff --git a/public/admin/api/user/index.html b/public/admin/api/user/index.html new file mode 100644 index 0000000000000000000000000000000000000000..04a64cb490c2e65fe41483060cbff689467db115 --- /dev/null +++ b/public/admin/api/user/index.html @@ -0,0 +1,140 @@ + + + + + 用户管理 + + + +
+
+
+
+
+ + + + + + + + diff --git a/public/admin/api/user/recycle.html b/public/admin/api/user/recycle.html new file mode 100644 index 0000000000000000000000000000000000000000..7b799635b98c31fac0f07b48b1d2313b55ece5b4 --- /dev/null +++ b/public/admin/api/user/recycle.html @@ -0,0 +1,117 @@ + + + + + 用户回收站 + + + +
+
+
+
+
+ + + + + + + + diff --git a/public/admin/area/add.html b/public/admin/area/add.html index ce4079c90add8caef79ca19f3a6b068b667d686b..2ca8ab59d7229a0b8d3ccc744595ccceb003c690 100644 --- a/public/admin/area/add.html +++ b/public/admin/area/add.html @@ -122,11 +122,11 @@
@@ -241,11 +250,9 @@
diff --git a/public/admin/files/edit.html b/public/admin/files/edit.html index a097bb14dafe0029fd738f067d54d2898632a333..d07ca3d445dea861f4f259aaab3178ab90ff048b 100644 --- a/public/admin/files/edit.html +++ b/public/admin/files/edit.html @@ -91,11 +91,11 @@
@@ -50,7 +50,7 @@
-
@@ -59,11 +59,11 @@ + + + \ No newline at end of file diff --git a/public/admin/member/edit.html b/public/admin/member/edit.html new file mode 100644 index 0000000000000000000000000000000000000000..f8724eae1d7d83c662f7e6d896a98d282f3fea11 --- /dev/null +++ b/public/admin/member/edit.html @@ -0,0 +1,160 @@ + + + + + 编辑页面 + + + +
+ + + + \ No newline at end of file diff --git a/public/admin/member/index.html b/public/admin/member/index.html new file mode 100644 index 0000000000000000000000000000000000000000..934cc946056e2ff249fdc4e0d1d68af4af1f8341 --- /dev/null +++ b/public/admin/member/index.html @@ -0,0 +1,180 @@ + + + + + 列表页面 + + + +
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/public/admin/member/recycle.html b/public/admin/member/recycle.html new file mode 100644 index 0000000000000000000000000000000000000000..12ba449ed7b67afc7efb7525c02a85071762e8a0 --- /dev/null +++ b/public/admin/member/recycle.html @@ -0,0 +1,175 @@ + + + + + 回收站 + + + + +
+ + + + + + + + \ No newline at end of file diff --git a/public/admin/menu/add.html b/public/admin/menu/add.html index 65ffe8d7acf6cc6dc2777a355c8109bd227d9da8..aa1906a9e5a6301fb6d31db24c4387847fa82c05 100644 --- a/public/admin/menu/add.html +++ b/public/admin/menu/add.html @@ -47,7 +47,7 @@ data-name="pid" data-sourceType="route" data-source="/admin.menu/index" - data-params='{"search_param":{"is_menu":{"value":1,"condition":"="}}}' + data-param='{"is_menu":{"value":1,"condition":"="}}' data-sourceTree="true" data-radio="true" data-textField="name" @@ -64,14 +64,6 @@ -
- -
- - -
-
-
@@ -113,11 +105,11 @@ + + + 安装Laytp + + + + +
+
+
安装向导
+
+ +
+
+
+
+ 基础配置 +
+
*号为必填项
+
+
+
+ +
+ +
+
+
+ +
+ + +
+
全新安装将会重建数据库,请慎重
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ +
+
+
+ +
+
+ 数据库配置 +
+
*号为必填项
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
默认3306
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+
+ Redis配置 +
+
如果你使用Redis,则填写下面的表单,每一项都要填
+
+
+
+ +
+ +
+
+
+ +
+ +
默认6379
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/public/nginx.htaccess b/public/nginx.htaccess new file mode 100644 index 0000000000000000000000000000000000000000..2e143f674b2a5c245e8d61c3104999159dd35c55 --- /dev/null +++ b/public/nginx.htaccess @@ -0,0 +1,7 @@ +location / { + index index.php index.html; + if (!-f $request_filename) + { + rewrite ^(.*)$ /index.php?s=$1 last; + } +} \ No newline at end of file diff --git a/public/static/admin/css/admin.css b/public/static/admin/css/admin.css index e270e07507b16214a769d87c15c80224e5c4e525..775ee87d90e708e7558f9c1dd8dbf2356fe97a10 100644 --- a/public/static/admin/css/admin.css +++ b/public/static/admin/css/admin.css @@ -1,7 +1,7 @@ html, body, .layui-layout { - height: 100%; + /*height: 100%;*/ } .laytp-admin .layui-header, @@ -12,14 +12,67 @@ body, transition: all .3s; } +.laytp-admin.banner-layout .layui-side { + top: 60px!important; +} + +.laytp-admin.banner-layout .layui-side .layui-logo { + display: none; +} + +.laytp-admin.banner-layout .layui-header .layui-logo { + display: inline-block; +} + +.laytp-admin.banner-layout .layui-side .layui-side-scroll { + height: 100%!important; +} + +.laytp-admin.banner-layout .layui-side .layui-side-scroll { + height: 100%!important; +} + +.laytp-admin .layui-header.dark-theme .layui-layout-control .layui-this *{ + background-color: rgba(0,0,0,.1)!important; +} + +.laytp-admin.banner-layout .layui-header { + z-index: 99999; + width: 100%; + left: 0px; +} + +.laytp-admin.banner-layout .layui-header .layui-layout-left { + left: 230px; +} + +.laytp-admin.banner-layout .layui-header .layui-logo .title { + top: 2px; +} + +.laytp-admin.banner-layout .layui-header .layui-layout-control { + display: inline-block; + left: 370px; +} + +.laytp-admin.banner-layout .layui-header.dark-theme { + box-shadow: 2px 0 6px rgb(0 21 41 / 35%); +} + +.laytp-admin .layui-header .layui-logo { + display: none; +} + .laytp-admin .layui-logo .title { font-size: 20px; } .laytp-admin .layui-layout-right .layui-nav-child { border: 1px solid whitesmoke; - border-radius: 6px; - width: 150px; + border-radius: 4px; + width: auto; + left: auto; + right: -23px; } .laytp-admin .layui-header { @@ -29,23 +82,22 @@ body, border-bottom: 1px solid whitesmoke; } -.laytp-admin .layui-header .layui-nav-img { - width: 30px; - height: 30px; -} - .laytp-admin .layui-layout-control { - left: 120px; + left: 140px; position: absolute; } +.laytp-admin .layui-layout-control .layui-nav { + padding: 0px; +} + .laytp-admin .layui-logo { width: 230px; - height: 60px; - line-height: 60px; + height: 59px; + line-height: 59px; position: relative; background-color: #28333E; - + border-bottom: 1px solid rgba(0, 0, 0, .12); } .laytp-admin .layui-logo img { @@ -69,7 +121,7 @@ body, .laytp-admin .layui-side { top: 0px; width: 230px; - box-shadow: 2px 0 6px rgba(0, 21, 41, .35); + box-shadow: 2px 0 6px rgba(0, 21, 41, .20); z-index: 9999; } @@ -79,7 +131,7 @@ body, } .laytp-admin .layui-side-scroll { - height: calc(100% - 116px) !important; + height: calc(100% - 60px) !important; background-color: #28333E; width: 247px; @@ -100,12 +152,41 @@ body, left: 0px; } -/** 隐 藏 布 局 样 式 */ -.laytp-mini .layui-logo .title { +.laytp-admin .layui-footer { + position: absolute; + display: flex; + justify-content: space-between; + left: 230px; + background: #fff; + border-top: 1px solid #F2F2F2; + box-shadow: none; + -webkit-transition: left .3s; + transition: left .3s; + overflow: hidden; + color: #3c3c3cb3; + font-weight: 300; + font-size: 13.6px; +} + +.laytp-admin .layui-footer.close { + display: none; +} + +@media screen and (max-width: 768px) { + .laytp-admin.banner-layout .layui-header .layui-logo { + display: none; + } + .laytp-admin.banner-layout .layui-header .layui-layout-left { + left: 0px; + } +} + +/** 收缩布局 */ +.laytp-mini .layui-side .layui-logo .title { display: none; } -.laytp-mini .layui-logo .logo { +.laytp-mini .layui-side .layui-logo .logo { display: inline-block; } @@ -122,10 +203,14 @@ body, left: 60px; } -.laytp-mini .layui-logo { +.laytp-mini .layui-side .layui-logo { width: 60px; } +.laytp-mini .layui-footer { + left: 60px; +} + .laytp-mini .layui-nav-tree .layui-nav-item span { display: none; } @@ -152,7 +237,7 @@ body, display: none; } -.laytp-collasped-pe { +.laytp-collapsed-pe { display: none; width: 50px; position: absolute; @@ -167,7 +252,7 @@ body, box-shadow: 2px 0 6px rgba(0, 21, 41, .35); } -.laytp-collasped-pe a { +.laytp-collapsed-pe a { color: white !important; } @@ -185,11 +270,11 @@ body, /** 新增兼容 */ @media screen and (max-width:768px) { - .collaspe { + .collapse { display: none !important; } - .laytp-collasped-pe { + .laytp-collapsed-pe { display: inline-block !important; } @@ -210,7 +295,6 @@ body, height: calc(100% - 62px); } - /** 隐 藏 布 局 样 式 */ .laytp-mini .layui-side { width: 0px; } @@ -224,6 +308,10 @@ body, left: 0px; } + .laytp-mini .layui-footer { + left: 0px; + } + .laytp-mini .layui-logo { width: 0px; } @@ -289,22 +377,50 @@ body, } -/** 亮色侧边风格 */ -.light-theme .layui-logo { +/** 侧边主题 (亮) */ +.light-theme.layui-side { + box-shadow: 2px 0 8px 0 rgba(29, 35, 41, .05) !important; +} + +.light-theme.layui-side .layui-logo { background-color: white !important; color: black !important; + border-bottom: 1px whitesmoke solid; } -.light-theme .layui-side-scroll { +.light-theme.layui-side .layui-side-scroll { background-color: white !important; color: black !important; } -.light-theme .layui-side { - box-shadow: 2px 0 8px 0 rgba(29, 35, 41, .05) !important; +.dark-theme.layui-header { + border-bottom: none; + background-color: #28333E; + color: whitesmoke; +} + +.dark-theme.layui-header li>a{ + color: whitesmoke!important; +} + +.dark-theme.layui-header .layui-logo { + box-shadow: none; + border: none; +} + +/** 顶部主题 (白) */ +.light-theme.layui-header .layui-logo { + background-color: white; + border: none; + box-shadow: none; +} + +/** 主题面板 */ +.laytpone-color .set-text { + height: 42px; + line-height: 42px; } -/** 主 题 选 择 界 面 样 式 */ .laytpone-color .color-title { padding: 15px 0 0px 20px; margin-bottom: 4px; @@ -358,7 +474,13 @@ body, -webkit-transition: all .3s; opacity: 0; } - +@media screen and (max-width: 450px) { + .laytpone-color .layui-form-item .layui-input-inline { + float: left !important; + width: 190px !important; + margin: 0 10px 0 0!important; + } +} .select-color { margin-bottom: 30px; } @@ -387,57 +509,64 @@ body, line-height: 30px; } -/** 友情链接 */ -.more-setting { - margin-top: 45px; -} - -.more-setting form { - margin-top: 30px; +.message .layui-tab-title li:not(:last-child) { + border-right: 1px solid #eee; } -.more-setting-title { - padding: 15px 0 0px 20px; - margin-bottom: 4px; +/* 搜索面板 */ +.menu-search-content .layui-input { + padding-left: 30px; } -.more-setting .layui-form-label { - width: 60px; +.menu-search-content { + display: flex; + flex-wrap: wrap; + justify-content: center; } -.more-menu-list { +.menu-search-input-wrapper { width: 100%; - margin-top: 80px; + padding: 15px 15px; } -.more-menu-item:first-child { - border-top: 1px solid #e8e8e8; +.menu-search-no-data { + display: flex; + justify-content: center; + width: 100%; + height: 122px; + align-items: center; } -.more-menu-item .layui-icon { - font-size: 18px; - padding-right: 10px; +.menu-search-list { + width: 100%; + padding: 5px 15px; } -.more-menu-item { - color: #595959; +.menu-search-list li { + position: relative; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: nowrap; height: 50px; - line-height: 50px; - font-size: 16px; - padding: 0 25px; - border-bottom: 1px solid #e8e8e8; - font-style: normal; - display: block; + margin-bottom: 8px; + padding: 0px 10px; + color: currentColor; + font-size: 14px; + border-radius: 4px; + box-shadow: 0 1px 3px #d4d9e1; + cursor: pointer; + background-color: #fff; } -.more-menu-item:hover { - background-color: whitesmoke; +.menu-search-list li:hover { + background-color: #5FB878; + color: white; } -.more-menu-item:after { - color: #8c8c8c; - right: 16px; - content: "\e602"; - position: absolute; - font-family: layui-icon !important; +.menu-search-list li.this { + background-color: #5FB878; + color: white; } + +/* 搜索面板结束 */ \ No newline at end of file diff --git a/public/static/admin/css/load.css b/public/static/admin/css/load.css index 4f0aa728c6ea0121f4351ef3f909684cfc2c15ed..64ee9404ae83edf0056fd1796fc59b285bb652c4 100644 --- a/public/static/admin/css/load.css +++ b/public/static/admin/css/load.css @@ -31,7 +31,7 @@ width: 50px; height: 50px; border-radius: 3px; - background-color: #5FB878; + background-color: #5FB878; position: absolute; top: 0; left: 0; diff --git a/public/static/admin/css/other/login.css b/public/static/admin/css/other/login.css index f9db4e5a9781874793811a6eee0dd41cf844581a..905400ce7f296d9c772be497facc7dbf10359a76 100644 --- a/public/static/admin/css/other/login.css +++ b/public/static/admin/css/other/login.css @@ -9,14 +9,14 @@ height: 44px !important; line-height: 44px !important; font-size: 16px !important; - background-color: #5FB878 !important; + background-color: #5FB878; font-weight: 550 !important; } .layui-form-checked[lay-skin=primary] i { - border-color: #5FB878 !important; - background-color: #5FB878 !important; - color: #fff !important; + border-color: #5FB878; + background-color: #5FB878; + color: #fff; } .layui-tab-content { @@ -36,12 +36,8 @@ border-radius: 3px !important; } -.layui-input:focus { - box-shadow: 0px 0px 2px 1px #5FB878 !important; -} - .layui-form-danger:focus{ - box-shadow: 0px 0px 2px 1px #f56c6c !important; + box-shadow: 0px 0px 2px 1px #f56c6c; } .logo { @@ -55,7 +51,7 @@ font-size: 30px !important; font-weight: 550 !important; margin-left: 20px !important; - color: #5FB878 !important; + color: #5FB878; display: inline-block !important; height: 60px !important; line-height: 60px !important; diff --git a/public/static/admin/images/avatar.jpg b/public/static/admin/images/avatar.jpg index 8c9c8b277f11a83426213a74925803a5da2df706..6b708f5f67a484b92ed48af4eb517a150320206f 100644 Binary files a/public/static/admin/images/avatar.jpg and b/public/static/admin/images/avatar.jpg differ diff --git a/public/static/admin/js/action/log.js b/public/static/admin/js/action/log.js index d16a1a5cdef69622f408b6084c730d32d12f295e..ee9c0d68f5d29ff92f8c628f7886839d34b0d769 100644 --- a/public/static/admin/js/action/log.js +++ b/public/static/admin/js/action/log.js @@ -1,7 +1,7 @@ layui.use(["laytp"], function () { const funController = {}; //静态页面地址前缀 - window.htmlPrefix = facade.compatibleHtmlPath("/admin/admin/action/log/"); + window.htmlPrefix = facade.compatibleHtmlPath("/admin/action/log/"); //后端接口地址前缀 window.apiPrefix = facade.compatibleApiRoute("/admin.action.log/"); @@ -9,8 +9,9 @@ layui.use(["laytp"], function () { funController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-table" + , limit: facade.getLimit('/admin/action/log/') , id: "laytp-table" - , url: facade.url("/admin.action.log/index") + , url: facade.url("/admin.action.log/index",{paging:1}) , toolbar: "#default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(["laytp"], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/action/log/', res.data.per_page); return facade.parseTableData(res, true); } , done: function(){ diff --git a/public/static/admin/js/api/log.js b/public/static/admin/js/api/log.js index 3667fdf864aa3e82cc7303617c214dbf29c19fb2..0000bcd213d7b68436a0beb2b83fa92aa7ae4c4d 100644 --- a/public/static/admin/js/api/log.js +++ b/public/static/admin/js/api/log.js @@ -9,8 +9,9 @@ layui.use(["laytp"], function () { funController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-table" + , limit: facade.getLimit('/admin/api/log/') , id: "laytp-table" - , url: facade.url("/admin.api.log/index") + , url: facade.url("/admin.api.log/index",{paging:1}) , toolbar: "#default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(["laytp"], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/api/log/', res.data.per_page); return facade.parseTableData(res, true); } , done: function(){ diff --git a/public/static/admin/js/area.js b/public/static/admin/js/area.js index b26cc67341b01e821dcedb3369c163fb30da80e2..8170de96b243c469ee466c83fcaacf384efb22c7 100644 --- a/public/static/admin/js/area.js +++ b/public/static/admin/js/area.js @@ -20,17 +20,8 @@ layui.use(["laytp"], function () { icon: 'layui-icon-refresh', }, 'filter', 'print', 'exports'] , skin: 'line' - , tree: { - iconIndex: 2 // 折叠图标显示在第几列 - , arrowType: 'arrow3' // 自定义箭头风格 - , getIcon: function (d) { // 自定义图标 - // d是当前行的数据 - if (d.children && d.children.length > 0) { // 判断是否有子集 - return ''; - } else { - return ''; - } - } + , done: function(res, curr, count, origin){ + layui.laytpTable.treeDone(); } , parseData: function (res) { return facade.parseTableData(res, false); @@ -46,7 +37,7 @@ layui.use(["laytp"], function () { return laytpForm.tableForm.editInput('sort',d,'/admin.area/setSort'); }} ,{field:'create_time',title:'创建时间',align:'center'} - ,{field:'operation',title:'操作',align:'center',toolbar:'#default-bar',width:185,fixed:'right'} + ,{field:'operation',title:'操作',align:'center',toolbar:'#default-bar',width:180,fixed:'right'} ]] }); diff --git a/public/static/admin/js/areaRecycle.js b/public/static/admin/js/areaRecycle.js index 172971410b0136354cb6a6a489082b121f9f9f93..c7312217984b2c78168e56aa1cc716f229c5abaa 100644 --- a/public/static/admin/js/areaRecycle.js +++ b/public/static/admin/js/areaRecycle.js @@ -9,8 +9,9 @@ layui.use(['laytp'], function () { funRecycleController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-recycle-table" + , limit: facade.getLimit('/admin/area/recycle') , id: "laytp-recycle-table" - , url: facade.url("/admin.area/recycle") + , url: facade.url("/admin.area/recycle",{paging:1}) , toolbar: "#recycle-default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(['laytp'], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/area/recycle', res.data.per_page); return facade.parseTableData(res, true); } , done: function(){ @@ -42,7 +44,7 @@ layui.use(['laytp'], function () { return laytpForm.tableForm.recycleEditInput('sort',d,'/admin.area/setSort'); }} ,{field:'create_time',title:'创建时间',align:'center'} - ,{field:'operation',title:'操作',align:'center',toolbar:'#recycle-default-bar',width:140,fixed:'right'} + ,{field:'operation',title:'操作',align:'center',toolbar:'#recycle-default-bar',width:180,fixed:'right'} ]] }); diff --git a/public/static/admin/js/files.js b/public/static/admin/js/files.js index dd4c406b92614fcf38f3ae6e9684d6bff65a7338..04fd7dd59decb2e089609ddcef42bb5fff9b28b4 100644 --- a/public/static/admin/js/files.js +++ b/public/static/admin/js/files.js @@ -9,8 +9,9 @@ layui.use(["laytp"], function () { funController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-table" + , limit: facade.getLimit('/admin/files/') , id: "laytp-table" - , url: facade.url("/admin.files/index") + , url: facade.url("/admin.files/index",{paging:1}) , toolbar: "#default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(["laytp"], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/files/', res.data.per_page); return facade.parseTableData(res, true); } , done: function(){ diff --git a/public/static/admin/js/files/category.js b/public/static/admin/js/files/category.js index 3575b9bca44bceff944c56d4d2792bc1661e680d..4c73b377a111249a39faba38167ed82b4da36d06 100644 --- a/public/static/admin/js/files/category.js +++ b/public/static/admin/js/files/category.js @@ -9,8 +9,9 @@ layui.use(["laytp"], function () { funController.tableRender = function (where) { //treeTable必须赋值,批量操作需要使用这个值获取复选框选中的数据 laytpTreeTable = layui.treeTable.render({ - elem: "#laytp-tree-table" - , url: facade.url("/admin.files.category/index") + id: "#laytp-tree-table" + , elem: "#laytp-tree-table" + , url: facade.url("/admin.files.category/index",{is_tree:1}) , where: where , method: "GET" , toolbar: "#default-toolbar" @@ -20,21 +21,12 @@ layui.use(["laytp"], function () { icon: 'layui-icon-refresh', }, 'filter', 'print', 'exports'] , skin: 'line' - , tree: { - iconIndex: 2 // 折叠图标显示在第几列 - , arrowType: 'arrow3' // 自定义箭头风格 - , getIcon: function (d) { // 自定义图标 - // d是当前行的数据 - if (d.children && d.children.length > 0) { // 判断是否有子集 - return ''; - } else { - return ''; - } - } - } , parseData: function (res) { return facade.parseTableData(res, false); } + , done: function(res, curr, count, origin){ + layui.laytpTable.treeDone(); + } , cols: [[ {type:'checkbox',fixed:'left'} ,{field:'id',title:'ID',align:'center',width:80,fixed:'left'} @@ -44,7 +36,7 @@ layui.use(["laytp"], function () { ,{field:'sort',title:'排序',align:'center',templet:function(d){ return laytpForm.tableForm.editInput('sort',d,'/admin.files.category/setSort'); }} - ,{field:'operation',title:'操作',align:'center',toolbar:'#default-bar',width:185,fixed:'right'} + ,{field:'operation',title:'操作',align:'center',toolbar:'#default-bar',width:180,fixed:'right'} ]] }); diff --git a/public/static/admin/js/files/categoryRecycle.js b/public/static/admin/js/files/categoryRecycle.js index 2b6b5e25f84eea72778bccf03bbbdc09a05f2392..3297bee25a84af6d3fe19a8a606defcfbc8c4771 100644 --- a/public/static/admin/js/files/categoryRecycle.js +++ b/public/static/admin/js/files/categoryRecycle.js @@ -9,8 +9,9 @@ layui.use(['laytp'], function () { funRecycleController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-recycle-table" + , limit: facade.getLimit('/admin/files/category/recycle') , id: "laytp-recycle-table" - , url: facade.url("/admin.files.category/recycle") + , url: facade.url("/admin.files.category/recycle",{paging:1}) , toolbar: "#recycle-default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(['laytp'], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/files/category/recycle', res.data.per_page); return facade.parseTableData(res, true); } , done: function(){ @@ -40,7 +42,7 @@ layui.use(['laytp'], function () { ,{field:'sort',title:'排序',align:'center',templet:function(d){ return laytpForm.tableForm.recycleEditInput('sort',d,'/admin.files.category/setSort'); }} - ,{field:'operation',title:'操作',align:'center',toolbar:'#recycle-default-bar',width:140,fixed:'right'} + ,{field:'operation',title:'操作',align:'center',toolbar:'#recycle-default-bar',width:180,fixed:'right'} ]] }); diff --git a/public/static/admin/js/filesRecycle.js b/public/static/admin/js/filesRecycle.js index 8cb27017a1e9b72b77d242f0aeb5e5f9f4376868..9fb5264b22b534b24731f513d15581c26ab90772 100644 --- a/public/static/admin/js/filesRecycle.js +++ b/public/static/admin/js/filesRecycle.js @@ -9,8 +9,9 @@ layui.use(['laytp'], function () { funRecycleController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-recycle-table" + , limit: facade.getLimit('/admin/files/recycle') , id: "laytp-recycle-table" - , url: facade.url("/admin.files/recycle") + , url: facade.url("/admin.files/recycle",{paging:1}) , toolbar: "#recycle-default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(['laytp'], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/files/recycle', res.data.per_page); return facade.parseTableData(res, true); } , cols: [[ //表头 @@ -49,7 +51,7 @@ layui.use(['laytp'], function () { ,{field:'create_time',title:'创建时间',align:'center'} ,{field:'update_time',title:'更新时间',align:'center'} ,{field:'delete_time',title:'删除时间',align:'center'} - ,{field:'operation',title:'操作',align:'center',toolbar:'#recycle-default-bar',width:150,fixed:'right'} + ,{field:'operation',title:'操作',align:'center',toolbar:'#recycle-default-bar',width:180,fixed:'right'} ]] }); diff --git a/public/static/admin/js/login/log.js b/public/static/admin/js/login/log.js index 38e5206ffdfffdeec97f718801bee846ff31e9f7..2b4fb4522659bb59a713ffad4842e962f6a92403 100644 --- a/public/static/admin/js/login/log.js +++ b/public/static/admin/js/login/log.js @@ -1,7 +1,7 @@ layui.use(["laytp"], function () { const funController = {}; //静态页面地址前缀 - window.htmlPrefix = facade.compatibleHtmlPath("/admin/admin/login/log/"); + window.htmlPrefix = facade.compatibleHtmlPath("/admin/login/log/"); //后端接口地址前缀 window.apiPrefix = facade.compatibleApiRoute("/admin.login.log/"); @@ -9,8 +9,9 @@ layui.use(["laytp"], function () { funController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-table" + , limit: facade.getLimit('/admin/login/log/') , id: "laytp-table" - , url: facade.url("/admin.login.log/index") + , url: facade.url("/admin.login.log/index",{paging:1}) , toolbar: "#default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(["laytp"], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/login/log/', res.data.per_page); return facade.parseTableData(res, true); } , done: function(){ diff --git a/public/static/admin/js/member.js b/public/static/admin/js/member.js new file mode 100644 index 0000000000000000000000000000000000000000..ca4ec6c470ab94746d0849ae89b5e8f42286538f --- /dev/null +++ b/public/static/admin/js/member.js @@ -0,0 +1,112 @@ +layui.use(["laytp"], function () { + const funController = {}; + //静态页面地址前缀 + window.htmlPrefix = facade.compatibleHtmlPath("/admin/member/"); + //后端接口地址前缀 + window.apiPrefix = facade.compatibleApiRoute("/admin.member/"); + + //表格渲染 + funController.tableRender = function (where, page) { + layui.table.render({ + elem: "#laytp-table" + , limit: facade.getLimit('/admin/member/') + , id: "laytp-table" + , url: facade.url("/admin.member/index",{paging:1}) + , toolbar: "#default-toolbar" + , defaultToolbar: [{ + title: '刷新', + layEvent: 'refresh', + icon: 'layui-icon-refresh', + }, 'filter', 'print', 'exports'] + , where: where + , method: "GET" + , cellMinWidth: 120 + , skin: 'line' + , loading: false + , page: { + curr: page + } + , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/member/', res.data.per_page); + return facade.parseTableData(res, true); + } + , done: function(){ + layui.laytpTable.done(); + } + , cols: [[ + {type:'checkbox',fixed:'left'} + ,{field:'id',title:'ID',align:'center',width:80,fixed:'left'} + ,{field:'layui_number',title:'序号',align:'center',width:80,type:'numbers'} + ,{field:'email',title:'邮箱',align:'center'} + ,{field:'nickname',title:'昵称',align:'center'} + ,{field:'sex',title:'性别',align:'center',templet:function(d){ + return laytp.tableFormatter.status('sex',d.sex,{"value":["1","2"],"text":["男","女"]}); + }} + ,{field:'vip_time',title:'vip到期时间',align:'center'} + ,{field:'avatar_pic',title:'头像',align:'center',templet:function(d){ + return d.avatar_pic_file ? laytp.tableFormatter.images(d.avatar_pic_file.path) : ""; + }} + ,{field:'login_time',title:'注册时间',align:'center'} + ,{field:'login_ip',title:'登录IP',align:'center'} + ,{field:'status',title:'账号状态',align:'center',templet:function(d){ + return laytpForm.tableForm.switch("status", d, { + "open": {"value": 1, "text": "正常"}, + "close": {"value": 2, "text": "锁定"} + }); + }} + ,{field:'create_time',title:'创建时间',align:'center'} + ,{field:'operation',title:'操作',align:'center',toolbar:'#default-bar',width:180,fixed:'right'} + ]] + }); + + //监听数据表格顶部左侧按钮点击事件 + layui.table.on("toolbar(laytp-table)", function (obj) { + //默认按钮点击事件,包括添加按钮和回收站按钮 + var defaultTableToolbar = layui.context.get("defaultTableToolbar"); + if (defaultTableToolbar.indexOf(obj.event) !== -1) { + laytp.tableToolbar(obj); + } else { + // //自定义按钮点击事件 + // switch(obj.event){ + // //自定义按钮点击事件 + // case "": + // + // break; + // } + } + }); + + //监听数据表格[操作列]按钮点击事件 + layui.table.on("tool(laytp-table)", function (obj) { + var defaultTableTool = layui.context.get("defaultTableTool"); + if (defaultTableTool.indexOf(obj.event) !== -1) { + laytp.tableTool(obj); + } else { + // //自定义按钮点击事件 + // switch(obj.event){ + // //自定义按钮点击事件 + // case "": + // + // break; + // } + } + }); + + //监听表头排序事件 + layui.table.on('sort(laytp-table)', function(obj){ + layui.table.reload('laytp-table', { + initSort: obj //记录初始排序,如果不设的话,将无法标记表头的排序状态。 + , where: { + "order_param" : { + "field" : obj.field, + "type" : obj.type + } + } + }); + }); + }; + + funController.tableRender(); + + window.funController = funController; +}); \ No newline at end of file diff --git a/public/static/admin/js/memberRecycle.js b/public/static/admin/js/memberRecycle.js new file mode 100644 index 0000000000000000000000000000000000000000..6bd53098e692016c997a1724757fe0553d34ae53 --- /dev/null +++ b/public/static/admin/js/memberRecycle.js @@ -0,0 +1,99 @@ +layui.use(['laytp'], function () { + const funRecycleController = {}; + //静态页面地址前缀 + window.htmlPrefix = facade.compatibleHtmlPath("/admin/member/"); + //后端接口地址前缀 + window.apiPrefix = facade.compatibleApiRoute("/admin.member/"); + + //表格渲染 + funRecycleController.tableRender = function (where, page) { + layui.table.render({ + elem: "#laytp-recycle-table" + , limit: facade.getLimit('/admin/member/recycle') + , id: "laytp-recycle-table" + , url: facade.url("/admin.member/recycle",{paging:1}) + , toolbar: "#recycle-default-toolbar" + , defaultToolbar: [{ + title: '刷新', + layEvent: 'recycle-refresh', + icon: 'layui-icon-refresh', + }, 'filter', 'print', 'exports'] + , where: where + , method: "GET" + , cellMinWidth: 120 + , skin: 'line' + , loading: false + , page: { + curr: page + } + , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/member/recycle', res.data.per_page); + return facade.parseTableData(res, true); + } + , cols: [[ //表头 + {type:'checkbox',fixed:'left'} + ,{field:'id',title:'ID',align:'center',width:80,fixed:'left'} + ,{field:'layui_number',title:'序号',align:'center',width:80,type:'numbers'} + ,{field:'email',title:'邮箱',align:'center'} + ,{field:'password',title:'密码',align:'center'} + ,{field:'nickname',title:'昵称',align:'center'} + ,{field:'sex',title:'性别',align:'center',templet:function(d){ + return laytp.tableFormatter.status('sex',d.sex,{"value":["1","2"],"text":["男","女"]}); + }} + ,{field:'vip_time',title:'vip到期时间',align:'center'} + ,{field:'avatar_pic',title:'头像',align:'center',templet:function(d){ + return d.avatar_pic_file ? laytp.tableFormatter.images(d.avatar_pic_file.path) : ""; + }} + ,{field:'login_time',title:'注册时间',align:'center'} + ,{field:'login_ip',title:'登录IP',align:'center'} + ,{field:'status',title:'账号状态',align:'center',templet:function(d){ + return laytpForm.tableForm.recycleSwitch("status", d, { + "open": {"value": 1, "text": "正常"}, + "close": {"value": 2, "text": "锁定"} + }); + }} + ,{field:'create_time',title:'创建时间',align:'center'} + ,{field:'update_time',title:'更新时间',align:'center'} + ,{field:'delete_time',title:'删除时间',align:'center'} + ,{field:'operation',title:'操作',align:'center',toolbar:'#recycle-default-bar',width:180,fixed:'right'} + ]] + }); + + //监听数据表格顶部左侧按钮点击事件 + layui.table.on("toolbar(laytp-recycle-table)", function (obj) { + var defaultTableToolbar = layui.context.get("defaultTableToolbar"); + if (defaultTableToolbar.indexOf(obj.event) !== -1) { + //默认按钮点击事件 + laytp.tableToolbar(obj); + } else { + // //自定义按钮点击事件 + // switch(obj.event){ + // //自定义按钮点击事件 + // case "": + // + // break; + // } + } + }); + + //监听数据表格[操作列]按钮点击事件 + layui.table.on('tool(laytp-recycle-table)', function (obj) { + var defaultTableTool = layui.context.get("defaultTableTool"); + if (defaultTableTool.indexOf(obj.event) !== -1) { + laytp.tableTool(obj); + } else { + // //自定义按钮 + // switch(obj.event){ + // //自定义按钮点击事件 + // case '': + // + // break; + // } + } + }); + }; + + funRecycleController.tableRender(); + + window.funRecycleController = funRecycleController; +}); \ No newline at end of file diff --git a/public/static/admin/js/menu.js b/public/static/admin/js/menu.js index 4783f98cd8c1cf186f4fb6aa6127cc3418b36264..dc567574c550f889d96e3c3f88107916133df176 100644 --- a/public/static/admin/js/menu.js +++ b/public/static/admin/js/menu.js @@ -9,7 +9,8 @@ layui.use(["laytp"], function () { funController.tableRender = function (where) { //treeTable必须赋值,批量操作需要使用这个值获取复选框选中的数据 laytpTreeTable = layui.treeTable.render({ - elem: "#laytp-tree-table" + id: "laytp-tree-table" + , elem: "#laytp-tree-table" , url: facade.url("/admin.menu/index",{is_tree:1}) , where: where , method: "GET" @@ -21,20 +22,22 @@ layui.use(["laytp"], function () { }, 'filter', 'print', 'exports'] , skin: 'line' , tree: { - iconIndex: 2 // 折叠图标显示在第几列 - , arrowType: 'arrow2' // 自定义箭头风格 - , getIcon: function (d) { // 自定义图标 - // d是当前行的数据 - if (d.children && d.children.length > 0) { // 判断是否有子集 - return ''; - } else { - return ''; - } + customName:{ + icon: "show_icon" } } , parseData: function (res) { return facade.parseTableData(res, false); } + , done: function(res, curr, count, origin){ + // 树形表格渲染完成后,展开第一行 + layui.treeTable.expandNode('laytp-tree-table', { + index: 0, // 第一行 + expandFlag: true // 展开 + }); + + layui.laytpTable.treeDone(); + } , cols: [[ //表头 {type: "checkbox"} , {field: "id", title: "ID", align: "center", width: 80} @@ -68,7 +71,7 @@ layui.use(["laytp"], function () { toolbar: "#default-bar", fixed: "right", align: "center", - width: 160 + width: 180 } ]] }); @@ -76,7 +79,7 @@ layui.use(["laytp"], function () { //监听数据表格顶部左侧按钮点击事件 layui.treeTable.on("toolbar(laytp-tree-table)", function (obj) { if (obj.event === "del") { - let checkData = laytpTreeTable.checkStatus(false); + let checkData = layui.treeTable.checkStatus(obj.config.id).data; if (checkData.length === 0) { facade.error("请选择数据"); return false; @@ -101,7 +104,7 @@ layui.use(["laytp"], function () { switch(obj.event){ //复制 case "copy": - var checkData = laytpTreeTable.checkStatus(false); + var checkData = layui.treeTable.checkStatus(obj.config.id).data; if (checkData.length === 0) { facade.error("请选择数据"); return false; @@ -113,7 +116,7 @@ layui.use(["laytp"], function () { break; //移动 case "move": - var checkData = laytpTreeTable.checkStatus(false); + var checkData = layui.treeTable.checkStatus(obj.config.id).data; if (checkData.length === 0) { facade.error("请选择数据"); return false; diff --git a/public/static/admin/js/menuRecycle.js b/public/static/admin/js/menuRecycle.js index cfc5e6509a1dc0c3d246b7c5a82ca0c0a7945977..8bfdd3fa89177dcecc6d6e2114d906ca8fa28b25 100644 --- a/public/static/admin/js/menuRecycle.js +++ b/public/static/admin/js/menuRecycle.js @@ -9,8 +9,9 @@ layui.use(['laytp'], function () { funRecycleController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-recycle-table" + , limit: facade.getLimit('/admin/menu/recycle') , id: "laytp-recycle-table" - , url: facade.url("/admin.menu/recycle") + , url: facade.url("/admin.menu/recycle",{paging:1}) , toolbar: "#recycle-default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(['laytp'], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/menu/recycle', res.data.per_page); return facade.parseTableData(res, true); } , cols: [[ //表头 @@ -60,7 +62,7 @@ layui.use(['laytp'], function () { toolbar: '#recycle-default-bar', fixed: 'right', align: 'center', - width: 140 + width: 180 } ]] }); @@ -114,7 +116,7 @@ layui.use(['laytp'], function () { if (res.code === 0) { parent.funController.tableRender(); funRecycleController.tableRender(); - parent.parent.renderMenu();//重新渲染菜单 + parent.parent.parent.renderMenu();//重新渲染菜单 } }); } else { diff --git a/public/static/admin/js/plugins.js b/public/static/admin/js/plugins.js index e0f41b8035393ed16ea406d7ce94cb540a286e03..b5569687e20a8868f371fd0b50a884192517facb 100644 --- a/public/static/admin/js/plugins.js +++ b/public/static/admin/js/plugins.js @@ -1,4 +1,4 @@ -layui.use(["laytp"], function () { +layui.use(["laytp", "operationDropdown", "context"], function () { const funController = {}; //静态页面地址前缀 window.htmlPrefix = facade.compatibleHtmlPath("/admin/plugins/"); @@ -9,8 +9,9 @@ layui.use(["laytp"], function () { funController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-table" + , limit: facade.getLimit('/admin/plugins/') , id: "laytp-table" - , url: facade.url('/plugins/index') + , url: facade.url('/plugins/index',{paging:1}) , toolbar: "#default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -27,45 +28,89 @@ layui.use(["laytp"], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/plugins/', res.data.per_page); return facade.parseTableData(res, true); } - , done: function(){ + , done: function(obj){ layui.laytpTable.done(); + + var data = obj.data; + var dropdownList = []; + var dk,key = 0; + for(dk in data){ + var versions = data[dk].versions + dropdownList = []; + for(key in versions){ + dropdownList[key] = { + id: 'version_list_' + data[dk].id, + title: versions[key].version_num + ',依赖LT:' + versions[key].lt_version,//文字标题 + data: { + id: data[dk].id, + alias: data[dk].alias, + version_num: versions[key].version_num, + lt_version: versions[key].lt_version, + } + } + } + layui.operationDropdown.render({ + elem: '.version_list_' + data[dk].id, + width: 190, + options: dropdownList, + click: function(option){ + var ltVersionArr = option.data.lt_version.split(' - '); + var ltVersionBoolean = true; + if(ltVersionArr.length == 2){ + if(parent.window.ltVersion < ltVersionArr[0] || parent.window.ltVersion > ltVersionArr[1]){ + ltVersionBoolean = false; + } + }else{ + if(option.data.lt_version > parent.window.ltVersion){ + ltVersionBoolean = false; + } + } + if(ltVersionBoolean){ + funController.installPlugin(option.data, $(this)); + }else{ + facade.error('插件此版本依赖laytp版本为:' + option.data.lt_version + '。 当前laytp版本为' + parent.window.ltVersion); + } + } + }); + } } , cols: [[ {field: "name", title: "插件名称", align: "center", width: 140} , {field: "category", title: "所属分类", align: "center", width: 100, templet:function(d){ - return d.category ? d.category.name : '-'; - }} + return d.category ? d.category.name : '-'; + }} , {field: "desc", title: "简介", align: "center", width: 400} , {field: "alias", title: "别名", align: "center"} , {field: "img", title: "插件图片", align: "center", templet:function(d){ - return d.imgFile ? laytp.tableFormatter.images(d.imgFile.path) : '-'; - }} + return d.imgFile ? laytp.tableFormatter.images(d.imgFile.path) : '-'; + }} , {field: "author", title: "作者", align: "center"} , {field: "price", title: "价格", align: "center", templet:function(d){ - return d.price > 0 ? "¥" + d.price/100 : "免费"; - }} + return d.price > 0 ? "¥" + d.price/100 : "免费"; + }} , {field: "download_num", title: "下载次数", align: "center"} , {field: "version", title: "当前版本", align: "center", templet:function(d){ - return d.version ? d.version : "-"; - }} - , {field: "version", title: "最新版本", align: "center", templet:function(d){ - if(d.lastVersion){ - if(d.version){ - if(d.lastVersion.version_num > d.version){ - return " " + d.lastVersion.version_num; + return d.version ? d.version : "-"; + }} + , {field: "newest_version", title: "最新版本", align: "center", templet:function(d){ + if(d.lastVersion){ + if(d.version){ + if(d.lastVersion.version_num > d.version){ + return " " + d.lastVersion.version_num; + }else{ + return d.lastVersion.version_num; + } }else{ return d.lastVersion.version_num; } }else{ - return d.lastVersion.version_num; + return "-"; } - }else{ - return "-"; - } - }} - , {field: "operation", title: "操作", align: "center", fixed: 'right', toolbar: "#default-bar", width: 140} + }} + , {field: "operation", title: "操作", align: "center", fixed: 'right', toolbar: "#default-bar", width: 240} ]] }); @@ -103,45 +148,20 @@ layui.use(["laytp"], function () { text: "真的卸载吗?卸载前请确保已经备份数据库,卸载插件的同时会将插件相关数据库表一并卸载删除", route: window.apiPrefix + "uninstall", data: {plugin: obj.data.alias} - }, function(){ + }, function(res){ + layui.context.put("pluginConf", res.data.pluginConf);//修改插件配置信息 layui.table.reload("laytp-table"); parent.parent.renderMenu();//重新渲染菜单 }); break; - // 安装 - case "install": - var laytpGwToken = layui.context.get("laytpGwToken"); - if(!laytpGwToken){ - facade.popupDiv({ - title: "会员信息", - path: "/admin/plugins/login.html" - }); + // 安装最新版本 + case "installNewest": + var btnObj = $(this); + if(obj.data.lastVersion.lt_version > parent.window.ltVersion){ + facade.error('请更新laytp核心版本后安装插件此版本。插件此版本依赖laytp核心版本为:' + obj.data.lastVersion.lt_version + '。 laytp当前核心版本为' + parent.window.ltVersion); return false; } - var btnAnim = layui.button.load({elem:$(this)}); - facade.ajax({ - route:"/admin.plugins/install", - data:{"plugin":obj.data.alias, "laytpGwToken":layui.context.get("laytpGwToken").token} - }).done(function(res){ - if(res.code === 0){ - layui.table.reload("laytp-table"); - parent.parent.renderMenu();//重新渲染菜单 - }else if(res.code === 1){ - facade.popupDiv({ - title: "会员信息", - path: "/admin/plugins/login.html" - }); - }else if(res.code === 2){ - facade.popupDiv({ - title: "购买插件", - path: "/admin/plugins/buy.html?name="+obj.data.name+"&alias="+obj.data.alias+"&price="+obj.data.price - }); - } - btnAnim.stop(); - }).fail(function(){ - btnAnim.stop(); - }); - + funController.installPlugin(obj.data, btnObj); break; } } @@ -163,6 +183,50 @@ layui.use(["laytp"], function () { funController.tableRender(); + // 安装插件函数封装 + funController.installPlugin = function(data, btnObj){ + var laytpGwToken = layui.context.get("laytpGwToken"); + if(!laytpGwToken){ + facade.popupDiv({ + title: "会员信息", + path: "/admin/plugins/login.html" + }); + return false; + } + var btnAnim = layui.button.load({elem:btnObj}); + facade.success(data.alias + '插件正在安装中...'); + layui.facade.ajax({ + route:"/admin.plugins/install", + data:{ + "plugin":data.alias, + "laytpGwToken":layui.context.get("laytpGwToken").token, + "pluginVersion":data.version_num, + "ltVersion":parent.window.ltVersion, + } + }).done(function(res){ + if(res.code === 0){ + layui.context.put("pluginConf", res.data.pluginConf);//修改插件配置信息 + layui.table.reload("laytp-table"); + parent.parent.renderMenu();//重新渲染菜单 + }else if(res.code === 1){ + facade.popupDiv({ + title: "会员信息", + path: "/admin/plugins/login.html" + }); + }else if(res.code === 2){ + facade.popupDiv({ + title: "购买插件", + path: "/admin/plugins/buy.html?name="+data.name+"&alias="+data.alias+"&price="+data.price + }); + }else if(res.code === 3){ + facade.error(res["msg"]); + } + btnAnim.stop(); + }).fail(function(){ + btnAnim.stop(); + }); + } + // 离线安装按钮渲染上传组件 var offLineBtnAnim = ''; var uploadInst = layui.upload.render({ diff --git a/public/static/admin/js/role.js b/public/static/admin/js/role.js index 2a8a9e94174f6862e5630efd89b224726f26732a..19689dd0629c9080b47138608fe2b3d147a7f9e9 100644 --- a/public/static/admin/js/role.js +++ b/public/static/admin/js/role.js @@ -9,8 +9,9 @@ layui.use(["laytp"], function () { funController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-table" + , limit: facade.getLimit('/admin/role/') , id: "laytp-table" - , url: facade.url("/admin.role/index") + , url: facade.url("/admin.role/index",{paging:1}) , toolbar: "#default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(["laytp"], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/role/', res.data.per_page); return facade.parseTableData(res, true); } , done: function(){ @@ -41,7 +43,7 @@ layui.use(["laytp"], function () { toolbar: "#default-bar", fixed: "right", align: "center", - width: 140 + width: 180 } ]] }); diff --git a/public/static/admin/js/roleRecycle.js b/public/static/admin/js/roleRecycle.js index e7972c132e3f0a9b88fd27ed2456cc46c7201591..3b60362a82057cb97c275e5c616ef7074fa02aa7 100644 --- a/public/static/admin/js/roleRecycle.js +++ b/public/static/admin/js/roleRecycle.js @@ -9,8 +9,9 @@ layui.use(['laytp'], function () { funRecycleController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-recycle-table" + , limit: facade.getLimit('/admin/role/recycle') , id: "laytp-recycle-table" - , url: facade.url("/admin.role/recycle") + , url: facade.url("/admin.role/recycle",{paging:1}) , toolbar: "#recycle-default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(['laytp'], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/role/recycle', res.data.per_page); return facade.parseTableData(res, true); } , cols: [[ //表头 @@ -38,7 +40,7 @@ layui.use(['laytp'], function () { toolbar: "#recycle-default-bar", fixed: "right", align: "center", - width: 140 + width: 180 } ]] }); diff --git a/public/static/admin/js/user.js b/public/static/admin/js/user.js index 7b6f1e7f31ecb859c5c0fa6522934e7e7a3e0579..399e61faf2b6491f92e43ca55ba1340a33b9a82e 100644 --- a/public/static/admin/js/user.js +++ b/public/static/admin/js/user.js @@ -9,8 +9,9 @@ layui.use(["laytp"], function () { funController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-table" + , limit: facade.getLimit('/admin/user/') , id: "laytp-table" - , url: facade.url("/admin.user/index") + , url: facade.url("/admin.user/index",{paging:1}) , toolbar: "#default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -27,6 +28,7 @@ layui.use(["laytp"], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/user/', res.data.per_page); return facade.parseTableData(res, true); } , done: function(){ @@ -67,7 +69,7 @@ layui.use(["laytp"], function () { } } , {field: "create_time", title: "创建时间", align: "center", width: 160} - , {field: "operation", title: "操作", align: "center", fixed: 'right', toolbar: "#default-bar", width: 140} + , {field: "operation", title: "操作", align: "center", fixed: 'right', toolbar: "#default-bar", width: 180} ]] }); diff --git a/public/static/admin/js/userRecycle.js b/public/static/admin/js/userRecycle.js index 6a000cdf86c06c5e877df0287d2f19892434650c..fdfd2e20ec67e92fd7f6634e8ecb51986c540563 100644 --- a/public/static/admin/js/userRecycle.js +++ b/public/static/admin/js/userRecycle.js @@ -9,8 +9,9 @@ layui.use(['laytp'], function () { funRecycleController.tableRender = function (where, page) { layui.table.render({ elem: "#laytp-recycle-table" + , limit: facade.getLimit('/admin/user/recycle') , id: "laytp-recycle-table" - , url: facade.url("/admin.user/recycle") + , url: facade.url("/admin.user/recycle",{paging:1}) , toolbar: "#recycle-default-toolbar" , defaultToolbar: [{ title: '刷新', @@ -26,6 +27,7 @@ layui.use(['laytp'], function () { curr: page } , parseData: function (res) { //res 即为原始返回的数据 + layui.laytpTable.setLimit('/admin/user/recycle', res.data.per_page); return facade.parseTableData(res, true); } , cols: [[ //表头 @@ -61,7 +63,7 @@ layui.use(['laytp'], function () { toolbar: '#recycle-default-bar', fixed: 'right', align: 'center', - width: 140 + width: 180 } ]] }); diff --git a/public/static/component/laytp/config/laytp.config.json b/public/static/component/laytp/config/laytp.config.json index 52fb9dccf668e9fa09a94dd6e18234ebffde3689..5a33055607c59f3a9314243ef8a3629009bec6f0 100644 --- a/public/static/component/laytp/config/laytp.config.json +++ b/public/static/component/laytp/config/laytp.config.json @@ -1,70 +1,75 @@ { "logo": { - "title": "LayTp 3.0", + "title": "Laytp Admin", "image": "/static/admin/images/logo.png" }, "menu": { - "data": "/static/admin/data/menu1.json", - "accordion": true, + "data": "/admin.menu/getMenuTree", "method": "GET", + "accordion": true, + "collapse": false, "control": false, - "select": "0" + "maxTopMenuNum": 3, + "select": "2", + "async": true }, "tab": { - "muiltTab": true, + "enable": true, "keepState": true, - "tabMax": 30, + "session": true, + "preload": false, + "max": "30", "index": { - "id": "0", - "href": "view/console/console1.html", + "id": "2", + "href": "/admin/console.html", "title": "控制面板" } }, "theme": { "defaultColor": "2", "defaultMenu": "dark-theme", - "allowCustom": true + "defaultHeader": "light-theme", + "allowCustom": true, + "banner": false }, - "colors": [{ + "colors": [ + { "id": "1", - "color": "#2d8cf0" + "color": "#2d8cf0", + "second": "#ecf5ff", + "tableChecked": "#dbe6fb" }, { "id": "2", - "color": "#5FB878" + "color": "#36b368", + "second": "#f0f9eb", + "tableChecked": "#dbfbf0" }, { "id": "3", - "color": "#1E9FFF" - }, { - "id": "4", - "color": "#FFB800" - }, { - "id": "5", - "color": "darkgray" - } - ], - "links": [{ - "icon": "layui-icon layui-icon-auz", - "title": "官方网站", - "href": "http://www.laytp.com" + "color": "#f6ad55", + "second": "#fdf6ec", + "tableChecked": "#fbf0db" }, { - "icon": "layui-icon layui-icon-auz", - "title": "开发文档", - "href": "https://www.laytp.com/doc.html" + "id": "4", + "color": "#f56c6c", + "second": "#fef0f0", + "tableChecked": "#fbe7db" }, { - "icon": "layui-icon layui-icon-auz", - "title": "开源地址", - "href": "https://gitee.com/junstar/laytp" + "id": "5", + "color": "#3963bc", + "second": "#ecf5ff", + "tableChecked": "#dbe0fb" } ], "other": { - "keepLoad": 1200, - "autoHead": false + "keepLoad": "1200", + "autoHead": false, + "footer": false }, "header": { - "message": "/static/admin/data/message.json" + "message": "admin/data/message.json" } } diff --git a/public/static/component/laytp/config/laytp.config.yml b/public/static/component/laytp/config/laytp.config.yml index 46b72cad4eee918c296e880adc6b557e7c0c6f7b..aaaac7e2288b186f8226eb0c2a6cb477fa8dba94 100644 --- a/public/static/component/laytp/config/laytp.config.yml +++ b/public/static/component/laytp/config/laytp.config.yml @@ -1,4 +1,3 @@ ---- ## 网站配置 logo: ## 网站名称 @@ -13,6 +12,8 @@ menu: method: "GET" ## 是否同时只打开一个菜单目录 accordion: true + ## 侧边默认折叠状态 + collapse: false ## 是否开启多系统菜单模式 control: true ## 当control为true时,顶部最多显示多少菜单,其他顶部菜单需要点击最后的顶部下拉菜单进行展示 @@ -22,7 +23,9 @@ menu: ## 是否开启异步菜单,false 时 data 属性设置为菜单数据,true 时为 json 文件或后端接口 async: true ## 视图内容配置 -tab: +tab: + ## 是否开启多选项卡 + enable: true ## 是否开启多选项卡 muiltTab: true ## 保持视图状态 @@ -30,7 +33,7 @@ tab: ## 开启选项卡记忆 session: true ## 最大可打开的选项卡数量 - tabMax: "30" + max: "30" ## 首页 index: id: "2" ## 标识 ID , 建议与菜单项中的 ID 一致 @@ -42,20 +45,34 @@ theme: defaultColor: "2" ## 默认的菜单主题 dark-theme 黑 / light-theme 白 defaultMenu: "dark-theme" + ## 默认的顶部主题 dark-theme 黑 / light-theme 白 + defaultHeader: "light-theme" ## 是否允许用户切换主题,false 时关闭自定义主题面板 allowCustom: true + ## 通栏配置 + banner: false ## 主题色配置列表 colors: - id: "1" color: "#2d8cf0" + second: "#ecf5ff" + tableChecked: "#dbe6fb" - id: "2" color: "#36b368" + second: "#f0f9eb" + tableChecked: "#dbfbf0" - id: "3" color: "#f6ad55" + second: "#fdf6ec" + tableChecked: "#fbf0db" - id: "4" color: "#f56c6c" + second: "#fef0f0" + tableChecked: "#fbe7db" - id: "5" color: "#3963bc" + second: "#ecf5ff" + tableChecked: "#dbe0fb" ## 主题面板的链接列表 links: - icon: "layui-icon layui-icon-website" @@ -72,7 +89,9 @@ other: ## 主页动画时长 keepLoad: "500" ## 布局顶部主题 - autoHead: false + autoHead: true + ## 页脚 + footer: false ## 头部配置 header: ## 站内消息,数据来源,通过 false 设置关闭 diff --git a/public/static/component/laytp/css/laytp.css b/public/static/component/laytp/css/laytp.css index 668ecab5cf11945a92849046b619df7f35dfdb3e..8f9fa70efa4eb93dd5b525df071219f84efe56a4 100644 --- a/public/static/component/laytp/css/laytp.css +++ b/public/static/component/laytp/css/laytp.css @@ -6,6 +6,7 @@ @import url("module/dtree/dtree.css"); @import url("module/iconPicker.css"); @import url("module/treetable.css"); +@import url("module/nprogress.css"); @import url("module/message.css"); @import url("module/cropper.css"); @import url("module/loading.css"); @@ -18,17 +19,17 @@ @import url("module/table.css"); @import url("module/frame.css"); @import url("module/icon.css"); -@import url("module/layer.css?v=1"); +@import url("module/layer.css"); +@import url("module/toast.css"); @import url("module/menu.css"); @import url("module/form.css"); @import url("module/link.css"); -@import url("module/form.css"); @import url("module/code.css"); -@import url("module/link.css"); @import url("module/step.css"); @import url("module/card.css"); @import url("module/tab.css"); @import url("module/tag.css"); -@import url("module/verticalCard.css"); +@import url("module/fullscreen.css"); +@import url("module/popover.min.css"); @import url("module/prettify.css"); -@import url("module/operationDropdown.css"); +@import url("module/operationDropdown.css"); \ No newline at end of file diff --git a/public/static/component/laytp/css/module/button.css b/public/static/component/laytp/css/module/button.css index 49477e8fd0f6d8473f1a5f977a5214b0e453ac4c..4a735dca942bdaf9270cd1aab7e204f6f2f05fbc 100644 --- a/public/static/component/laytp/css/module/button.css +++ b/public/static/component/laytp/css/module/button.css @@ -1,4 +1,3 @@ -/** Buttom 默认*/ .laytp-btn { display: inline-block; line-height: 38px; @@ -13,50 +12,55 @@ height: 38px; font-size: 14px; background-color: white; - border: #dcdfe6; - border-radius: 4px; - box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06); + border: 1px solid #dcdfe6; + border-radius: 2px; } -.laytp-btn i { +.laytp-btn-md i { font-size: 13px; } +.laytp-btn-xs i { + font-size: 10px; +} + .laytp-btn:hover { opacity: .8; filter: alpha(opacity=80); color: #409eff; - border-color: #c6e2ff; background-color: #ECF5FF; } .laytp-btn-danger, .laytp-btn-warming, .laytp-btn-success, -.laytp-btn-primary, -.laytp-btn-normal { +.laytp-btn-normal, +.laytp-btn-primary { + height: 37px; + line-height: 37px; color: #fff !important } + /** Button 主题 */ .laytp-btn-primary { - background-color: #2D8CF0 !important; - border: #2D8CF0; + border: 0px; + background-color: #2D8CF0; } .laytp-btn-danger { + border: 0px; background-color: #f56c6c !important; - border: #f56c6c; } .laytp-btn-warming { + border: 0px; background-color: #f6ad55 !important; - border: #f6ad55; } .laytp-btn-success { - background-color: #5FB878 !important; - border: #5FB878; + border: 0px; + background-color: #36b368 !important; } .laytp-btn-normal { + border: 0px; background-color: #1E9FFF !important; - border: #1E9FFF; } .laytp-btn[round] { @@ -66,7 +70,6 @@ .laytp-btn-primary[plain] { color: #409eff !important; background: #ecf5ff 10% !important; - border-color: #b3d8ff !important; } .laytp-btn-primary[plain]:hover { @@ -74,21 +77,29 @@ background-color: #2d8cf0!important } +.laytp-btn-normal[plain] { + color: #1E9FFF !important; + background: #c7e3f7 !important; +} + +.laytp-btn-normal[plain]:hover { + color: white !important; + background-color: #63b3ed !important +} + .laytp-btn-success[plain] { - color: #67c23a !important; + color: #36b368 !important; background: #f0f9eb !important; - border-color: #c2e7b0 !important; } .laytp-btn-success[plain]:hover { color: white !important; - background-color: #67c23a !important + background-color: #36b368 !important } .laytp-btn-warming[plain] { color: #e6a23c !important; background: #fdf6ec !important; - border-color: #f5dab1 !important; } .laytp-btn-warming[plain]:hover { @@ -99,7 +110,6 @@ .laytp-btn-danger[plain] { color: #f56c6c !important; background: #fef0f0 !important; - border-color: #fbc4c4 !important; } .laytp-btn-danger[plain]:hover { @@ -149,20 +159,23 @@ } /** Button Size*/ -.laytp-btn-sm { - height: 32px; - line-height: 32px; - padding: 0 10px; - font-size: 12px; +/* 极小 */ +.laytp-btn-xs { + height: 24px; + line-height: 24px; + padding: 0 4px; + font-size: 10px!important; } -.laytp-btn-xs { +/* 小 */ +.laytp-btn-sm { height: 28px; line-height: 28px; - padding: 0 8px; + padding: 0 10px; font-size: 12px; } +/* 中 */ .laytp-btn-md { height: 34px; line-height: 34px; @@ -170,6 +183,7 @@ font-size: 12.5px; } +/* 大 */ .laytp-btn-lg { height: 44px; line-height: 44px; diff --git a/public/static/component/laytp/css/module/card.css b/public/static/component/laytp/css/module/card.css index a52a790209bca5c4c6c3525644a233e2a4d18a0d..39b4ed28ec3a169084d39f0a64e883b6912c03e3 100644 --- a/public/static/component/laytp/css/module/card.css +++ b/public/static/component/laytp/css/module/card.css @@ -69,10 +69,25 @@ margin-left: -10px; } -.laytp-card-component { +.cloud-card-component { padding: 20px; } -.laytp-card-component .layui-laypage .layui-laypage-curr .layui-laypage-em { - border-radius: 0px !important; +.cloud-card-component .layui-table-click { + border-radius: 6px!important; } + +.ew-table-loading { + padding: 10px 0; + text-align: center; +} +.ew-table-loading > i { + color: #999; + font-size: 30px; +} +.ew-table-loading.ew-loading-float { + position: absolute; + top: 0; + left: 0; + right: 0; +} \ No newline at end of file diff --git a/public/static/component/laytp/css/module/form.css b/public/static/component/laytp/css/module/form.css index bf246c165a29767039c39d45b7596e034c1cf097..cd844f2368a6e51098a0fce39fb494d75760da66 100644 --- a/public/static/component/laytp/css/module/form.css +++ b/public/static/component/laytp/css/module/form.css @@ -1,40 +1,28 @@ -/*.layui-card-body .layui-form{*/ -/* margin-top: 15px;*/ -/*}*/ -.layui-table, .layui-table-view{ - margin: 0; +.layui-card-body .layui-form{ + margin-top: 15px; } + input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #ccc; } -.layui-input:hover, -.layui-textarea:hover, -.layui-input:focus, -.layui-textarea:focus { - border-color: #eee; -} -.layui-input:focus, -.layui-textarea:focus { - border-color: #5FB878!important; -} .layui-input[success] { - box-shadow: 0px 0px 3px 1px #5FB878 !important; + box-shadow: 0px 0px 0px 3px #f0f9eb !important; border: #5FB878 1px solid!important; } -.layui-input[failure] { - box-shadow: 0px 0px 3px 1px #F56C6C; - border: #F56C6C 1px solid; +.layui-input[failure], +.layui-form-item .layui-form-danger:focus { + box-shadow: 0px 0px 0px 3px #fef0f0 !important; + border: #F56C6C 1px solid!important; } .layui-input, .layui-select, -.layui-textarea { - border-radius: 4px; - border-color: #eee; - transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +.layui-textarea{ + border-color: #eee; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } .layui-form-select dl::-webkit-scrollbar { @@ -63,4 +51,10 @@ textarea::-webkit-input-placeholder { .layui-form-select dl::-webkit-scrollbar-corner { background: #f6f6f6; -} \ No newline at end of file +} + +/* layui 2.6.9 样式变化 */ +.layui-form-select dl dd.layui-this{ + background-color: #F6F6F6; + font-weight: 700; +} diff --git a/public/static/component/laytp/css/module/frame.css b/public/static/component/laytp/css/module/frame.css index c0de495531d21571b522abdb7d81fc3c9a2fdbb2..d44c709afeab8c2359d2fa3694f08b219f83671d 100644 --- a/public/static/component/laytp/css/module/frame.css +++ b/public/static/component/laytp/css/module/frame.css @@ -33,15 +33,15 @@ .laytp-frame .laytp-frame-content { width: 100%; - height: calc(100% - 45px) !important; + height: calc(100% - 0px) !important; } .laytp-frame-loading { position: absolute; display: none; width: 100%; - height: calc(100% - 45px) !important; - top: 42px; + height: calc(100% - 0px) !important; + top: 0px; z-index: 19; background-color: #fff } diff --git a/public/static/component/laytp/css/module/fullscreen.css b/public/static/component/laytp/css/module/fullscreen.css new file mode 100644 index 0000000000000000000000000000000000000000..f0c082e283a6fc2ab46b259325b8228decb83109 --- /dev/null +++ b/public/static/component/laytp/css/module/fullscreen.css @@ -0,0 +1,22 @@ +html:-moz-full-screen { + background: grey; +} +html:-webkit-full-screen { + background: grey; + width: 100%; + height: 100%; +} +html:fullscreen{ + background: grey; + width: 100% !important; + height: 100% !important; +} + +:not(:root):fullscreen::backdrop{ + background:whitesmoke; +} + +.laytp-full-screen { + width: 100% !important; + height: 100% !important; +} \ No newline at end of file diff --git a/public/static/component/laytp/css/module/iconPicker.css b/public/static/component/laytp/css/module/iconPicker.css index 4b01696385a92addcb5a1160e8bbe8e25026958a..5d80b0b951fe91636eb775855528c45765273d56 100644 --- a/public/static/component/laytp/css/module/iconPicker.css +++ b/public/static/component/laytp/css/module/iconPicker.css @@ -1,3 +1,11 @@ -.layui-iconpicker .layui-anim{ - width: 300px!important; +.layui-iconpicker { + width: 295px; +} + +.layui-iconpicker .layui-iconpicker-search .layui-input:focus{ + box-shadow: none!important; +} + +.layui-iconpicker-search .layui-icon { + top: 8px; } \ No newline at end of file diff --git a/public/static/component/laytp/css/module/layer.css b/public/static/component/laytp/css/module/layer.css index 7b7207d2cb98919c07552c7ae1eba00fdf34e3cb..d7014054d43c9cc26e74b6494d2f9bfbec313ff2 100644 --- a/public/static/component/laytp/css/module/layer.css +++ b/public/static/component/laytp/css/module/layer.css @@ -1,45 +1,332 @@ -.layui-layer-msg{ - border-color: transparent!important; - box-shadow: 2px 0 6px rgb(0 21 41 / 0.05)!important; +.layui-layer-msg { + border-color: transparent !important; + box-shadow: 2px 0 6px rgb(0 21 41 / 0.04) !important; } -/*CSS*/ -body .laytp.layui-layer{box-shadow:0 0;} -body .laytp .layui-layer-title{background:#36b368!important; color:#fff; border: none;} -body .laytp .layui-layer-min cite{background-color:#fff;} +/* 扩展动画开始 */ +.laytp-drawer.layui-layer { + border-radius: 0 !important; + overflow: auto; +} + +.laytp-drawer.layui-layer.position-absolute { + position: absolute !important; +} +.laytp-drawer-anim, +.laytp-drawer-anim.layui-anim { + -webkit-animation-duration: .3s; + animation-duration: .3s; + -webkit-animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); + animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); +} + +/* right to left */ +@keyframes layer-rl { + from { + -webkit-transform: translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + opacity: 1; + + } + + to { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +@-webkit-keyframes layer-rl { + from { + -webkit-transform: translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + opacity: 1; + + } + + to { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + } +} + +.layer-anim-rl { + -webkit-animation-name: layer-rl; + animation-name: layer-rl; +} + +/* right to left close */ +@keyframes layer-rl-close { + from { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + -webkit-transform: translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +@-webkit-keyframes layer-rl-close { + from { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + + } + + to { + -webkit-transform: translate3d(100%, 0, 0); + -ms-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } +} + +.layer-anim-rl-close, +.layer-anim-rl.layer-anim-close { + -webkit-animation-name: layer-rl-close; + animation-name: layer-rl-close; +} + +/* left to right */ +@-webkit-keyframes layer-lr { + from { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } + + to { + -webkit-transform: translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + opacity: 1 + } +} + +@keyframes layer-lr { + from { + -webkit-transform: translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + opacity: 1 + } + + to { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +.layer-anim-lr { + -webkit-animation-name: layer-lr; + animation-name: layer-lr +} + +/* left to right close */ +@-webkit-keyframes layer-lr-close { + from { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + -webkit-transform: translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +@keyframes layer-lr-close { + from { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + -webkit-transform: translate3d(-100%, 0, 0); + -ms-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } +} + +.layer-anim-lr-close, +.layer-anim-lr.layer-anim-close { + -webkit-animation-name: layer-lr-close; + animation-name: layer-lr-close +} + +/* top to bottom */ +@-webkit-keyframes layer-tb { + from { + -webkit-transform: translate3d(0, -100%, 0); + -ms-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + opacity: 1; + animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); + } +} + +@keyframes layer-tb { + from { + -webkit-transform: translate3d(0, -100%, 0); + -ms-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + opacity: 1; + animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); + } + + to { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1; + animation-timing-function: cubic-bezier(0.7, 0.3, 0.1, 1); + } +} + +.layer-anim-tb { + -webkit-animation-name: layer-tb; + animation-name: layer-tb +} + +/* top to bottom close */ +@-webkit-keyframes layer-tb-close { + from { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + -webkit-transform: translate3d(0, -100%, 0); + -ms-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes layer-tb-close { + from { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + -webkit-transform: translate3d(0, -100%, 0); + -ms-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +.layer-anim-tb-close, +.layer-anim-tb.layer-anim-close { + -webkit-animation-name: layer-tb-close; + animation-name: layer-tb-close +} + +/* bottom to top */ +@-webkit-keyframes layer-bt { + from { + -webkit-transform: translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + opacity: 1 + } + + to { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +@keyframes layer-bt { + from { + -webkit-transform: translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + opacity: 1 + } + + to { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + opacity: 1 + } +} + +.layer-anim-bt { + -webkit-animation-name: layer-bt; + animation-name: layer-bt +} + +/* bottom to top close */ +@-webkit-keyframes layer-bt-close { + from { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } + + to { + -webkit-transform: translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes layer-bt-close { + from { + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + + } + + to { + -webkit-transform: translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); -body .laytp .layui-layer-setwin > a -{ - background:none !important; + } } -body .laytp .layui-layer-setwin .layui-layer-max:after -{ - font-family:layui-icon!important; - font-style:normal; - font-size:16px; - content:"\e622"; - color: #fff; +.layer-anim-bt-close, +.layer-anim-bt.layer-anim-close { + -webkit-animation-name: layer-bt-close; + animation-name: layer-bt-close } -body .laytp .layui-layer-setwin .layui-layer-max.layui-layer-maxmin:after -{ - font-family:layui-icon!important; - font-style:normal; - font-size:16px; - content:"\e758"; - color: #fff; +.layui-layer-tips.laytpLayerImgTips .layui-layer-content{ + padding: 0; } -body .laytp .layui-layer-setwin .layui-layer-close:after -{ - font-family:layui-icon!important; - font-style:normal; - font-size:16px; - content:"\1006"; - color: #fff; +.layui-layer-tips.laytpLayerImgTips i.layui-layer-TipsG { + border-width: 0; } -/*layui-icon-screen-restore*/ -/*layui-icon-screen-full*/ -/*layui-icon layui-icon-close*/ \ No newline at end of file +/* 扩展动画结束 */ \ No newline at end of file diff --git a/public/static/component/laytp/css/module/layout.css b/public/static/component/laytp/css/module/layout.css index 78ffee2562575c15db8220229d9a7e74c9d3f319..c2d155c21b72a2838c61629a6d38fbc8bc3dd6ef 100644 --- a/public/static/component/laytp/css/module/layout.css +++ b/public/static/component/laytp/css/module/layout.css @@ -1,13 +1,8 @@ .laytp-container { - margin: 10px; + margin: 5px; background-color: whitesmoke; } -.laytp-container-recycle { - margin: 10px; - background-color: #f9f9f9; -} - body::-webkit-scrollbar { width: 0px; height: 0px; @@ -80,7 +75,7 @@ body::-webkit-scrollbar-corner { left: 0px; height: 50px; line-height: 50px; - background-color: #ECF0F1; + background-color: #F8F8F8; border-top: 1px solid #eee; } @@ -94,30 +89,10 @@ body::-webkit-scrollbar-corner { } .main-container .layui-form-item { - /*margin-bottom: 15px !important;*/ + margin-bottom: 15px !important; margin-top: 10px !important; } -.main-container .layui-form-item .layui-form-label { - width: 140px; -} - -.main-container .layui-form-pane .layui-form-item .layui-form-label { - width: 170px; -} - -.main-container .layui-form-item .layui-input-block { - margin-left: 170px; -} - -.main-container .layui-row .layui-input-block { - margin-left: 170px; -} - -.main-container .layui-row .layui-form-label { - width: 140px; -} - .laytp-row::before, .laytp-row::after { content: ""; diff --git a/public/static/component/laytp/css/module/menu.css b/public/static/component/laytp/css/module/menu.css index 58e83f212a0087c43443e9bb9450d51ccc33c162..27391c89fb314fc6303fa2f609e6e398e6becefb 100644 --- a/public/static/component/laytp/css/module/menu.css +++ b/public/static/component/laytp/css/module/menu.css @@ -1,15 +1,9 @@ .laytp-nav-tree { - width: 230px; + width: 230px !important; border-radius: 0px; background-color: #28333E; } -.laytp-nav-tree .layui-nav-item>.search { - height: 56px; - line-height: 56px; - padding: 0 20px; -} - .laytp-nav-tree .layui-nav-item>a { height: 56px; line-height: 56px; @@ -17,15 +11,15 @@ padding-bottom: 0px; } -.layui-nav-tree .layui-nav-item>a .layui-nav-more{ - padding: 0; -} - .laytp-nav-tree .layui-nav-item dd a { height: 48px; line-height: 48px; } +.laytp-nav-tree .layui-nav-item>a .layui-nav-more { + padding: 0px; +} + .laytp-side-scroll::-webkit-scrollbar { width: 0px; height: 0px; @@ -34,11 +28,6 @@ width: 230px; } -.laytp-nav-tree .layui-nav-child { - padding-top: 5px; - padding-bottom: 5px; -} - .laytp-nav-tree .layui-nav-child dd.layui-this, .layui-nav-tree .layui-nav-child dd.layui-this a, .layui-nav-tree .layui-this, @@ -79,7 +68,15 @@ display: none; } +.laytp-nav-tree .layui-nav-item a .layui-badge-dot { + float: right; + right: 13px; +} +.laytp-nav-tree .layui-nav-item a .layui-badge { + float: right; + right: 10px; +} /** 实 现 菜 单 隐 藏 */ .laytp-nav-mini { @@ -114,9 +111,11 @@ .laytp-nav-control.pc .layui-this * { background-color: whitesmoke; } -.laytp-nav-control.pc *{ - color: darkslategray!important; -} + +/*.laytp-nav-control.pc *{*/ + /*color: darkslategray!important;*/ +/*}*/ + .laytp-nav-control.pc .layui-nav-bar{ display: none!important; } @@ -129,15 +128,23 @@ /** 隐 藏 后 子 级 悬 浮 菜 单 */ .laytp-nav-tree .layui-nav-hover { + position: fixed; + min-width: 130px; + padding: 4px; + display: block !important; + background: transparent !important; +} +.laytp-nav-tree .layui-nav-hover:before { + content: ''; + position: absolute; + right: 4px; + left: 4px; + bottom: 0; + top: 0; border-radius: 4px; overflow: hidden; background-color: #28333E; display: block; - position: fixed; - min-width: 130px; - margin-left: 62px; - padding-top: 4px !important; - padding-bottom: 4px !important; box-shadow: 0px 0px 3px lightgray; } .laytp-nav-tree .layui-nav-hover a span { @@ -147,7 +154,7 @@ display: none; } .laytp-nav-tree .layui-nav-child dd a span { - margin-left: 30px !important; + margin-left: 26px !important; } .laytp-nav-tree .layui-nav-child dd a i { display: none; @@ -155,10 +162,11 @@ .laytp-nav-tree .layui-nav-hover dd a span { margin-left: 0px !important; } +.laytp-nav-tree dl { + padding-top: 0; + padding-bottom: 0; +} /** 亮 样 式*/ - -/** 亮 样 式*/ - .dark-theme .layui-nav-tree{ background-color: #28333E!important; } @@ -168,6 +176,7 @@ } .light-theme .laytp-nav-tree, +.light-theme .laytp-nav-tree .layui-nav-hover:before, .light-theme .laytp-nav-tree .layui-nav-child{ background-color: white!important; } @@ -183,11 +192,6 @@ border-bottom-color: dimgray!important; } -.light-theme .laytp-nav-tree .layui-nav-child{ - padding-top: 0px; - padding-bottom: 0px; -} - .light-theme .laytp-nav-tree .layui-this a, .light-theme .laytp-nav-tree .layui-this{ color: white!important; @@ -243,10 +247,21 @@ width: 12px; text-align: center; } +.laytp-nav-tree.arrow .layui-nav-child.layui-nav-hover>dd>a>.layui-nav-more { + display: inline-block !important; + transform: rotate(270deg); + -ms-transform: rotate(270deg); + -moz-transform: rotate(270deg); + -webkit-transform: rotate(270deg); + -o-transform: rotate(270deg); + width: 12px; + text-align: center; + background-color: transparent !important; +} +.laytp-nav-tree.arrow .layui-nav-child.layui-nav-hover>a>.layui-nav-more:before, .laytp-nav-tree.arrow .layui-nav-itemed>a>.layui-nav-more:before { content: '\e61a'; - background-color: transparent; display: inline-block; vertical-align: middle; } diff --git a/public/static/component/laytp/css/module/message.css b/public/static/component/laytp/css/module/message.css index 7f35d81945c484d07c5a2ff82761e6b2c79a401d..075ae1c69ca6184ee15cfde14b68a5991eccf705 100644 --- a/public/static/component/laytp/css/module/message.css +++ b/public/static/component/laytp/css/module/message.css @@ -3,40 +3,131 @@ font-weight: 500; } -.laytp-notice li { +.laytp-notice { + box-shadow: 0 6px 16px -8px rgb(0 0 0 / 8%), 0 9px 28px 0 rgb(0 0 0 / 5%), 0 12px 48px 16px rgb(0 0 0 / 3%)!important; +} + +.laytp-notice .layui-tab-title { + display: flex; + text-align: center; border-right: 1px solid whitesmoke; } -.laytp-notice * { - color: dimgray !important; +.laytp-notice .layui-tab-title li { + flex: 1; + text-align: center; + border-right: 1px solid whitesmoke; +} +/*排除最后一个 li 右边框*/ +.laytp-notice .layui-tab-title li:last-child { + border-right: none; } -.laytp-notice{ - width: 285px!important; +.laytp-notice * { + color: dimgray !important; } -.laytp-notice span{ - margin-left: 20px; - font-size: 13px; +.laytp-notice { + width: 360px !important; } -.laytp-notice img{ +.laytp-notice img { margin-left: 8px; - width: 33px!important; - height: 33px!important; + width: 33px !important; + height: 33px !important; border-radius: 50px; + margin-right: 15px; } -.laytp-notice-item{ - height: 45px!important; - line-height: 45px!important; +.laytp-notice-item { + height: 45px !important; + line-height: 45px !important; + padding-right: 20px; + padding-left: 20px; + border-bottom: 1px solid whitesmoke; + padding-top: 10px; + padding-bottom: 15px; +} +.laytp-notice-end { + float: right; + right: 10px; +} + +.laytp-notice-item span{ + height: 40px; + line-height: 40px; } /** 滚动条样式 */ -.laytp-notice *::-webkit-scrollbar{width:0px;height:0px;} -.laytp-notice *::-webkit-scrollbar-track{background: white;border-radius:2px;} -.laytp-notice *::-webkit-scrollbar-thumb{background: #E6E6E6;border-radius:2px;} -.laytp-notice *::-webkit-scrollbar-thumb:hover{background: #E6E6E6;} -.laytp-notice *::-webkit-scrollbar-corner{background: #f6f6f6;} +.laytp-notice *::-webkit-scrollbar { + width: 0px; + height: 0px; +} + +.laytp-notice *::-webkit-scrollbar-track { + background: white; + border-radius: 2px; +} + +.laytp-notice *::-webkit-scrollbar-thumb { + background: #E6E6E6; + border-radius: 2px; +} + +.laytp-notice *::-webkit-scrollbar-thumb:hover { + background: #E6E6E6; +} + +.laytp-notice *::-webkit-scrollbar-corner { + background: #f6f6f6; +} +/** 增加 empty 样式 */ +.laytp-empty { + font-size: 14px; + line-height: 1.5715; + min-height: 200px; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; +} +.laytp-empty-normal { + margin: 32px 0; + color: #00000040; +} +.laytp-empty-normal .laytp-empty-image { + height: 40px; +} + +.laytp-empty-image { + height: 100px; + margin-bottom: 8px; +} +.laytp-empty-image svg { + height: 100%; + margin: auto; +} + +.laytp-empty-img-simple-g { + stroke: #d9d9d9; +} +.laytp-empty-img-default-g { + fill: #fff; +} +.laytp-empty-img-simple-path { + fill: #fafafa; +} +.laytp-empty-img-default-path-1 { + fill: #aeb8c2; +} +.laytp-empty-img-default-path-2 { + fill: url(#linearGradient-1); +} +.laytp-empty-img-default-path-3 { + fill: #f5f5f7; +} +.laytp-empty-img-default-path-4, .laytp-empty-img-default-path-5 { + fill: #dce0e6; +} diff --git a/public/static/component/laytp/css/module/notice.css b/public/static/component/laytp/css/module/notice.css index 0705ab25e6e8f07b6652cdca4c89d0818f8faf0c..321deafc3a24f4d334de6d6b616c19c423013a34 100644 --- a/public/static/component/laytp/css/module/notice.css +++ b/public/static/component/laytp/css/module/notice.css @@ -44,13 +44,13 @@ } /*Additional properties for button version iOS requires the button element instead of an anchor tag. - If you want the anchor version, it requires `href="javascript:void(0);"`.*/ + If you want the anchor version, it requires `href="#"`.*/ button.toast-close-button { padding: 0; cursor: pointer; background: transparent; border: 0; - -webkit-appearance: none; + -webkit-aplaytpance: none; } .toast-top-center { top: 0; diff --git a/public/static/component/laytp/css/module/nprogress.css b/public/static/component/laytp/css/module/nprogress.css new file mode 100644 index 0000000000000000000000000000000000000000..24c5cf192b81ef4523001c04086c6adf826bb4e5 --- /dev/null +++ b/public/static/component/laytp/css/module/nprogress.css @@ -0,0 +1,73 @@ +/* Make clicks pass-through */ +#nprogress { + pointer-events: none; +} + +#nprogress .bar { + background: #29d; + + position: fixed; + z-index: 999999; + top: 0; + left: 0; + + width: 100%; + height: 2px; +} + +/* Fancy blur effect */ +#nprogress .peg { + display: block; + position: absolute; + right: 0px; + width: 100px; + height: 100%; + box-shadow: 0 0 10px #29d, 0 0 5px #29d; + opacity: 1.0; + + -webkit-transform: rotate(3deg) translate(0px, -4px); + -ms-transform: rotate(3deg) translate(0px, -4px); + transform: rotate(3deg) translate(0px, -4px); +} + +/* Remove these to get rid of the spinner */ +#nprogress .spinner { + display: block; + position: fixed; + z-index: 1031; + top: 15px; + right: 15px; +} + +#nprogress .spinner-icon { + width: 18px; + height: 18px; + box-sizing: border-box; + + border: solid 2px transparent; + border-top-color: #29d; + border-left-color: #29d; + border-radius: 50%; + + -webkit-animation: nprogress-spinner 400ms linear infinite; + animation: nprogress-spinner 400ms linear infinite; +} + +.nprogress-custom-parent { + overflow: hidden; + position: relative; +} + +.nprogress-custom-parent #nprogress .spinner, +.nprogress-custom-parent #nprogress .bar { + position: absolute; +} + +@-webkit-keyframes nprogress-spinner { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(360deg); } +} +@keyframes nprogress-spinner { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} \ No newline at end of file diff --git a/public/static/component/laytp/css/module/popover.min.css b/public/static/component/laytp/css/module/popover.min.css new file mode 100644 index 0000000000000000000000000000000000000000..453a50fad00258cd432ec6a0a58b3634c7335ffe --- /dev/null +++ b/public/static/component/laytp/css/module/popover.min.css @@ -0,0 +1 @@ +.webui-popover-content{display:none}.webui-popover-rtl{direction:rtl;text-align:right}.webui-popover{position:absolute;top:0;left:0;z-index:9999;display:none;min-width:50px;min-height:32px;padding:1px;text-align:left;white-space:normal;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}.webui-popover.top,.webui-popover.top-left,.webui-popover.top-right{margin-top:-10px}.webui-popover.right,.webui-popover.right-top,.webui-popover.right-bottom{margin-left:10px}.webui-popover.bottom,.webui-popover.bottom-left,.webui-popover.bottom-right{margin-top:10px}.webui-popover.left,.webui-popover.left-top,.webui-popover.left-bottom{margin-left:-10px}.webui-popover.pop{-webkit-transform:scale(0.8);-o-transform:scale(0.8);transform:scale(0.8);-webkit-transition:transform .15s cubic-bezier(0.3,0,0,1.5);-o-transition:transform .15s cubic-bezier(0.3,0,0,1.5);transition:transform .15s cubic-bezier(0.3,0,0,1.5);opacity:0;filter:alpha(opacity=0)}.webui-popover.pop-out{-webkit-transition-property:"opacity,transform";-o-transition-property:"opacity,transform";transition-property:"opacity,transform";-webkit-transition:.15s linear;-o-transition:.15s linear;transition:.15s linear;opacity:0;filter:alpha(opacity=0)}.webui-popover.fade,.webui-popover.fade-out{-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear;opacity:0;filter:alpha(opacity=0)}.webui-popover.out{opacity:0;filter:alpha(opacity=0)}.webui-popover.in{-webkit-transform:none;-o-transform:none;transform:none;opacity:1;filter:alpha(opacity=100)}.webui-popover .webui-popover-content{padding:9px 14px;overflow:auto;display:block}.webui-popover .webui-popover-content>div:first-child{width:99%}.webui-popover-inner .close{font-family:arial;margin:8px 10px 0 0;float:right;font-size:16px;font-weight:700;line-height:16px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20);text-decoration:none}.webui-popover-inner .close:hover,.webui-popover-inner .close:focus{opacity:.5;filter:alpha(opacity=50)}.webui-popover-inner .close:after{content:"\00D7";width:.8em;height:.8em;padding:4px;position:relative}.webui-popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:700;line-height:18px;background-color:#fff;border-bottom:1px solid #f2f2f2;border-radius:5px 5px 0 0}.webui-popover-content{padding:9px 14px;overflow:auto;display:none}.webui-popover-inverse{background-color:#333;color:#eee}.webui-popover-inverse .webui-popover-title{background:#333;border-bottom:1px solid #3b3b3b;color:#eee}.webui-no-padding .webui-popover-content{padding:0}.webui-no-padding .list-group-item{border-right:none;border-left:none}.webui-no-padding .list-group-item:first-child{border-top:0}.webui-no-padding .list-group-item:last-child{border-bottom:0}.webui-popover>.webui-arrow,.webui-popover>.webui-arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.webui-popover>.webui-arrow{border-width:11px}.webui-popover>.webui-arrow:after{border-width:10px;content:""}.webui-popover.top>.webui-arrow,.webui-popover.top-right>.webui-arrow,.webui-popover.top-left>.webui-arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.webui-popover.top>.webui-arrow:after,.webui-popover.top-right>.webui-arrow:after,.webui-popover.top-left>.webui-arrow:after{content:" ";bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.webui-popover.right>.webui-arrow,.webui-popover.right-top>.webui-arrow,.webui-popover.right-bottom>.webui-arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.webui-popover.right>.webui-arrow:after,.webui-popover.right-top>.webui-arrow:after,.webui-popover.right-bottom>.webui-arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.webui-popover.bottom>.webui-arrow,.webui-popover.bottom-right>.webui-arrow,.webui-popover.bottom-left>.webui-arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.webui-popover.bottom>.webui-arrow:after,.webui-popover.bottom-right>.webui-arrow:after,.webui-popover.bottom-left>.webui-arrow:after{content:" ";top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.webui-popover.left>.webui-arrow,.webui-popover.left-top>.webui-arrow,.webui-popover.left-bottom>.webui-arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.webui-popover.left>.webui-arrow:after,.webui-popover.left-top>.webui-arrow:after,.webui-popover.left-bottom>.webui-arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.webui-popover-inverse.top>.webui-arrow,.webui-popover-inverse.top-left>.webui-arrow,.webui-popover-inverse.top-right>.webui-arrow,.webui-popover-inverse.top>.webui-arrow:after,.webui-popover-inverse.top-left>.webui-arrow:after,.webui-popover-inverse.top-right>.webui-arrow:after{border-top-color:#333}.webui-popover-inverse.right>.webui-arrow,.webui-popover-inverse.right-top>.webui-arrow,.webui-popover-inverse.right-bottom>.webui-arrow,.webui-popover-inverse.right>.webui-arrow:after,.webui-popover-inverse.right-top>.webui-arrow:after,.webui-popover-inverse.right-bottom>.webui-arrow:after{border-right-color:#333}.webui-popover-inverse.bottom>.webui-arrow,.webui-popover-inverse.bottom-left>.webui-arrow,.webui-popover-inverse.bottom-right>.webui-arrow,.webui-popover-inverse.bottom>.webui-arrow:after,.webui-popover-inverse.bottom-left>.webui-arrow:after,.webui-popover-inverse.bottom-right>.webui-arrow:after{border-bottom-color:#333}.webui-popover-inverse.left>.webui-arrow,.webui-popover-inverse.left-top>.webui-arrow,.webui-popover-inverse.left-bottom>.webui-arrow,.webui-popover-inverse.left>.webui-arrow:after,.webui-popover-inverse.left-top>.webui-arrow:after,.webui-popover-inverse.left-bottom>.webui-arrow:after{border-left-color:#333}.webui-popover i.icon-refresh:before{content:""}.webui-popover i.icon-refresh{display:block;width:30px;height:30px;font-size:20px;top:50%;left:50%;position:absolute;margin-left:-15px;margin-right:-15px;background:url(../img/loading.gif) no-repeat}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg)}}@keyframes rotate{100%{transform:rotate(360deg)}}.webui-popover-backdrop{background-color:rgba(0,0,0,.65);width:100%;height:100%;position:fixed;top:0;left:0;z-index:9998}.webui-popover .dropdown-menu{display:block;position:relative;top:0;border:none;box-shadow:none;float:none} \ No newline at end of file diff --git a/public/static/component/laytp/css/module/prettify.css b/public/static/component/laytp/css/module/prettify.css index 937ec007bfcff08807a94d73e9394f37c333834f..9415f1ce260d2253911484c7a650a4b5cdf29013 100644 --- a/public/static/component/laytp/css/module/prettify.css +++ b/public/static/component/laytp/css/module/prettify.css @@ -3,6 +3,7 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + line-height: 18px; } .main-container .layui-card-header { @@ -18,10 +19,6 @@ padding-top: 0; } -.layui-card-body { - background-color: #fdfdfd; -} - .layui-colorpicker.layui-colorpicker-xs{ width:26px !important; height:26px !important; @@ -37,6 +34,10 @@ width:10px; } +.laytp-container .layui-card{ + margin-bottom: 0px; +} + .layui-table-body::-webkit-scrollbar{ height:10px; } @@ -46,29 +47,36 @@ * 增加了laytp-tree-horizontal样式的树形组件,最后一级会横向排列 * 增加了laytp-tree-horizontal样式的树形组件,在表单中 layui-form-mid样式优化 layui-tree-entry样式优化 */ -.laytp-tree-horizontal .layui-tree-pack.layui-tree-lineExtend .layui-tree-set.layui-tree-spread { - display: inline-block !important; - width: auto; -} - -.laytp-tree-horizontal .layui-table-body::-webkit-scrollbar{ - width:10px; -} - -.laytp-tree-horizontal.layui-form-mid{ - padding: 5px 0!important; -} - -.layui-tree-entry{ - height: 26px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.layui-table .layui-form-switch{ - margin-top: 0; -} +/*.laytp-tree-horizontal .layui-tree-pack.layui-tree-showLine .layui-tree-set.layui-tree-spread {*/ + /*display: inline-block !important;*/ + /*width: auto;*/ + /*min-width: 20%;*/ +/*}*/ + +/*!*.laytp-tree-horizontal .layui-tree-set.layui-tree-spread.layui-tree-setLineShort .layui-tree-set.layui-tree-spread {*!*/ + /*!*display: inline-block !important;*!*/ + /*!*width: auto;*!*/ + /*!*min-width: 20%;*!*/ +/*!*}*!*/ + +/*.laytp-tree-horizontal .layui-table-body::-webkit-scrollbar{*/ + /*width:10px;*/ +/*}*/ + +/*.laytp-tree-horizontal.layui-form-mid{*/ + /*padding: 5px 0!important;*/ +/*}*/ + +/*.layui-tree-entry{*/ + /*height: 26px;*/ + /*white-space: nowrap;*/ + /*overflow: hidden;*/ + /*text-overflow: ellipsis;*/ +/*}*/ + +/*.layui-table .layui-form-switch{*/ + /*margin-top: 0;*/ +/*}*/ .conf-des { padding: 0 !important; @@ -88,4 +96,27 @@ .layui-table-view .layui-table{ width: 100%!important; +} + +/** + * 美化xm-select,当设置了副标题时,文字显示颜色和选中时文字显示颜色 + */ +xm-select > .xm-body .xm-option.selected .xm-option-content span{ + color: #FFF !important; +} + +xm-select > .xm-body .xm-option .xm-option-content span{ + color: #8799a3 !important; +} + +/** + * 美化layer弹窗,当设置的遮罩层透明度很低时,弹窗周边会有黑色阴影部分 + */ +.layui-layer{ + box-shadow: 1px 1px 2px rgba(0,0,0,.3); +} + +.layui-layer-border{ + border-width:0; + box-shadow: 1px 1px 2px rgba(0,0,0,.2); } \ No newline at end of file diff --git a/public/static/component/laytp/css/module/select.css b/public/static/component/laytp/css/module/select.css index d30132707b2d9b49c4e3ed0cebc3695d015d42e4..53285a6881bce8189bd05d23e4f2757f31ea8e43 100644 --- a/public/static/component/laytp/css/module/select.css +++ b/public/static/component/laytp/css/module/select.css @@ -439,13 +439,13 @@ div[xm-select-skin=default].xm-form-selected .xm-select:hover { } div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span { - background-color: #5FB878!important + background-color: #5FB878!important; color: #FFF; border: 1px solid #5FB878!important } div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span i { - background-color: #5FB878!important + background-color: #5FB878!important; color: #FFF } @@ -517,7 +517,7 @@ div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span { } div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span i { - background-color:#f56c6c!important + background-color:#f56c6c!important; color: #FFF } @@ -820,8 +820,3 @@ div[xm-select-search-type="1"] .xm-select .xm-select-input { .icon-expand:before { content: "\e641"; } - -.xm-select-parent .xm-form-select dl{ - position: relative; - top: 5px!important; -} diff --git a/public/static/component/laytp/css/module/tab.css b/public/static/component/laytp/css/module/tab.css index df426cfd65c4ef9fec219ffc40319b87b8d8414f..f5b4742d58c55eba4f713da9f0d8d14a2a7d4727 100644 --- a/public/static/component/laytp/css/module/tab.css +++ b/public/static/component/laytp/css/module/tab.css @@ -47,7 +47,6 @@ border-right: 1px solid whitesmoke; color: dimgray; font-size: 13.5px; - line-height: 41px; } .laytp-tab .layui-tab-title .layui-tab-bar { diff --git a/public/static/component/laytp/css/module/table.css b/public/static/component/laytp/css/module/table.css index 16a4e14bf3d88e9d9b27e0a5c469a9a9180294a4..d746ed369bc93c98c2dce448912ccff7701756c5 100644 --- a/public/static/component/laytp/css/module/table.css +++ b/public/static/component/laytp/css/module/table.css @@ -1,72 +1,41 @@ -table{ - /*border-collapse: separate !important;*/ -} - .layui-table-tool-panel { margin-top: 10px !important; } .layui-table-tool { background-color: white !important; - /*border-bottom: none !important;*/ + border-bottom: none !important; padding-bottom: 10px !important; - border-width: 0 0 1px 0 !important; - border-color: #fff; -} - -.layui-table-tool.laytp-tree-table-tool { - border-width: 0 0 1px 0; - border-color: #eee; -} - -.layui-table-view .layui-table-header{ - /*border-width: 0 1px 0 0;*/ - /*border-width: 0;*/ } -.layui-table-view .layui-table-header .layui-table th{ - font-weight: bold; -} - -.laytp-tree-table-box .layui-table thead th{ - font-weight: bold; -} - -.layui-table-view .layui-table-header .layui-table[lay-skin=line]{ - border-width: 0 0 1px 1px; - border-style: solid; - border-color: #eee; -} - -.layui-table-view .layui-table[lay-skin=line]{ - border-width: 0; -} - -.layui-table-view .layui-table-header .layui-table[lay-skin=line] td, .layui-table[lay-skin=line] th { - border-width: 0 1px 1px 1px !important; +.layui-table-header, +.layui-table-header th { + background-color: white !important; } .layui-table-view { border: none !important; } +/** 兼容 layui 2.7.0 升级 table cell 单元格边距的调整 */ +.layui-table-view .layui-table td, .layui-table-view .layui-table th { + padding: 5px 0px; +} + .layui-table-cell { - height: 34px !important; - line-height: 34px !important; + height: 34px; + line-height: 34px; } .layui-table .layui-laypage .layui-laypage-curr .layui-laypage-em { border-radius: 50px !important; + border-radius: 4px!important; background-color: #5FB878 !important; } -.layui-table-view .layui-table{ - width: 100%; -} - .layui-table tr { - height: 34px !important; - line-height: 34px !important; + height: 34px; + line-height: 34px; } .layui-table-cell { @@ -74,7 +43,7 @@ table{ } .layui-table-box * { - font-size: 13px !important; + font-size: 13px; } .layui-table-page .layui-laypage input { @@ -82,8 +51,12 @@ table{ height: 26.5px!important; } -.layui-table-box button { - font-size: 12px !important; +.layui-table-cell .laytp-btn { + margin-right: 5px; +} + +.layui-table-cell .laytp-btn:last-child { + margin-right: 0px; } .layui-table-page { @@ -98,19 +71,21 @@ table{ line-height: 20px !important; } -.layui-table-view .layui-table-body .layui-table[lay-skin=line] { +.layui-table-view .layui-table[lay-skin=line] { border: none !important; - height: 100%; } -.layui-table-body::-webkit-scrollbar { - width: 0px; - height: 0px; + +.layui-table-init .layui-icon{ + font-size: 40px !important; + margin: -15px 0 0 -15px; } +/* 美化表格右侧滚动条 */ .layui-table-body::-webkit-scrollbar { width: 6px; height: 6px; } + .layui-table-body::-webkit-scrollbar-track { background: white; border-radius: 2px; @@ -128,3 +103,27 @@ table{ .layui-table-body::-webkit-scrollbar-corner { background: #f6f6f6; } + +/* 美化搜索表单右侧滚动条 */ +.search-form-body::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +.search-form-body::-webkit-scrollbar-track { + background: white; + border-radius: 2px; +} + +.search-form-body::-webkit-scrollbar-thumb { + background: #E6E6E6; + border-radius: 2px; +} + +.search-form-body::-webkit-scrollbar-thumb:hover { + background: #E6E6E6; +} + +.search-form-body::-webkit-scrollbar-corner { + background: #f6f6f6; +} diff --git a/public/static/component/laytp/css/module/toast.css b/public/static/component/laytp/css/module/toast.css new file mode 100644 index 0000000000000000000000000000000000000000..5472da53e9f8d9f310903b5fa7026b32491f689e --- /dev/null +++ b/public/static/component/laytp/css/module/toast.css @@ -0,0 +1,1929 @@ +.iziToast-capsule { + font-size: 0; + height: 0; + width: 100%; + transform: translateZ(0); + backface-visibility: hidden; + transition: transform 0.5s cubic-bezier(0.25, 0.8, 0.25, 1), height 0.5s cubic-bezier(0.25, 0.8, 0.25, 1); +} + +.iziToast-capsule, .iziToast-capsule * { + box-sizing: border-box; +} + +.iziToast-overlay { + display: block; + position: fixed; + top: -100px; + left: 0; + right: 0; + bottom: -100px; + z-index: 19891100; +} + +.iziToast { + display: inline-block; + clear: both; + position: relative; + font-family: 'Lato', Tahoma, Arial; + font-size: 14px; + padding: 8px 45px 9px 0; + background: #fff; + border-color: #fff; + width: 100%; + pointer-events: all; + cursor: default; + transform: translateX(0); + -webkit-touch-callout: none /* iOS Safari */; + -webkit-user-select: none /* Chrome/Safari/Opera */; + -khtml-user-select: none /* Konqueror */; + -moz-user-select: none /* Firefox */; + -ms-user-select: none /* Internet Explorer/Edge */; + user-select: none; + min-height: 45px; + box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1); + max-width: 90%; + margin: 5px 0; + border-radius: 4px; +} + +.iziToast > .iziToast-progressbar { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + z-index: 1; + background: rgba(255, 255, 255, 0.5); +} + +.iziToast > .iziToast-progressbar > div { + height: 2px; + width: 100%; + background: #dddddd; + border-radius: 0 0 3px 3px; +} + +.iziToast.iziToast-theme-dark > .iziToast-progressbar > div { + background: #fff; +} + +.iziToast.iziToast-balloon:before { + content: ''; + position: absolute; + right: 8px; + left: auto; + width: 0px; + height: 0px; + top: 100%; + border-right: 0px solid transparent; + border-left: 15px solid transparent; + border-top: 10px solid #000; + border-top-color: inherit; + border-radius: 0; +} + +.iziToast.iziToast-balloon .iziToast-progressbar { + top: 0; + bottom: auto; +} + +.iziToast.iziToast-balloon > div { + border-radius: 0 0 0 3px; +} + +.iziToast > .iziToast-cover { + position: absolute; + left: 0; + top: 0; + bottom: 0; + height: 100%; + margin: 0; + background-size: 100%; + background-position: 50% 50%; + background-repeat: no-repeat; +} + +.iziToast > .iziToast-close { + position: absolute; + right: 0; + top: 0; + border: 0; + padding: 0; + opacity: 0.6; + width: 42px; + height: 100%; + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAJPAAACTwBcGfW0QAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAD3SURBVFiF1ZdtDoMgDEBfdi4PwAX8vLFn0qT7wxantojKupmQmCi8R4tSACpgjC2ICCUbEBa8ingjsU1AXRBeR8aLN64FiknswN8CYefBBDQ3whuFESy7WyQMeC0ipEI0A+0FeBvHUFN8xPaUhAH/iKoWsnXHGegy4J0yxialOfaHJAz4bhRzQzgDvdGnz4GbAonZbCQMuBm1K/kcFu8Mp1N2cFFpsxsMuJqqbIGExGl4loARajU1twskJLLhIsID7+tvUoDnIjTg5T9DPH9EBrz8rxjPzciAl9+O8SxI8CzJ8CxKFfh3ynK8Dyb8wNHM/XDqejx/AtNyPO87tNybAAAAAElFTkSuQmCC") no-repeat 50% 50%; + background-size: 8px; + cursor: pointer; + outline: none; +} + +.iziToast > .iziToast-close:hover { + opacity: 1; +} + +.iziToast > .iziToast-body { + position: relative; + padding: 0 0 0 10px; + height: auto; + min-height: 28px; + margin: 0 0 0 15px; + text-align: left; +} + +.iziToast > .iziToast-body:after { + content: ""; + display: table; + clear: both; +} + +.iziToast > .iziToast-body .iziToast-texts { + margin: 6px 0; + padding-right: 2px; + display: inline-block; + float: left; +} + +.iziToast > .iziToast-body .iziToast-inputs { + min-height: 19px; + float: left; + margin: 3px -2px; +} + +.iziToast > .iziToast-body .iziToast-inputs > input:not([type=checkbox]):not([type=radio]), +.iziToast > .iziToast-body .iziToast-inputs > select { + position: relative; + display: inline-block; + margin: 2px; + border-radius: 2px; + border: 0; + padding: 4px 7px; + font-size: 13px; + letter-spacing: 0.02em; + background: rgba(0, 0, 0, 0.1); + color: #000; + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2); + min-height: 26px; +} + +.iziToast > .iziToast-body .iziToast-inputs > input:not([type=checkbox]):not([type=radio]):focus, +.iziToast > .iziToast-body .iziToast-inputs > select:focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.6); +} + +.iziToast > .iziToast-body .iziToast-buttons { + min-height: 17px; + float: left; + margin: 4px 0 0 0; +} + +.iziToast > .iziToast-body .iziToast-buttons > a, +.iziToast > .iziToast-body .iziToast-buttons > button, +.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]) { + position: relative; + display: inline-block; + margin: 2px; + border-radius: 2px; + border: 0; + padding: 5px 10px; + font-size: 12px; + letter-spacing: 0.02em; + cursor: pointer; + background: rgba(0, 0, 0, 0.1); + color: #555; +} + +.iziToast > .iziToast-body .iziToast-buttons > a:hover, +.iziToast > .iziToast-body .iziToast-buttons > button:hover, +.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]):hover { + background: rgba(0, 0, 0, 0.15); +} + +.iziToast > .iziToast-body .iziToast-buttons > a:focus, +.iziToast > .iziToast-body .iziToast-buttons > button:focus, +.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]):focus { + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.6); +} + +.iziToast > .iziToast-body .iziToast-buttons > a:active, +.iziToast > .iziToast-body .iziToast-buttons > button:active, +.iziToast > .iziToast-body .iziToast-buttons > input:not([type=checkbox]):not([type=radio]):active { + top: 1px; +} + +.iziToast > .iziToast-body .iziToast-icon { + height: 100%; + position: absolute; + left: 0; + top: 50%; + display: table; + font-size: 23px; + line-height: 24px; + margin-top: -11px; + color: #000; + width: 24px; + height: 24px; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-info { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcxMTk5MzYwIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEwODAzIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTUxMiAyOC40MTZjLTI2Ny40Njg4IDAtNDg0LjI0OTYgMjE2LjgzMi00ODQuMjQ5NiA0ODQuMjQ5NiAwIDI2Ny40MTc2IDIxNi44MzIgNDg0LjI0OTYgNDg0LjI0OTYgNDg0LjI0OTYgMjY3LjQxNzYgMCA0ODQuMzAwOC0yMTYuODMyIDQ4NC4zMDA4LTQ4NC4yNDk2Qzk5Ni4zMDA4IDI0NS4yNDggNzc5LjQxNzYgMjguNDE2IDUxMiAyOC40MTZ6TTQ1NS41MjY0IDI0NS4wOTQ0QzQ3MC4zMjMyIDIyOS44ODggNDkwLjcwMDggMjIxLjMzNzYgNTExLjc5NTIgMjIxLjY0NDhjMjEuMTk2OC0wLjIwNDggNDEuNzc5MiA4LjI0MzIgNTYuNTI0OCAyMy40NDk2IDE1LjAwMTYgMTQuNzk2OCAyMy4yOTYgMzUuMTIzMiAyMy4wOTEyIDU2LjExNTIgMC4yMDQ4IDIxLjE5NjgtOC4yOTQ0IDQxLjU3NDQtMjMuMzk4NCA1Ni4yMTc2LTE0LjY5NDQgMTQuNjk0NC0zNC43MTM2IDIzLjA0LTU1LjM5ODQgMjMuMDRMNTExLjc5NTIgMzgwLjQ2NzJjLTIwLjk5MiAwLjIwNDgtNDEuMzY5Ni04LjE0MDgtNTYuMDY0LTIzLjE0MjRDNDQwLjY3ODQgMzQyLjY4MTYgNDMyLjMzMjggMzIyLjMwNCA0MzIuNTM3NiAzMDEuMjA5NiA0MzIuMzMyOCAyODAuMjE3NiA0NDAuNjc4NCAyNTkuODkxMiA0NTUuNTI2NCAyNDUuMDk0NHpNNjI3LjYwOTYgNzY4LjE1MzZsMCAxMy40MTQ0IDAgMjIuMjIwOEwzOTYuMjg4IDgwMy43ODg4bDAtNTcuMTM5MiAyMS42MDY0LTAuNzY4YzEwLjI0LTAuNDYwOCAxNC41OTItMi43MTM2IDE2Ljk5ODQtNC43NjE2bDEuMjI4OC01LjQyNzJjMC45NzI4LTUuNTgwOCAxLjYzODQtMTQuNDM4NCAxLjU4NzItMjUuOTA3Mkw0MzcuNzA4OCA1MDcuOTA0YzAuMjU2LTE3Ljc2NjQtMi4zNTUyLTI5LjkwMDgtMy40ODE2LTMyLjU2MzJsMCAwTDQzMS42MTYgNDc0LjA2MDhDNDI4Ljg1MTIgNDczLjA4OCA0MjMuOTM2IDQ3Mi4wNjQgNDE3LjE3NzYgNDcxLjY1NDRMMzk2LjI4OCA0NzAuMzc0NCAzOTYuMjg4IDQxMy40OTEybDE4OS40OTEyIDAgMCAyOTYuMjk0NGMtMC4zMDcyIDE3LjcxNTIgMi40MDY0IDI5Ljc5ODQgMy40MzA0IDMyLjU2MzJsMC4wNTEyIDAgMi43MTM2IDEuMTc3NmMyLjgxNiAwLjk3MjggNy43ODI0IDEuOTk2OCAxNC42OTQ0IDIuMzU1MmwyMC44ODk2IDEuMjhMNjI3LjU1ODQgNzY4LjE1MzZ6IiBwLWlkPSIxMDgwNCIgZmlsbD0iIzQwOUVGRiI+PC9wYXRoPjwvc3ZnPg==") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-warning { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcwODczNzUzIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUxMTgiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNTEyLjAyMzI3MyAxMDI0Qzc5NC43NjM2MzYgMTAyNCAxMDI0IDc5NC43ODY5MDkgMTAyNCA1MTEuOTc2NzI3IDEwMjQgMjI5LjIzNjM2NCA3OTQuNzg2OTA5LTAuMDIzMjczIDUxMi4wMjMyNzMtMC4wMjMyNzNTMCAyMjkuMjEzMDkxIDAgNTExLjk3NjcyN0MwIDc5NC43ODY5MDkgMjI5LjIzNjM2NCAxMDI0IDUxMi4wMjMyNzMgMTAyNE00NjkuMzQxMDkxIDc2OGMwLTIzLjU1MiAxOC45MjA3MjctNDIuNjU4OTA5IDQyLjcwNTQ1NS00Mi42NTg5MDkgMjMuNTUyIDAgNDIuNjU4OTA5IDE4LjkyMDcyNyA0Mi42NTg5MDkgNDIuNjU4OTA5IDAgMjMuNTc1MjczLTE4LjkyMDcyNyA0Mi43MDU0NTUtNDIuNjU4OTA5IDQyLjcwNTQ1NUM0ODguNDcxMjczIDgxMC43MDU0NTUgNDY5LjM0MTA5MSA3OTEuNzM4MTgyIDQ2OS4zNDEwOTEgNzY4TTQ2OS4zNDEwOTEgMjU1LjgxMzgxOGMwLTIzLjQ1ODkwOSAxOC45MjA3MjctNDIuNDcyNzI3IDQyLjcwNTQ1NS00Mi40NzI3MjcgMjMuNTUyIDAgNDIuNjU4OTA5IDE5LjQzMjcyNyA0Mi42NTg5MDkgNDIuNDcyNzI3bDAgMzQxLjczNjcyN2MwIDIzLjQ1ODkwOS0xOC45MjA3MjcgNDIuNDcyNzI3LTQyLjY1ODkwOSA0Mi40NzI3MjctMjMuNTc1MjczIDAtNDIuNzA1NDU1LTE5LjQzMjcyNy00Mi43MDU0NTUtNDIuNDcyNzI3TDQ2OS4zNDEwOTEgMjU1LjgxMzgxOHoiIHAtaWQ9IjUxMTkiIGZpbGw9IiNmZjk5MDAiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-error { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcwNDI1NDkwIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjEyNjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNTExLjk5NjQxOCAyMy41MjA2OTNjLTI2OS43NjcwNSAwLTQ4OC40NTQ3NDggMjE4LjY4ODcyMS00ODguNDU0NzQ4IDQ4OC40NTQ3NDggMCAyNjkuNzY4MDczIDIxOC42ODg3MjEgNDg4LjQ1MzcyNCA0ODguNDU0NzQ4IDQ4OC40NTM3MjQgMjY5Ljc2NjAyNyAwIDQ4OC40NTQ3NDgtMjE4LjY4NTY1MSA0ODguNDU0NzQ4LTQ4OC40NTM3MjRDMTAwMC40NTExNjYgMjQyLjIwOTQxNCA3ODEuNzYyNDQ1IDIzLjUyMDY5MyA1MTEuOTk2NDE4IDIzLjUyMDY5M3pNNzY5LjMzNDM5MSA3MTUuMTU1OTU2bC01NC4xNTY0MzQgNTQuMTU2NDM0TDUxMS45OTY0MTggNTY2LjEyOTgyOCAzMDguODEzODU2IDc2OS4zMTIzOWwtNTQuMTU1NDExLTU0LjE1NjQzNEw0NTcuODQxMDA4IDUxMS45NzU0NDEgMjU0LjY1ODQ0NiAzMDguNzkyODc4bDU0LjE1NTQxMS01NC4xNTU0MTFMNTExLjk5NjQxOCA0NTcuODIwMDNsMjAzLjE4MjU2Mi0yMDMuMTgyNTYyIDU0LjE1NjQzNCA1NC4xNTU0MTFMNTY2LjE1MTgyOSA1MTEuOTc1NDQxIDc2OS4zMzQzOTEgNzE1LjE1NTk1NnoiIHAtaWQ9IjEyNjYiIGZpbGw9IiNGNTZDNkMiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 80%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-success { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTU1NzcwNTI2MjA3IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQ5NjUiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNMTAyNCA1MTEuOTk5NTAyYzAgMjgyLjc3MDU1Ny0yMjkuMjI5OTQxIDUxMi4wMDA0OTgtNTExLjk5OTUwMiA1MTIuMDAwNDk4LTI4Mi43Njk1NjEgMC01MTIuMDAwNDk4LTIyOS4yMjk5NDEtNTEyLjAwMDQ5OC01MTIuMDAwNDk4IDAtMjgyLjc2ODU2NiAyMjkuMjMwOTM2LTUxMS45OTk1MDIgNTEyLjAwMDQ5OC01MTEuOTk5NTAyQzc5NC43NjkwNjQgMCAxMDI0IDIyOS4yMzA5MzYgMTAyNCA1MTEuOTk5NTAyek03OTYuNTc3MDgxIDM3OC4zMTc3MTNsLTQ4LjQ1OTA1MS00OC40NTkwNTEtMjk3LjA3ODM4NyAyOTcuMDc3MzkyTDI3Ny4yNjc4NTIgNDUzLjE2NTI1OGwtNDguNDU4MDU2IDQ4LjQ1ODA1NiAyMjIuMjI4ODUxIDIyMi4yMzA4NDJMNzk2LjU3NzA4MSAzNzguMzE3NzEzeiIgcC1pZD0iNDk2NiIgZmlsbD0iIzY3YzIzYSI+PC9wYXRoPjwvc3ZnPg==") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-question { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhCQkUEhFovxTxAAAEDklEQVRo3s2ZTWgTQRTHf03ipTRUqghNSgsRjHgQrFUQC6JgD1Kak3gQUUoPqRdBglf1oBehBws9Cn4cGk+1SOmh2upBxAYVoeJHrR9tgq0i1Cq0lqYeks7MbpPdmU00/c8hm9n33v/t7Nt5M2+qMEWQI0QIibZKRrQpHvLL2KI2wnQzzBKrDm2RIeKEy01dTYKUI7G1ZRknQXV5yP10kTYgly1NF/5S6duZ8ES+1iZodyaocrjXxE0OFeifYYgp0mRIkwFChAkRJsIxGgrIP+I0n82fvZW5dc/zkss0O2o1c5mX6/TmaDWl77RFe5YkUW3tKEmyFv0lOvXJ/fTYnmCEFuMRbGHEZqVHLyT9DFjUJmkzJl9DG5MWWwM6Llif/gF1nukB6nhgGwUXdFrE+wiURA8QoM9i0zEWWpXQW+ZsyeRrOMuyEo5Fv4gmy4dXPvqcC+pH2VRYaMwy+OWG+iLGCgm0W0Kv9HdvR8ASjmKCXpuK/bxiV/76A/v5UdDIZuKcJGjrnec5KZ7wwsWFOp6xPX/9mt2sqDe7FO+Kf/fXHBPPDWpdXGhTpLvUG9VKwh1xMDDjkvu+cNDFBTk7ptX1QkKZ850m3duu6fcrWxwdaFFyREJ2j4vOpKP6Du6z4uJCv8sYJIVkCnJBGGZaBONO3roY2EqNrSfIPi7SKP4fdXyNUd6I6wbSAHEl33tFLe+FlSsusnK90A0+oEPcuufZgXnOi+u9LrKSJQZQw6LwqBnv2CKsfHORbFbyQhA6xN/pEuihSdj56Co7LWRjPiKie6gkB2LiKuUqK5kiPkLiz1QJ9K1cNXBAMoUCigNpQ9IqDtMI1HKA4/jyvUsaoSyZLA5kjOjDPFZen8Ql5TsvBskUgjciIPSX3QAXC86DT7VWvlEh/xZ+ij9BDVWJ0QL0SbZq6QaFxoLPcXPmBLveLCc4wXdDK6s+6/vwhCSniFLPXW0NJe5UB8zKCsviqpc7vGPVQFcyZbyPwGD+d5ZnxmNWlhG4xSBZZjivjIWHEQgoDkSMjMwTo54569JSE5IpA7EyJSMTyGTUAUFlO1ZKOtaHTMeL1PhYYFTcihmY2cQ5+ullj7EDkiVfVez2sCTz8yiv84djhg7IJVk81xFWJlPdfHBG0flkRC/zQFZ+DSllNtfDdUsOMCliyGX5uOzU3ZhIXFDof4m1gDuKbEx0t2YS25gVGpcMnr/I1kx3c6piB8P8ZoqEwfMX3ZyCXynJTmq/U7NUXqfUzCbWL1wqVKBQUeESzQYoUlW8TAcVL1RCxUu1G6BYXfFyfQ4VPbDI4T8d2WzgQ6sc/vmxnTsqfHCZQzUJxm1h5dxS5Tu6lQgTZ0ipqRVqSwzTbbLHMt+c19iO76tsx/cLZub+Ali+tYC93olEAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA5LTA5VDIwOjE4OjE3KzAyOjAwjKtfjgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wOS0wOVQyMDoxODoxNyswMjowMP325zIAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast > .iziToast-body .iziToast-icon.ico-load { + background: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQ1NTUyMzAyOTE3IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjQyNDAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNTEyIDY0YzI0Ny4yIDAgNDQ4IDIwMC44IDQ0OCA0NDhoLTY0YzAtMjEyLTE3Mi0zODQtMzg0LTM4NFY2NHogbTAgODMyYy0yMTIgMC0zODQtMTcyLTM4NC0zODRINjRjMCAyNDcuMiAyMDAuOCA0NDggNDQ4IDQ0OHYtNjR6IiBwLWlkPSI0MjQxIiBmaWxsPSIjMUU5RkZGIj48L3BhdGg+PC9zdmc+') no-repeat 50% 50%; + background-size: 85%; + animation: rotating 1.2s linear infinite +} + +@keyframes rotating { + from { + transform: rotate(0) + } + to { + transform: rotate(360deg) + } +} + +.iziToast > .iziToast-body .iziToast-title { + padding: 0; + margin: 0 0 10px 0; + line-height: 16px; + font-size: 14px; + text-align: left; + float: left; + color: #303133; + white-space: normal; +} + +.iziToast > .iziToast-body .iziToast-message { + padding: 0; + margin: 0; + font-size: 14px; + line-height: 16px; + text-align: left; + float: left; + color: #606266; + white-space: normal; +} + +.iziToast.iziToast-animateInside .iziToast-title, +.iziToast.iziToast-animateInside .iziToast-message, +.iziToast.iziToast-animateInside .iziToast-icon, +.iziToast.iziToast-animateInside .iziToast-buttons-child, +.iziToast.iziToast-animateInside .iziToast-inputs-child { + opacity: 0; +} + +.iziToast-target { + position: relative; + width: 100%; + margin: 0 auto; +} + +.iziToast-target .iziToast-capsule { + overflow: hidden; +} + +.iziToast-target .iziToast-capsule:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; +} + +.iziToast-target .iziToast-capsule .iziToast { + width: 100%; + float: left; +} + +.iziToast-wrapper { + z-index: 19891101; + position: fixed; + width: 100%; + pointer-events: none; + display: flex; + flex-direction: column; +} + +.iziToast-wrapper .iziToast.iziToast-balloon:before { + border-right: 0 solid transparent; + border-left: 15px solid transparent; + border-top: 10px solid #000; + border-top-color: inherit; + right: 8px; + left: auto; +} + +.iziToast-wrapper-bottomLeft { + left: 0; + bottom: 0; + text-align: left; +} + +.iziToast-wrapper-bottomLeft .iziToast.iziToast-balloon:before { + border-right: 15px solid transparent; + border-left: 0 solid transparent; + right: auto; + left: 8px; +} + +.iziToast-wrapper-bottomRight { + right: 0; + bottom: 0; + text-align: right; +} + +.iziToast-wrapper-topLeft { + left: 0; + top: 0; + text-align: left; +} + +.iziToast-wrapper-topLeft .iziToast.iziToast-balloon:before { + border-right: 15px solid transparent; + border-left: 0 solid transparent; + right: auto; + left: 8px; +} + +.iziToast-wrapper-topRight { + top: 0; + right: 0; + text-align: right; +} + +.iziToast-wrapper-topCenter { + top: 0; + left: 0; + right: 0; + text-align: center; +} + +.iziToast-wrapper-bottomCenter { + bottom: 0; + left: 0; + right: 0; + text-align: center; +} + +.iziToast-wrapper-center { + top: 0; + bottom: 0; + left: 0; + right: 0; + text-align: center; + justify-content: center; + flex-flow: column; + align-items: center; +} + +.iziToast-rtl { + direction: rtl; + padding: 8px 0 9px 45px; + font-family: Tahoma, 'Lato', Arial; +} + +.iziToast-rtl .iziToast-cover { + left: auto; + right: 0; +} + +.iziToast-rtl .iziToast-close { + right: auto; + left: 0; +} + +.iziToast-rtl .iziToast-body { + padding: 0 10px 0 0; + margin: 0 16px 0 0; + text-align: right; +} + +.iziToast-rtl .iziToast-body .iziToast-buttons, +.iziToast-rtl .iziToast-body .iziToast-inputs, +.iziToast-rtl .iziToast-body .iziToast-texts, +.iziToast-rtl .iziToast-body .iziToast-title, +.iziToast-rtl .iziToast-body .iziToast-message { + float: right; + text-align: right; +} + +.iziToast-rtl .iziToast-body .iziToast-icon { + left: auto; + right: 0; +} + +@media only screen and (min-width: 568px) { + .iziToast-wrapper { + padding: 10px 15px; + } + + .iziToast { + width: auto; + } + + .iziToast:not(.iziToast-rtl) .iziToast-cover { + border-radius: 3px 0 0 3px; + } + + .iziToast.iziToast-rtl .iziToast-cover { + border-radius: 0 3px 3px 0; + } + + .iziToast.iziToast-color-dark:after { + box-shadow: inset 0 -10px 20px -10px rgba(255, 255, 255, 0.3), 0 10px 10px -5px rgba(0, 0, 0, 0.25); + } + + .iziToast.iziToast-balloon .iziToast-progressbar { + background: transparent; + } + + .iziToast.iziToast-balloon:after { + box-shadow: 0 10px 10px -5px rgba(0, 0, 0, 0.25), inset 0 10px 20px -5px rgba(0, 0, 0, 0.25); + } + + .iziToast-target .iziToast:after { + box-shadow: inset 0 -10px 20px -10px rgba(0, 0, 0, 0.2), inset 0 0 5px rgba(0, 0, 0, 0.1); + } +} + +.iziToast.iziToast-theme-dark { + background: #565c70; + border-color: #565c70; +} + +.iziToast.iziToast-theme-dark .iziToast-title { + color: #fff; +} + +.iziToast.iziToast-theme-dark .iziToast-message { + color: rgba(255, 255, 255, 0.9); + font-weight: 300; +} + +.iziToast.iziToast-theme-dark .iziToast-close { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfgCR4OIQIPSao6AAAAwElEQVRIx72VUQ6EIAwFmz2XB+AConhjzqTJ7JeGKhLYlyx/BGdoBVpjIpMJNjgIZDKTkQHYmYfwmR2AfAqGFBcO2QjXZCd24bEggvd1KBx+xlwoDpYmvnBUUy68DYXD77ESr8WDtYqvxRex7a8oHP4Wo1Mkt5I68Mc+qYqv1h5OsZmZsQ3gj/02h6cO/KEYx29hu3R+VTTwz6D3TymIP1E8RvEiiVdZfEzicxYLiljSxKIqlnW5seitTW6uYnv/Aqh4whX3mEUrAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE2LTA5LTMwVDE0OjMzOjAyKzAyOjAwl6RMVgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNi0wOS0zMFQxNDozMzowMiswMjowMOb59OoAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC") no-repeat 50% 50%; + background-size: 8px; +} + +.iziToast.iziToast-theme-dark .iziToast-icon { + color: #fff; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-info { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjQ5NjA1MTc2IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM1MzIiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNODUxLjE3MTU1NiA3MTcuOTM3Nzc4YzMuMjQyNjY3IDExLjk0NjY2NyAyLjg0NDQ0NCAyNC40NjIyMjItMS40MjIyMjMgMzYuNDA4ODg5YTYyLjkxOTExMSA2Mi45MTkxMTEgMCAwIDEtMjEuOTU5MTExIDI5LjUyNTMzMyA2NS4yNTE1NTYgNjUuMjUxNTU2IDAgMCAxLTM4LjkxMiAxMi41MTU1NTZIMTc4LjExOTExMWE2NC44NTMzMzMgNjQuODUzMzMzIDAgMCAxLTM4Ljc5ODIyMi0xMi41NzI0NDUgNjIuMjM2NDQ0IDYyLjIzNjQ0NCAwIDAgMS0yMi4wMTYtMjkuNTI1MzMzIDYwLjY0MzU1NiA2MC42NDM1NTYgMCAwIDEtMS4zNjUzMzMtMzYuNDA4ODg5YzMuNTg0LTEzLjE0MTMzMyAxMS40MzQ2NjctMjQuNTc2IDIyLjY5ODY2Ni0zMy4xMDkzMzNsNTguNDgxNzc4LTQ0LjAzMmE0MC43MzI0NDQgNDAuNzMyNDQ0IDAgMCAwIDE2LjQ5Nzc3OC0zMi43MTExMTJ2LTIwMy4wOTMzMzNjMC0zNS4yMTQyMjIgNy4xNjgtNjkuNTE4MjIyIDIxLjIxOTU1NS0xMDEuNzE3MzMzIDEzLjY1MzMzMy0zMS4xNzUxMTEgMzMuMTA5MzMzLTU5LjE2NDQ0NCA1Ny44NTYtODMuMTE0NjY3QTI2OC44NTY4ODkgMjY4Ljg1Njg4OSAwIDAgMSA0MTQuNzIgMTUyLjA2NHYtMjguNTAxMzMzQzQxNC43MiA4Ni44MTI0NDQgNDQ1LjYxMDY2NyA1Ni44ODg4ODkgNDgzLjU1NTU1NiA1Ni44ODg4ODljMzcuOTQ0ODg5IDAgNjguODM1NTU2IDI5LjkyMzU1NiA2OC44MzU1NTUgNjYuNjczNzc4djI4LjUwMTMzM2MxMi4zNDQ4ODkgMy4xODU3NzggMjQuNDYyMjIyIDcuMTY4IDM2LjIzODIyMiAxMi4wMDM1NTZhMjY4LjY4NjIyMiAyNjguNjg2MjIyIDAgMCAxIDg1Ljc4ODQ0NSA1Ni4wMzU1NTVjMjQuNzQ2NjY3IDI0LjAwNzExMSA0NC4yMDI2NjcgNTEuOTM5NTU2IDU3Ljc5OTExMSA4My4wNTc3NzggMTQuMTA4NDQ0IDMyLjMxMjg4OSAyMS4yMTk1NTYgNjYuNTYgMjEuMjE5NTU1IDEwMS44MzExMTF2MjAzLjA5MzMzM2MwIDEyLjg1Njg4OSA2LjAzMDIyMiAyNC44NjA0NDQgMTYuNTU0NjY3IDMyLjcxMTExMWw1OC40ODE3NzggNDQuMDMyYzExLjIwNzExMSA4LjUzMzMzMyAxOS4wNTc3NzggMTkuOTExMTExIDIyLjc1NTU1NSAzMy4wNTI0NDV6TTM5OC4yMjIyMjIgODU2LjE3Nzc3OFY4NTMuMzMzMzMzaDE3MC42NjY2Njd2Mi44NDQ0NDVDNTY4Ljg4ODg4OSA5MzUuOTM2IDUzMC42MDI2NjcgOTY3LjExMTExMSA0ODMuNTU1NTU2IDk2Ny4xMTExMTFTMzk4LjIyMjIyMiA5MzUuOTM2IDM5OC4yMjIyMjIgODU2LjE3Nzc3OHoiIHAtaWQ9IjM1MzMiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-warning { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjUxMTE1OTQ4IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjUgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUwOTYiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4LjEyNSIgaGVpZ2h0PSIxMjgiPjxkZWZzPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+PC9zdHlsZT48L2RlZnM+PHBhdGggZD0iTTk4NC4wMjI5NTAwMiA3NDYuODc1NDk3NUw2NDEuOTY0NjA3NTIgMTMwLjM4MDY1Yy0zMC40OTE4NDI1LTU0Ljg2MTUwMjUtNzcuOTMxMzE1LTg2LjMzNTY3MjUtMTMwLjE0MzUxLTg2LjMzNTY3MjUtNTIuMjkxNTc1IDAtOTkuNzQwOTcgMzEuNTEzODYtMTMwLjE0MzUxIDg2LjQzNDg5NzVMMzkuOTc2NDU1MDIgNzQ2LjgyNTg4NUM5Ljk2MDg5MjUyIDgwMC45NjMwNDUgNy45MTY4NTc1MiA4NTguMDE3NDIgMzQuMzUwMzk3NTIgOTAzLjM1MzMyMjVjMjYuNTEyOTIgNDUuNDc0ODE3NSA3Ny4xOTcwNSA3MS41NjEwNyAxMzkuMDczNzYgNzEuNTYxMDdoNjc3LjIyMDU0NzVjNjEuOTA2NDc3NSAwIDExMi41OTA2MDc1LTI2LjA4NjI1MjUgMTM5LjAxNDIyNS03MS40OTE2MTI1IDI2LjQ4MzE1MjUtNDUuMjc2MzY3NSAyNC40MjkxOTUtMTAyLjM0MDY2NS01LjYzNTk4LTE1Ni41NDcyODI1ek05MTEuNzU3MzgyNTIgODU3Ljk5NzU3NWMtOS44OTI3MzI1IDE2Ljk4NzMyLTMyLjE1ODgyMjUgMjYuNzMxMjE1LTYxLjExMjY3NzUgMjYuNzMxMjE1SDE3My40MjQxNTc1MmMtMjguOTQzOTMyNSAwLTUxLjIyOTg2NzUtOS43NjM3NC02MS4xNjIyOS0yNi43OTA3NS0xMC4wMjE3MjUtMTcuMTg1NzctNy42MTA1NTc1LTQxLjc0Mzk1NzUgNi41ODg1NC02Ny4zNzM3NzVsMzQxLjcxMTA1NS02MTYuMzY1ODU1YzE0LjA2MDE4MjUtMjUuMzkxNjc3NSAzMi43NTQxNzI1LTM5Ljk1NzkwNzUgNTEuMjU5NjM1LTM5Ljk1NzkwNzUgMTguNDk1NTQgMCAzNy4xOTk0NTI1IDE0LjU2NjIzIDUxLjMwOTI0NzUgMzkuOTM4MDYyNWwzNDIuMDI4NTc1IDYxNi40NDUyMzVjMTQuMjI4ODY1IDI1LjY0OTY2MjUgMTYuNjQwMDMyNSA1MC4xODgwMDUgNi41OTg0NjI1IDY3LjM3Mzc3NXoiIGZpbGw9IiNmZmZmZmYiIHAtaWQ9IjUwOTciPjwvcGF0aD48cGF0aCBkPSJNNTEyLjAxOTU0NzUyIDYzMC4yODYxMjI1YTQ1LjA4Nzg0IDQ1LjA4Nzg0IDAgMCAwIDQ1LjA5Nzc2MjUtNDUuMDA4NDZWMzc0LjY1Mjc1NWE0NS4wNzc5MTc1IDQ1LjA3NzkxNzUgMCAwIDAtNDUuMDk3NzYyNS00NS4wMDg0NiA0NS4wODc4NCA0NS4wODc4NCAwIDAgMC00NS4wOTc3NjI1IDQ1LjAwODQ2djIxMC42MTQ5ODVhNDUuMDg3ODQgNDUuMDg3ODQgMCAwIDAgNDUuMDk3NzYyNSA0NS4wMTgzODI1ek01MTIuMDE5NTQ3NTIgNjc1LjM3Mzk2MjVhNjAuMTcwMDQgNjAuMTcwMDQgMCAwIDAtNjAuMTMwMzUgNjAuMTMwMzVjMCAzMy4xNDExNSAyNi45MTk3NDI1IDYwLjEzMDM1IDYwLjEzMDM1IDYwLjEzMDM1IDMzLjE0MTE1IDAgNjAuMTMwMzUtMjYuOTE5NzQyNSA2MC4xMzAzNS02MC4xMzAzNSAwLTMzLjE0MTE1LTI2LjkxOTc0MjUtNjAuMTMwMzUtNjAuMTMwMzUtNjAuMTMwMzV6IiBmaWxsPSIjZmZmZmZmIiBwLWlkPSI1MDk4Ij48L3BhdGg+PC9zdmc+") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-error { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjUxMzE1NTQ3IiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjY4MDYiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNzcyLjI2NjY2NyA4ODMuMmMyNS42IDI1LjYgNjQgMjUuNiA4OS42IDAgMjUuNi0yNS42IDI1LjYtNjQgMC04OS42TDIzMC40IDE2Mi4xMzMzMzNjLTI1LjYtMjUuNi02NC0yNS42LTg5LjYgMC0yNS42IDI1LjYtMjUuNiA2NCAwIDg5LjZsNjMxLjQ2NjY2NyA2MzEuNDY2NjY3eiIgcC1pZD0iNjgwNyIgZmlsbD0iI2ZmZmZmZiI+PC9wYXRoPjxwYXRoIGQ9Ik04NjEuODY2NjY3IDI1MS43MzMzMzNjMjUuNi0yNS42IDI1LjYtNjQgMC04OS42LTI1LjYtMjUuNi02NC0yNS42LTg5LjYgMEwxNDAuOCA3OTMuNmMtMjUuNiAyNS42LTI1LjYgNjQgMCA4OS42czY0IDI1LjYgODkuNiAwbDYzMS40NjY2NjctNjMxLjQ2NjY2N3oiIHAtaWQ9IjY4MDgiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 80%; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-success { + background: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB0PSIxNTQxNjUxMjQyNTMxIiBjbGFzcz0iaWNvbiIgc3R5bGU9IiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjYwMjMiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCI+PGRlZnM+PHN0eWxlIHR5cGU9InRleHQvY3NzIj48L3N0eWxlPjwvZGVmcz48cGF0aCBkPSJNNDA0LjI1MTQyOCA4MDkuNjEwN2MtMTEuNjY0MTAyIDAtMjMuMzI3MTc5LTQuNDQ4NzgyLTMyLjIyNTc2Ny0xMy4zNDczNjlMODMuOTgwMDk4IDUwOC4yMTk4MTVjLTE3Ljc5ODE5OS0xNy43OTcxNzUtMTcuNzk4MTk5LTQ2LjY1MzMzNSAwLTY0LjQ1MTUzM3M0Ni42NTMzMzUtMTcuNzk4MTk5IDY0LjQ1MTUzNCAwbDI4OC4wNDQ1MzkgMjg4LjA0MjQ5MWMxNy43OTgxOTkgMTcuNzk4MTk5IDE3Ljc5ODE5OSA0Ni42NTQzNTkgMCA2NC40NTI1NTgtOC44OTc1NjMgOC44OTg1ODctMjAuNTYxNjY1IDEzLjM0NzM2OS0zMi4yMjQ3NDMgMTMuMzQ3MzY5eiIgcC1pZD0iNjAyNCIgZmlsbD0iI2ZmZmZmZiI+PC9wYXRoPjxwYXRoIGQ9Ik00MDQuMjczOTUzIDgwOS42MTE3MjNjLTExLjY2NDEwMiAwLTIzLjMyNjE1NS00LjQ0OTgwNi0zMi4yMjU3NjYtMTMuMzQ4MzkyLTE3Ljc5ODE5OS0xNy43OTcxNzUtMTcuNzk5MjIyLTQ2LjY1MzMzNS0wLjAwMTAyNC02NC40NTE1MzRMODc2LjEwMTgxMyAyMjcuNzM1NjQ2YzE3Ljc5NjE1MS0xNy43OTgxOTkgNDYuNjUzMzM1LTE3Ljc5OTIyMiA2NC40NTE1MzMtMC4wMDEwMjQgMTcuNzk4MTk5IDE3Ljc5NzE3NSAxNy43OTkyMjIgNDYuNjUzMzM1IDAuMDAxMDI0IDY0LjQ1MTUzM0w0MzYuNTAwNzQ0IDc5Ni4yNjIzMDdjLTguODk4NTg3IDguODk4NTg3LTIwLjU2MjY4OSAxMy4zNDk0MTctMzIuMjI2NzkxIDEzLjM0OTQxNnoiIHAtaWQ9IjYwMjUiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48L3N2Zz4=") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast.iziToast-theme-dark .iziToast-icon.ico-question { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAQAAAAAYLlVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfhCQkUEg18vki+AAAETUlEQVRo3s1ZTWhbRxD+VlIuxsLFCYVIIQYVopBDoK5bKDWUBupDMNbJ5FBKg/FBziUQdE9yaC+FHBrwsdCfQ9RTGoLxwWl+DqHEojUFFydxnB9bInZDqOsErBrr6yGvs/ueX97bldTKo4Pe7puZb3Z33s7srIIjMY1jyCEjP6ImvyX8pF64arSHznKC06wzijY5xSKz7YbuYokV2lODsyyxqz3gSY6z6gCuqcpxJluFH+Z8U+D/0jyHoxFUBHgfvsGHIS9WMIUlVFFDFTUAGWSRQRY5HMeBEP6b+Ew9dh/7INd2jGeO59kfKdXP85zbIbfGQVf4sYC3N1hm3lo6zzIbPvk6x+zBk7wQGMEMB5xncIAzAS0XrFySSV72iS1yyBVcdA1x0afrsoUJgdFfY2+z8ADAXl7zz0KcwJiPfZKpVuABgClO+nRG+QIHDdfb4qlWwUXvKW4Z7vi6L4J9vg+vbfCeCeZH2RfOdMOc/HbCA4BvIW6EMQz7XK/ltd+hP+VzR9mgva2YSfyGI17fA7ynnocqeQNFfIJ0oHsdv6CC2+rXGBN6cQdveY3fcVRtmy/HDete+93zy8jA8zV7YkwYMrjHzRddRsCdiVCwwmh6wg9iTNC7Y9XIF1iS7kbUpsvvGEdPuTfSgAEjRpR096x0liPFD/Eqt2NMuBQzB2XhrACAApjFsuQFh9XdGAX70B3oSuNdnMVBaX+sopYxjwVpHFBVACyKTXNoktjD+6Ll8xhenS9MAAkAI/Lux2YNUOs4I413Ypg1SgEAu7kpFvWjaeJe0fJHDGe/cNaZBkekudw8PMA+0fMwlndZeAsJ5KR/qhUDUJCnSiyvRsolkJHGUgvjH8QXDgZopEzKMKDqCKrwEQ4C6MH7GEXC665buLJG8hlQc4LP4paxfJrOqYVYYY2UARfEIazTbgDg2dB98GebzJd54b8L/iWNdLyooeR6CHyZ+6xk0yKxkYg6nEVSUG4VJ9QJ9cxRCxO+9WiOyvgUeexXP1hLGH5nGuBWVtiSp4vqe3VP0UFWI9Wan4Er3v8q7jjPWVtm4FtcQQMrOKO2nOQCM5AyDMi56FDrKHA/1nyppS1ppBpYaE8wciEjGI2AaeM41kI4doDX4XiT3Qm1gevyruCgZg9P8xIv8m1nCzTKq6oiJ9xTMiZ505P5m8cdZ0CnZMVXHVljM7WMBzxpyDxygtdxoCEFTaMIWbZU85UvBjgUMYy0fBaAF8V1Lj9qWQ1aMZ5f4k9r+AGMSkMP1vZoZih6k6sicc5h/OFHM9vDqU/VIU7zJZdYYsKGH4g4nAJMGiXZRds1pVMoZ69RM5vfkbh0qkBhsnS2RLMLilQdL9MBHS9UAh0v1e6CYnXHy/WeeCcvLDwl/9OVze69tPKM+M+v7eJN6OzFpWdEF0ucDbhVNFXadnVrmJFlkVNGTS2M6pzmhMvltfPhnN2B63sVuL7fcNP3D1TSk2ihosPrAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE3LTA5LTA5VDIwOjE4OjEzKzAyOjAweOR7nQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxNy0wOS0wOVQyMDoxODoxMyswMjowMAm5wyEAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAAAElFTkSuQmCC") no-repeat 50% 50%; + background-size: 85%; +} + +.iziToast.iziToast-theme-dark .iziToast-buttons > a, +.iziToast.iziToast-theme-dark .iziToast-buttons > button, +.iziToast.iziToast-theme-dark .iziToast-buttons > input { + color: #fff; + background: rgba(255, 255, 255, 0.1); +} + +.iziToast.iziToast-theme-dark .iziToast-buttons > a:hover, +.iziToast.iziToast-theme-dark .iziToast-buttons > button:hover, +.iziToast.iziToast-theme-dark .iziToast-buttons > input:hover { + background: rgba(255, 255, 255, 0.2); +} + +.iziToast.iziToast-theme-dark .iziToast-buttons > a:focus, +.iziToast.iziToast-theme-dark .iziToast-buttons > button:focus, +.iziToast.iziToast-theme-dark .iziToast-buttons > input:focus { + box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.6); +} + +.iziToast.iziToast-theme-dark.iziToast-color-red { + background: #F56C6C; + border-color: #F56C6C; +} + +.iziToast.iziToast-theme-dark.iziToast-color-orange { + background: #E6A23C; + border-color: #E6A23C; +} + +.iziToast.iziToast-theme-dark.iziToast-color-yellow { + background: rgba(255, 249, 178, 0.9); + border-color: rgba(255, 249, 178, 0.9); +} + +.iziToast.iziToast-theme-dark.iziToast-color-blue { + background: #409EFF; + border-color: #409EFF; +} + +.iziToast.iziToast-theme-dark.iziToast-color-green { + background: #67C23A; + border-color: #67C23A; +} + +.iziToast.iziToast-layout2 .iziToast-body .iziToast-texts, +.iziToast.iziToast-layout2 .iziToast-body .iziToast-message { + width: 100%; +} + +.iziToast.iziToast-layout3 { + border-radius: 2px; +} + +.iziToast.iziToast-layout3::after { + display: none; +} + +.iziToast.revealIn, +.iziToast .revealIn { + -webkit-animation: iziT-revealIn 1s cubic-bezier(0.25, 1.6, 0.25, 1) both; + -moz-animation: iziT-revealIn 1s cubic-bezier(0.25, 1.6, 0.25, 1) both; + animation: iziT-revealIn 1s cubic-bezier(0.25, 1.6, 0.25, 1) both; +} + +.iziToast.slideIn, +.iziToast .slideIn { + -webkit-animation: iziT-slideIn 1s cubic-bezier(0.16, 0.81, 0.32, 1) both; + -moz-animation: iziT-slideIn 1s cubic-bezier(0.16, 0.81, 0.32, 1) both; + animation: iziT-slideIn 1s cubic-bezier(0.16, 0.81, 0.32, 1) both; +} + +.iziToast.bounceInLeft { + -webkit-animation: iziT-bounceInLeft 0.7s ease-in-out both; + animation: iziT-bounceInLeft 0.7s ease-in-out both; +} + +.iziToast.bounceInRight { + -webkit-animation: iziT-bounceInRight 0.85s ease-in-out both; + animation: iziT-bounceInRight 0.85s ease-in-out both; +} + +.iziToast.bounceInDown { + -webkit-animation: iziT-bounceInDown 0.7s ease-in-out both; + animation: iziT-bounceInDown 0.7s ease-in-out both; +} + +.iziToast.bounceInUp { + -webkit-animation: iziT-bounceInUp 0.7s ease-in-out both; + animation: iziT-bounceInUp 0.7s ease-in-out both; +} + +.iziToast.fadeIn, +.iziToast .fadeIn { + -webkit-animation: iziT-fadeIn 0.5s ease both; + animation: iziT-fadeIn 0.5s ease both; +} + +.iziToast.fadeInUp { + -webkit-animation: iziT-fadeInUp 0.7s ease both; + animation: iziT-fadeInUp 0.7s ease both; +} + +.iziToast.fadeInDown { + -webkit-animation: iziT-fadeInDown 0.7s ease both; + animation: iziT-fadeInDown 0.7s ease both; +} + +.iziToast.fadeInLeft { + -webkit-animation: iziT-fadeInLeft 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; + animation: iziT-fadeInLeft 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; +} + +.iziToast.fadeInRight { + -webkit-animation: iziT-fadeInRight 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; + animation: iziT-fadeInRight 0.85s cubic-bezier(0.25, 0.8, 0.25, 1) both; +} + +.iziToast.flipInX { + -webkit-animation: iziT-flipInX 0.85s cubic-bezier(0.35, 0, 0.25, 1) both; + animation: iziT-flipInX 0.85s cubic-bezier(0.35, 0, 0.25, 1) both; +} + +.iziToast.fadeOut { + -webkit-animation: iziT-fadeOut 0.7s ease both; + animation: iziT-fadeOut 0.7s ease both; +} + +.iziToast.fadeOutDown { + -webkit-animation: iziT-fadeOutDown 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; + animation: iziT-fadeOutDown 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; +} + +.iziToast.fadeOutUp { + -webkit-animation: iziT-fadeOutUp 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; + animation: iziT-fadeOutUp 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; +} + +.iziToast.fadeOutLeft { + -webkit-animation: iziT-fadeOutLeft 0.5s ease both; + animation: iziT-fadeOutLeft 0.5s ease both; +} + +.iziToast.fadeOutRight { + -webkit-animation: iziT-fadeOutRight 0.5s ease both; + animation: iziT-fadeOutRight 0.5s ease both; +} + +.iziToast.flipOutX { + -webkit-backface-visibility: visible !important; + backface-visibility: visible !important; + -webkit-animation: iziT-flipOutX 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; + animation: iziT-flipOutX 0.7s cubic-bezier(0.4, 0.45, 0.15, 0.91) both; +} + +.iziToast-overlay.fadeIn { + -webkit-animation: iziT-fadeIn 0.5s ease both; + animation: iziT-fadeIn 0.5s ease both; +} + +.iziToast-overlay.fadeOut { + -webkit-animation: iziT-fadeOut 0.7s ease both; + animation: iziT-fadeOut 0.7s ease both; +} + +@-webkit-keyframes iziT-revealIn { + 0% { + opacity: 0; + -webkit-transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-moz-keyframes iziT-revealIn { + 0% { + opacity: 0; + -moz-transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes iziT-slideIn { + 0% { + opacity: 0; + -webkit-transform: translateX(50px); + } + 100% { + opacity: 1; + -webkit-transform: translateX(0); + } +} + +@-moz-keyframes iziT-slideIn { + 0% { + opacity: 0; + -moz-transform: translateX(50px); + } + 100% { + opacity: 1; + -moz-transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + -webkit-transform: translateX(280px); + } + 50% { + opacity: 1; + -webkit-transform: translateX(-20px); + } + 70% { + -webkit-transform: translateX(10px); + } + 100% { + -webkit-transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInRight { + 0% { + opacity: 0; + -webkit-transform: translateX(-280px); + } + 50% { + opacity: 1; + -webkit-transform: translateX(20px); + } + 70% { + -webkit-transform: translateX(-10px); + } + 100% { + -webkit-transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInDown { + 0% { + opacity: 0; + -webkit-transform: translateY(-200px); + } + 50% { + opacity: 1; + -webkit-transform: translateY(10px); + } + 70% { + -webkit-transform: translateY(-5px); + } + 100% { + -webkit-transform: translateY(0); + } +} + +@-webkit-keyframes iziT-bounceInUp { + 0% { + opacity: 0; + -webkit-transform: translateY(200px); + } + 50% { + opacity: 1; + -webkit-transform: translateY(-10px); + } + 70% { + -webkit-transform: translateY(5px); + } + 100% { + -webkit-transform: translateY(0); + } +} + +@-webkit-keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@-webkit-keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@-webkit-keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@-webkit-keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-webkit-keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-webkit-keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@-webkit-keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@-webkit-keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@-moz-keyframes iziT-revealIn { + 0% { + opacity: 0; + transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-webkit-keyframes iziT-revealIn { + 0% { + opacity: 0; + transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-o-keyframes iziT-revealIn { + 0% { + opacity: 0; + transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@keyframes iziT-revealIn { + 0% { + opacity: 0; + transform: scale3d(0.3, 0.3, 1); + } + 100% { + opacity: 1; + } +} + +@-moz-keyframes iziT-slideIn { + 0% { + opacity: 0; + transform: translateX(50px); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +@-webkit-keyframes iziT-slideIn { + 0% { + opacity: 0; + transform: translateX(50px); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +@-o-keyframes iziT-slideIn { + 0% { + opacity: 0; + transform: translateX(50px); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +@keyframes iziT-slideIn { + 0% { + opacity: 0; + transform: translateX(50px); + } + 100% { + opacity: 1; + transform: translateX(0); + } +} + +@-moz-keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + transform: translateX(280px); + } + 50% { + opacity: 1; + transform: translateX(-20px); + } + 70% { + transform: translateX(10px); + } + 100% { + transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + transform: translateX(280px); + } + 50% { + opacity: 1; + transform: translateX(-20px); + } + 70% { + transform: translateX(10px); + } + 100% { + transform: translateX(0); + } +} + +@-o-keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + transform: translateX(280px); + } + 50% { + opacity: 1; + transform: translateX(-20px); + } + 70% { + transform: translateX(10px); + } + 100% { + transform: translateX(0); + } +} + +@keyframes iziT-bounceInLeft { + 0% { + opacity: 0; + transform: translateX(280px); + } + 50% { + opacity: 1; + transform: translateX(-20px); + } + 70% { + transform: translateX(10px); + } + 100% { + transform: translateX(0); + } +} + +@-moz-keyframes iziT-bounceInRight { + 0% { + opacity: 0; + transform: translateX(-280px); + } + 50% { + opacity: 1; + transform: translateX(20px); + } + 70% { + transform: translateX(-10px); + } + 100% { + transform: translateX(0); + } +} + +@-webkit-keyframes iziT-bounceInRight { + 0% { + opacity: 0; + transform: translateX(-280px); + } + 50% { + opacity: 1; + transform: translateX(20px); + } + 70% { + transform: translateX(-10px); + } + 100% { + transform: translateX(0); + } +} + +@-o-keyframes iziT-bounceInRight { + 0% { + opacity: 0; + transform: translateX(-280px); + } + 50% { + opacity: 1; + transform: translateX(20px); + } + 70% { + transform: translateX(-10px); + } + 100% { + transform: translateX(0); + } +} + +@keyframes iziT-bounceInRight { + 0% { + opacity: 0; + transform: translateX(-280px); + } + 50% { + opacity: 1; + transform: translateX(20px); + } + 70% { + transform: translateX(-10px); + } + 100% { + transform: translateX(0); + } +} + +@-moz-keyframes iziT-bounceInDown { + 0% { + opacity: 0; + transform: translateY(-200px); + } + 50% { + opacity: 1; + transform: translateY(10px); + } + 70% { + transform: translateY(-5px); + } + 100% { + transform: translateY(0); + } +} + +@-webkit-keyframes iziT-bounceInDown { + 0% { + opacity: 0; + transform: translateY(-200px); + } + 50% { + opacity: 1; + transform: translateY(10px); + } + 70% { + transform: translateY(-5px); + } + 100% { + transform: translateY(0); + } +} + +@-o-keyframes iziT-bounceInDown { + 0% { + opacity: 0; + transform: translateY(-200px); + } + 50% { + opacity: 1; + transform: translateY(10px); + } + 70% { + transform: translateY(-5px); + } + 100% { + transform: translateY(0); + } +} + +@keyframes iziT-bounceInDown { + 0% { + opacity: 0; + transform: translateY(-200px); + } + 50% { + opacity: 1; + transform: translateY(10px); + } + 70% { + transform: translateY(-5px); + } + 100% { + transform: translateY(0); + } +} + +@-moz-keyframes iziT-bounceInUp { + 0% { + opacity: 0; + transform: translateY(200px); + } + 50% { + opacity: 1; + transform: translateY(-10px); + } + 70% { + transform: translateY(5px); + } + 100% { + transform: translateY(0); + } +} + +@-webkit-keyframes iziT-bounceInUp { + 0% { + opacity: 0; + transform: translateY(200px); + } + 50% { + opacity: 1; + transform: translateY(-10px); + } + 70% { + transform: translateY(5px); + } + 100% { + transform: translateY(0); + } +} + +@-o-keyframes iziT-bounceInUp { + 0% { + opacity: 0; + transform: translateY(200px); + } + 50% { + opacity: 1; + transform: translateY(-10px); + } + 70% { + transform: translateY(5px); + } + 100% { + transform: translateY(0); + } +} + +@keyframes iziT-bounceInUp { + 0% { + opacity: 0; + transform: translateY(200px); + } + 50% { + opacity: 1; + transform: translateY(-10px); + } + 70% { + transform: translateY(5px); + } + 100% { + transform: translateY(0); + } +} + +@-moz-keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@-webkit-keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@-o-keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes iziT-fadeIn { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@-moz-keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-o-keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes iziT-fadeInUp { + from { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-moz-keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-o-keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes iziT-fadeInDown { + from { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-moz-keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-o-keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes iziT-fadeInLeft { + from { + opacity: 0; + -webkit-transform: translate3d(300px, 0, 0); + transform: translate3d(300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-moz-keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-webkit-keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-o-keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@keyframes iziT-fadeInRight { + from { + opacity: 0; + -webkit-transform: translate3d(-300px, 0, 0); + transform: translate3d(-300px, 0, 0); + } + to { + opacity: 1; + -webkit-transform: none; + transform: none; + } +} + +@-moz-keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@-webkit-keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@-o-keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@keyframes iziT-flipInX { + from { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } + 40% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + } + 60% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + transform: perspective(400px) rotate3d(1, 0, 0, 10deg); + opacity: 1; + } + 80% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + transform: perspective(400px) rotate3d(1, 0, 0, -5deg); + } + to { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } +} + +@-moz-keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@-webkit-keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@-o-keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@keyframes iziT-fadeOut { + from { + opacity: 1; + } + to { + opacity: 0; + } +} + +@-moz-keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-webkit-keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-o-keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@keyframes iziT-fadeOutDown { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} + +@-moz-keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-webkit-keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-o-keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@keyframes iziT-fadeOutUp { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(0, -100%, 0); + transform: translate3d(0, -100%, 0); + } +} + +@-moz-keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@-webkit-keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@-o-keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@keyframes iziT-fadeOutLeft { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(-200px, 0, 0); + transform: translate3d(-200px, 0, 0); + } +} + +@-moz-keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@-webkit-keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@-o-keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@keyframes iziT-fadeOutRight { + from { + opacity: 1; + } + to { + opacity: 0; + -webkit-transform: translate3d(200px, 0, 0); + transform: translate3d(200px, 0, 0); + } +} + +@-moz-keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@-webkit-keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@-o-keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} + +@keyframes iziT-flipOutX { + from { + -webkit-transform: perspective(400px); + transform: perspective(400px); + } + 30% { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + transform: perspective(400px) rotate3d(1, 0, 0, -20deg); + opacity: 1; + } + to { + -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + transform: perspective(400px) rotate3d(1, 0, 0, 90deg); + opacity: 0; + } +} \ No newline at end of file diff --git a/public/static/component/laytp/css/module/verticalCard.css b/public/static/component/laytp/css/module/verticalCard.css deleted file mode 100644 index 006a7cb8ed2567df2a77e13fc6b860f603271c60..0000000000000000000000000000000000000000 --- a/public/static/component/laytp/css/module/verticalCard.css +++ /dev/null @@ -1,65 +0,0 @@ -/** -垂直选项卡 - */ -.layui-vertical-card { - border-radius: 2px; - background-color: #fff; -} - -.layui-tab.layui-tab-vertical { - position: relative; -} - -.layui-tab.layui-tab-vertical:after { - content: ""; - clear: both; - display: block; -} - -.layui-tab-vertical > .layui-tab-title .layui-this:after { - border: none; - border-radius: 0; - border-bottom: 0; -} - - -.layui-tab.layui-tab-vertical > .layui-tab-title { - width: 130px; - min-height: 590px; - border: 0; - border-right: 1px solid #e9e9e9; - box-sizing: border-box; - float: left; - overflow-y: scroll; - overflow-x: hidden; -} - -.layui-tab.layui-tab-vertical > .layui-tab-title > .layui-tab-vertical-btn { - line-height: normal; - padding: 10px 5px; - display: block; - white-space: normal; -} - -.layui-tab.layui-tab-vertical > .layui-tab-title > li.layui-this { - color: var(--laytp-head-bg); - border-right: 3px solid var(--laytp-head-bg); -} - -.layui-tab.layui-tab-vertical > .layui-tab-title::-webkit-scrollbar { - height: 1px; - width: 0; -} - -.layui-tab.layui-tab-vertical > .layui-tab-title > li { - display: block; - border-right: 3px solid transparent; - white-space: normal; - line-height: normal; - padding: 10px 15px; - text-align: right; -} - -.layui-tab.layui-tab-vertical > .layui-tab-content { - margin-left: 130px; -} \ No newline at end of file diff --git a/public/static/component/laytp/font/iconfont.css b/public/static/component/laytp/font/iconfont.css index 2c127b4c1959b6f91cb1da2f5d897c629c465af8..de3f8bdef06588da72d194ebc75f1d48a61fa68a 100644 --- a/public/static/component/laytp/font/iconfont.css +++ b/public/static/component/laytp/font/iconfont.css @@ -1,361 +1,295 @@ -@font-face {font-family: "pear-icon"; - src: url('iconfont.eot?t=1596098002938'); /* IE9 */ - src: url('iconfont.eot?t=1596098002938#iefix') format('embedded-opentype'), /* IE6-IE8 */ - url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAACuIAAsAAAAAYFAAACs4AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCOZgqBmjz3MQE2AiQDgzwLgWAABCAFhHkHiUAbHU0145ilwMYBwB+2QREVq2QUZXvUyf7/zwlUxnBUSDdQlD+wkyiaYq5wSa7fjjtSLEW7iHocW5Dda4DZIUfZLdlYvIqLiC2APrUFgQQJ3b5AzPSaJttz1BtYOKwoD/f+jvqP+Ih55TDYIUnR5OFpDPdOJrh1UUmicS6hIokEiWySKiSIFj8a8u5+05cLR8KRYyQkmz9Wx3Zr+r6q+gonal2HJ938lxwgF3IXsiADTC4BylJjSJBVCIGwrRES2BJxAHFMkKBA1LYQsW1ARg5BohYrRwe7g7bEhSBocUAHK9rxP3ShlnbLpa5KML7/F9gPFMSc3nGQkiTf8Qw/8iRyamVfLcmwy3czTwQDATAwz5DLYF2m76uajXa/OkwaFvkuZcrbk73uEPkl4UwSfCAox1Fgbn9+jQI00dAJFa8nF+Jlwo85BTCOmoPxskP/UOOCAG4b3h9V6Xxu1kM787Ybidx5uG8iFZCsWHJiyZ74NNAybQTIfscGTiVSnhmQL6//MVBDcIPzQh5xEBFAQDs10MRfci4KkqgLh5tuADAahEObOe7/V/V1BUWX2mg7pQ9LqcuYZcS9D4AIPDxKAEhZ4BPtT+rLFsgvHYKQYhb9sOYfSGm9EaR0Qki/UUpxaXW3t/SyZUq2LEPmKTZtyNH4L8dBtNq4bZs4zTCCpJT1Ml+qOjJGdjWkx58x1x/Wrf3NlleWMxcg4zGV/04iLLYUiHT56rV7uqGmJnmZmRwf1G10aImJbjmwrOCphM6P82eedN+nfwdTN5Gponm8NXZlxPk4EYsFaYiLFZR4AwcroRB2AyqR94Jb2g6t990g5mw6+LffIyDi31oslplsKmQSUj+FV9CIUWKW4wV0DEwsbG7ccXDx8HnwtJaAEEZEzIs3Hy/x5cdfgEDrrLeBxEbtPXjo8JGjx46fOHnq9Jmz586Lkqyogqu6YVq243p+EEZxkmZ5UVZ103b9ME7zsm77cV73834MdDbnaRg5Lo//BMwxSCCGCMIwwRghBKOEYowwjBOOCSIwSSSmiMI00ZghBrPEYo44zIvHggQsSsSSJCxLxooUrErFmjSsS8eGDGzKxJYsbMvGjhzsysWePOzLx4ECHCrEkSIcK8YJJTipFE4pjdPK4IyyOKsczimP8yrggoq4qBIuqYzLquCKqriqGq6pjutq4IaauKkWbqmN2+rgjrq4qx7uqY/7GuCBhnioER5pjMc0wROa4inN8IzmeE4LvKAlBmiFl7TGK9rgNW3xhnZ4S3u8owPe0xEf6ISPdMYnuuAzXfGFbvhKd3yjB77TEz/ohZ/0xi/64Dd98Yd++Et//KMYGz3EAb1EjT6iQT9xxABxwiBxxhBxwTBxxQhxwyhxxxjxwDjxxATxwiTxxhTxwTTxxQzxwyzxT1SNOTC/3OBnIA2ysRDbPulkud+RV1CqXu1Vde7OACnTHBU9zhGk8gA1DhHFc7CmAHGW26nEoS9DBJMR/ABJrVshmporeKqyS/mkXCIOzHAo+aJEU+qpPKeqguZ29siQAbVOWJQl27SNtetLRLfATDwcJdPXs7QaBuaA7Th/bmU+BY7rxG6MDQSeIvd3W68qzRytfWeeJ/bpSEe24xc5pjkGomke1hiA2sCjYgg0bxta9QaT46OmC4Eqr3wah7U4g3qvl6Z/WkY8Gr3Zo+Og83yepylijCMFm9K88GQhm85BVe5VN4dWnFNg11MXPWRNReX47L7fI04BDOau+LoZVjY0bKgbvLURDz1vh9g0kWsXZRhTIuyU7uvvy0tpwq46H484DK7D0moeMuyD5ZKW8zCR1rurHKxNsUo1r9lfa7nUV+Ip2+naXSIujAiU6gJ2yma8JN1B/ULz9dAPfbyUEPhf8jy9Oih06qGSzcflpBktdVhyMSko77CwYhFLuJfscKqyoxUfwFwjQYvYiqQsysgQUBIreCJT6RIzPniGZgmlIVbZ1tMwR/5YzGO8wRxhOPgej8GlLtFGES9JGq0YD3N4EPGiGS+kwG7GcDPawiZKkY8J+YRHpMbzr1+PlHuM2IMWiSAnchhPygZHSIKEFNC90Vg1pUDb/6rLuugL1d8H3s20td94L9cXWP5Jm/Yn3/zIjTupfnVgDPnYHLEbk9GbUjie0zyGSSFF0TDBksHTFHDAwNqjaonJPCYA0lJvrsyNy7QZsfNbT95OP3i0hmw+foufu62+duWZdRVz90r7W4uVcd3uBPInwQMMVUqqQQW65PwO/kMX+FzNgIyDSSfRFzYajrwTLQ0OPRgCvMjBoyHYwt+8UuPMMRkzgcMMUozCqtnHT9fTrSdzNgJp+hDKXTnn2ivcCWngXqQt2Rm2ulLtoyfrtp++8+HjtRuPqnyelHETxwmICqgWVY5Yb3i8nBTVUrVikXfYxCYQTcEK9Mo1Rvm5G4HNa8FCgIb/ZIPXctMvTL7mH716avUkGoJFylL7l2VDWC1svvQq/zXg9Qtm/iS38Ozwi9TgtLk/KedN94RTxTpMgt6cEFVnUEEtIMAG6AVw8G08pNPoHpx8WMNxHsAMImsyqtpSGirnAKWBJJFS062UCUFkt+JA16ODGiYCxtRMcNcKrGxirxQkJJNnPUahvkqE4+G0JNTXOkMJ1FkayeGfOox2xcWRdTp0JGOyT3FBVbVoAta3OZg5PJQnlKOJqpCyxhqUDv0iMy/llBaH0yDTjNhrpYeSgsqOkPxjRSIvh0jKJCCNvTwRDg3xbMClTHDVf9jRZB/WIoUsl6ux7wYpBCrjGlwviO7MSkCssXsuuciX6PLrnTUxZTb1WEXYwnHvBWYWI3BESNd8jIP52Cerukx/isSKqaM0wytZNlUEFog56CEBDx3XRSaInHU2UjXEqaXGUHEJXU82F6raiwCwkmBI8TX3Jp6OkSa3YFWssrd53lvrfXhqoFUDLvV9nKN1iKc1/5kEU1ClTaW6rL8yvQmDJGVMdynbRIjMOgFNBSqlqjjFF5uzQNBCm06M1ClsFUtb2wnbESX1xjWnSK0GEEgi1rIqdBtLOWGRsYE+OwIPKSNXeeGzaAKLFsiKDGj5ITgCDruUjW8PVhupF4HTzg2HSUYexsRlovTQ8BXjudGrN2VXK0m/ZZFsHzoOvaEk5uOnZmnlRlE1aW4rNhOWTloGLPe9FYwOHnk/Mcl4NBrDk0Q8CWcyhiH12i3BsgK2EnlNLAk2Dhgk0FN37jwDG1XSGfAtfCa7JqRpBvtz1mCZ1dHro3Y6Note1HJyRciPjqSZTON8ICYgWSKSZS8iNrokH/WenaI7O6nIVnRFVVWHqYExOw8CSMum85CTGpMira89A7kOd3gK77oVXx0Ovxk5RVxXUMKGPKfnrfK6+fxr1rND+GkSuTDQUE2bf/XyTbAdn86VZfYanHy24JLYo19P5N4BqV9lAQTF+h/NVdXwP+dYgwdmo1LRn17p9XZS1a+clV5kX83vvqAXgLRdt4/vr3bPh3RALAsBMSaQ2cWCUldR9QvWqirWl55p3AX5/EzJdDWsUcHG2qi8fd7k8/J5j8B6mpYayKtwRwc9r5fWCvGxfrBQN8m6CgyJSjVJo4Azvigzr1XErE8lhfsjEEaLHZFEfAm3XAKm3hdxlMCM4Ki2FfFJKUMe4KFZ4A/GpLz3q9zCh3c+v8kujPGIBJubfD0xpQ7H/22Hr9+d3H7uWIfTE7uP8+Nzm7O99etGwa/3fFmdBJrgyHe5Dhh/rNeMWtxjXV9TpMMo1V5CcDICrCn0JPBqEgIvQrfW7Iq5C+2v+5hYrcsfP1tFSNALsYOvDYto3DVz7DvM/B1DDV+kVg0zNv72J7PN/xwrk92rR/MP+Tva+9Cr/bRZd01MIbosAJXb1FfHYg+zwm90oUWC5JRtpGh/0xeyqdYV4qhrwIjeQnZkBDpfj4Gcvjl2xvnTTwN4ZiX1Fn3/5k/f8lP1Spo/eH6A2Tezr7j9Mjhfa6f6Qz9/py/y1yfZ/ecQnvTJW3mefqgW1L7MuD94fU8kWOJCpmDtOcoJC01BJYE9imLS0xiMGA9paMknOexNBgSD4dFIHZ3rBxIQK8rvssuSzj02BigpjKlWucaAKz3P6SD2TbdsN9QF23AavW7/SS4KHgIHX/oIJAT63wnG9HMrK1SvW9/vhMTIGTVh5oT6S41lzMaNbO3JHdPKEeUlXjQNm0xNeTiaw8S8jGNc77hh8ZgYxAainbyDhfSMBIA7BQMyzYlDUvpWPKfz/5+f/y/7B2xQZz/rz968l6uzkTnmQ2Ow7LT4TzgzP8fWMpZxkXAhsdHU0Q/XRIjNBEonDHvRpLym6R0qtZwhcNZv60g2cGKMaTPLB7WkgqmxaaP4yWBgrzmWCdVZQ/o35R/TxeLS2NIBAYv7Zx46stPcOrOOz0OmcALLs2dJQ9hIbYnySsXq0bPQbuOf6PXJ+r18h5jFJdomz8hrokiqqM4xe/L0RV16UWeJ21eylb/9QbqGtawvUhVzQzcz7vU8JvJ65nw8syoxnC+vl3h1tb7uRtkldCz+U3ucjlm6l3/dZ4fsZjPb66q1ZGNgjdYNuAZqhNpl5Y3FW9gUUIuJC9aWKy++a2R9+EX2EZ9ON78mlwinkh6bXKi/OShdR5pL59pRKzqg2A/CdZJ8kLkvGmuiMUBWIkjn1VBrgNQI2GhJgckKLPVLY16JwYj4GLNCE9tJO8ZVwLDYqQYnSqna6p9GTgpwkWJQ5nYyE8q9MCLWXK48ATaqTila14oPQ/pwdHea0CXm6amQpQQdnWwtfnpOcyI84jeSZH4gX5igks3SciAeg67GKzGVrBPGVM4qNcGzHayFeS4v3D05F7W4ccpv5kl2+37HFQrahuJ5F7nZyubEOmQd8BES8HzM5BlCWdm4P0i8fFNMIvf5tqMq2u6qvtGazXtrRXmAiopVRvaWgh1dOLAj9BJLwQ1c6gAs7nQZdRWgkzBrJRrP0f4KPZPYF1qzG33uHR2fyB29o6F1frP1Zro7p90FiOHgrrmN0JywgnLkHSgdVbOAYdmxHHrRfC2uowSW9ai/Lr6oOl6N2R6bAUnZc1bQu8QNZpkTBaOvOOyy+pBsde0E5lOR2htQL5RmB6+mPKbMmzajZYIl/Vmle/WklNliOy1O19YmLZw7TZqZ42wMkU615RoNICaYCcfain0TaAPWn6Rpm3743N+GGfcWky+e/QMgF6BNzS4yu8Raco7s0PMkZqkjxwKu4Uw6os1yEbwJeCNm7svbX8npcLmiDpsGeF0FddDMLvLFjtWivkf5bllF36usYeOUf0od0ssrufyIvsYtO34rmfvz5ZlKVQFSFdZH+66hg8WMDZNWx3MnCiIT595eKTEntPcpOoVrjznNjznVgJb1NRyyO7J9EyC1sEr66kjgBy1ISzkp5qtckXOfllCoWfpxNl0NqVrmb3+UA+8hiQ54ooHxJuTZWx9mcGIqsAtp0a1dTUGRN7LevfTOfPIMZHwqOH5IYYJ6Owima1mNjxKp+H8SxbLDrOEZwhLp9ECBjvhAgX7TKgsRWtkfazC7kjmm4MSnvVwCHglNyTTvqIR/+rDSShBrGVmK9C8BraQ9ZK1sCOxAfecfZmu9H/bJey7Wa12zrZoGre98CvkitTS7/ZQXRm6V2zCRev2C82bbc8/Fie9wM2FT5m43Q1+h1cmGpQXJgiehXcX9lv0NeCtxHYlQlq5wo7nM1Ug6kJ7nMcYDO2GcAHuouWPtCw9UxrnbZV13L2xV8AZoB65prL50yH38YF3XccurC0a2oM0+XyDiasStBql7aZQp11aYjgxEYWFzOzGoOkQE7Gpkd7g3X3A7vvuuadmw84Cir+msHBqbQq8QSw1VxqtHdjf1X23Ln27t9A6mvPn246G0AauLBZneWvGrr4q13pk3Kba49lMrzvQuoMWujaWlJQsS1h48uDZBkHzFRRddfL5TsuBKxhNKi9kcOTp2djMn8ZWCkmuC4D6XaXsLakRb7MluWZFNS02rlpFiHmwaNC/Cd6+JUshVHGlsMip+NU3B42ubanElIkC+1SqXoxgPQzcfyuAx0BTw4XooHdWjdD4d0SP06/lL++xk0hKyOhVd0k16tw4g9Ek9cbIqsceG8TGEjdIX/pfP0hElTSIJjd9tLwsBf2oBlV6gsNGpiioQhYLg3rfG42j4MrGM0+LGkZYdJNiLhg8gh9O8gtNb/lIFmwkzHGfT7KCYp80U4VIigTCoU+VrphDGRygDmWr4KkxRGWA1/Cv9MTUnLz/nCfKA/pDxGM3JVWe9irds6rg+2kYJsSY6ruyKdbcvbt7M4yW7mBTCHtqJyO8+IAQIASLiiZA47HINzsOnHpm4Iq6lrW0UU66NyGhbmyV9C5iAPLVWl5eH84L4uNls4p0xm3G+jIenpmnNcBdMIT7vVpQQtqDvoS0gpK4kSF3YrVs7OYOQXWYnc09wVRfJOr90KYgu/XDj8yfje9elsaoZgFHDShM07V5DmcLdVWpiuIYLjV4nsZJa1yMCudoVyLqFNpNGhvNxFXfWMbmWcM+oauYGZYBuk/YcRIjGwzyHG3cPAoKjSCH8q9WgnMldXFf25RVe8EbOdOcD2bO6N8Kz2oUPhO093Bvd454E9dNJq23Ik1g35MKkiWgXfgXCbbeyzOHpRD5DYj0pPuiaSCooICmeeABqOBSzugm+B9Ht4R58AjTkG3WzTtNOszqjbiKpmMBe7LHtEURlHOee7k5QMVapV+jbCWTmnIzFLm50uot17tljLQB2MwAS3/UguOe96oOWdO07rbe7PFWveKiGMtKV25R0CsJbVbMmvH6a8Jl4OfzYGiYHfzls/gcH2Paf5r/0DPyDeF70RgUvgQMsGq3UJ6fIOycxPte7wAbGZmgMHBCdjnPx4WETx6RiC1/Kwd+9OrfhvIKB5zE4NwjWw72Dc6V8y/BwOlfVcT03ELksWnfzhjkN4iNHvAI7QGAVg5Fvkoszps7achaLUVxlRFBjCRcH8jQh5zNCAiCxWM/ZnRLx0O0Pni2VVOAHpWtMtY046tQvcl5lucxDLMd/POMvAdzfzZ/5vf5nllvQPWgTkMy0jEWekTLLTXFxC4ozZvi6Uk2oldfhvkqCAu87KuyD53/TqgBNy+hWgk0GNdsJtKCtNKSCngU1l1Cs36uRzuozaX08BKBCQpjOhmflJSIi5GMzDGBKc1Y+WxTNySn68PrGEtbXSyaptYKyfosU5xkhZaFh2y5HzYsxI8Wc3JSsvDCBaA89tZN0JAA2G82wETa3ZtiJvDZhN64evwFUuiwF5+KvVen1OFfMNZ2ssvAt5xsLeWDTwRc3i3KlhyfLKpAKelcnvYJ2vOTBQdnNarzsxuuRpj8Z9W71Y7fr2H0eJ8F0rbw8wpL2YXR0R0wuSkeJ36uQG9Ox63GRyqEibOfOsEpHlR4IIfnH0O+/U8U/PgCNHsr4ZZ826MEDCPG2Aahh1Z1vAJnFBq6kvkal/YjDtCxTOixcQ04xomWUMRSMY17Vq/GaCMDGrvY6FnUtA8GkMSrUODLSQA4RYVAjtc/XpQvFl7X2TrRr4MVCCtlw6ZJBcbKLyFKEduLcTdRpZ3dsichYc6Gb3i0NkXYzrlWVw/sKPntahna5+ByM7YIpWgrs42Zt+PoPW4FBCGbEuc0yrBbBeBhSK8OAolivKd1KfU3Uxpgvc4AZgQ/Hfxmn+SdNRzWPnvvDZn8zHFufl7wY8oHsmgG5GRYc1emUa9uNB4SmDuh0DOvR2e04ajc4rwH963pPQKHY7b8GCFaG3AzbOqna2iccnLjO/RjzM3sR86PykYPSC1ZtuYjJgxKetimUgTQ2fEs0UhkrwfX15+pxG3nNh7Gdi8dD8k8bGibMZpyLE4SJI7ZC+J3BpmZhGr3FuJFrwGS1NjqPgdRi0haugjKJa/QiEEJ6j0Tc5Mwk4GFUuluCXXWxBXG4fCghDx262tiYHq51gLSTmsYGLcpRheWbySSooTF6zdbun5He2Eh3oiEXUaM29dv0rcQOIpCACmstJmvhRnFbmy1kUzNFbeNmUWdMSe3Ia0AIsCMixAgi1IhbECV7mVgWqY8WEV0O1mghsnMu9fcnkBPIxP3FI8k1cbotfXxTyUcWs/aUPqI4otDsZdYI64U1zBNJJdAPK/hBm4KCf2eKeQrK/u20lJ1hg+GqVxr8/RYreatpoBKcV42G3DqUPVl9EAafQX0dMRCduK1RjWrnoeuqlHrTrWbYylz/n15v4Ui5uOiFDeOLkRdifNuQd7W4uAgGG9Pk/ss4Oo2yLCY3R2ekb5LqKgUtS4z31yzAFH8KPA1TrEqn2dWd7esYVQxNqL2yiiQK7ETBpE9RFRQVdCxFYTMQRR2q8fb3sNGO0xQI/S5dULFGorEgcIXglDYg8K763ox6JnC91ujrY/EI8jD5+Ea7gvBr53Ieow8ZYu+H32ZFXr9pc05uzSsVqyfKuc2vU3WPYvN9leQ3fj6Bc4K4eHZ2bqLOHJqrznlMfUivOKLOz9ckG/RnFhbi52l2AqV9HBno6PT4L/OQSlZUJJJ4WDluKxPbvj0vyuXSxoGVAYBlQAlP8o4uRpZHWWB9FrXuWNi1cYduolYKCCvwyODVLWJFU61/hVQ0FD5awsjjy/CvRIfvktBc3xr2YL/v5wgCx54Mfmmps2OOxv7pfVN1oM/Xc4dNrEF+rDbLN4LLX+ff2n5Lr7i2rj6QQXIjgqEvGO0FTsx/1zxyfjTL0s25vfDEyA+dqV+VBnkLX40q7ozpLDpJUE4lpnUSib85kPUWDA1p7Qeotnse7eNUV1dHwgx3QWJA7v/+IbfJy6GL3z1O0U/gC37OArU5Dh1VX9Bnhvv6/1fSkA88eAfscJ9fcrLowMZD59NtyUkqw0xK7tXaQH79FD1NnK8V0+1gu5+x8cOxiTFJV+uaYpNIIu12oXbz6vrD8dcK+yyr7Gsl+NqQ0ckzFJaNxYAx0lvxW8ZiDQcwmxGAIE4lAvqlBQyMb9KnE4rEoJ7XKElTM32i25ms/z+rxNuwNhQfC/i/WuQdbRYJ0yhwsm0A7oskos3b5DDYRF95+rL7QAmISZfcfjhy8ETcCU6uwypQewqNdbuD1H4z+e+nSdzUbLUkzd8mDRMWLNcePYl5qbeGuzKaEGN880jmtfkgdKsyPSPqeE7m/pIzYfkfFc5/UhiSu6dhb1ZObr5Gg3Ol8N8zO6cphoWdDLz14BD1H574tDbtNa/T/i6wQnr9ViB2Wsl6PSfHwrckuIPQi5+3urroUNzuN5xJLSXzy6saKf+EVOnVf/7yulU/CkUnp/wTGv0RDsdHRhT6RwC5upYwbIEZqWk4T8ZvMZtx3r9eFn4QD8/LK1huQQ3p94pAGTwBOC94CjGHPpUHYtNY/wsplI7r9d3PpC/G+WKOSfsCZZA+T2ZjFf0klSImxnG8FWNj1p4Egmfg4ZOjpbiSE+dwP7f81AHf8v9rNzDo69Iw0tFjkSrS4NuOylzP9BQ8enz02KGndUNr1u90ysakR49FqcCgItY1VZi1VSBQxtz2LX3ItSm1MboeM2Wb2rivccBKmPuAzTreCINQrsmR3nBKJ70Z7kOeRjAenWoa/MxafZPghQtHQFPW7VGo8U4+S+krkHwpT9w0etuqFT8bJiqJapGpt7/c3FsgnOZHbhr6pCE+NGTCYPkU2C+oGt7BPKLZBiPLerStlZV93mjpWd/0fUpb/v7BRbc+qsit/bLQV2OkZVvbR+jHWQPARro9spyUevighqQllXitUr7FWgaHwGVWUVL8Wbnz5uRuaz6nczl78DwtliZiIcgj4yMiZI/bIFYfEWj4bZKOmIaGRig2rR5Az+k12Iie7TRNpT9ZumSNjupJcSRM0TlTAd4OX03/JRodzS9QPYy83lSHaQnFQqtyRTow7OCw71Kqw1dnAB8iTL7lBohXc9rNihzcAI3chhqZd/jsH0uYu8Y92Qvcvf634TSX0elFl2Zy+aXLzl388vVVdGmaXor4x4t9e67KHNI3kR50NZdxnFDOulPWYbV0YK6n4COh8NDV+H1JlEqLy3uMpjeqHdjgrbHZh2NsNpNobJuNi5bY3sYIG0ebQzC08VCBNKLYOwLUYsJQQtSijaiJn49m42KAxJTZwsKrPMpwmTdSnPKqml9GVwEOJGVnPDzPISXwguEbbTa3c/DCojnXrnbV130twKUvzC2sz7033C2813+R0ITRVRQtRNnEk52VzgzkZN9I3BxJhUDQ0A90d52A04QOuAtFwGnOJfLHad/xBz5tBESAADRqRmpl9TrTFSdRasE/YrqIVB4IpCRaD8jMPZOCRSleXl7OyagUbBsEMnsu+eWFIvTJLz5PCC2g+fkXgZerfKQkgLZPXxBYoN+HLrr7HH693iex2Fl1Z8zVRtpWWblNcdIhYpDNdeyOswpAv9jUaqov1cZt3Tnp4euBGsYAmFBOAN9VV3UhQkeSSDqjUUeOQuUpki55wDXJpMPm9oNouqeXtPl6fTdL+gGkzko6nIzQQNAh48qnZKUSuEYrGX4q5TaFGOTL3n/fQsW4qa/DMn/13Or3SThXTD3qNL/+ntMsIkLYjhmOcZp2EA1PHrDRqSAmOzsGKEFZpBgBKyPnV1RsI+WTIOp6IHQQJGWu+xlhoBMoA/l53eQcYkNmJ9eVnwjlkdltcz53z8aatc/OPj+LBzJrWOsM14oM61g1TFseytpdAEuyabsxZvbEEKSZk8T0z/TS0QAqG1BOzKteEKxOgj03G5CJus5VhJhD+r8NkO1U/SWT/VVc3NB94c0Qc6JT8QnpL9yZQ8uyLIE24+cMBiWyLTqazU7CmTlDGc75h1wunSMm5VCDQQS5DIi7RStLiehu4VvKDDhXyrEolW5GozWqq6zsDOIY67jtR8/1lAi3jNBdt0qPgV7olyWoO8R6CPRCNaTpc+tPpFyxFKe8VDx44gjJAo2NkBughjsjTdB+0FPiV1DldT2veOr6Nanz6Y4IycfITYBnxsX9idB5dOTvs7qZt5FrOVFh4fwbyGWY3c89Vd/Irul/u1X28sEhjsE3G0zZN5+qz33AtNa31SkpSu9Tb4WdhgBCR9oagMgBQUHC3ZOUL0LmJouSm3fdnO3+boZJUsS0sF6tqNBEaF6vSncSsWrqOb9u365co2xv3+X0ltjyRcXkUM7381CR8YBzzGPeXcGOk7GqY1QSj0Q1nFfNwhG54+XlNTyLoRx3F3Vv3PLzlr7s6v63LUHB+yDW7M2Gmqy+d5dTHzA/ONX4VjQlWuJdAzv2JtgA9eUGxPpvCsDxZxGzcz8f+s/l+3zUvLtl9fmF5uZ790ycILPjjdiJCYvll+7/WkpgJP9blwd+3li6M5o3t/mVoTzEQZqKfH/vHgjp1Q4MaO0r5nirf9A+cQrgfcl7MA6bz65Ql5F0ZJm6ctbeMM5a04LbNeYtI3+e2nCyt1fkCMJdyZ991h54HMRCbQ8ftEGt0MNHSqn84cNWKBaUr3P+AzwQVkz51ngKev898mnyqfffP7WpeO996BR0+r335orzOpSBgICJbAk3Ig+gMqjEj9qeXxB4KlHu6XlBX5f8SKUDjWBJikgi6T8qVdvjEZKyYPOaonbGZ0IxyX23jNRj1nFjDW9CObKMVyx9dtdzh6NjfkhRAzcnwPEpOdwm75ZFjdmcNWnc7XHt09actQxf08Q010N+1XpNE4xaHj3CuXg1D+BnJi2/LInM9PTUlXcXgD7KoWHvPtDv+Vm3wvdIPosEGwJjn4K/b1OtNxxyhzyrgpLOp3e1vrAg16BOmakuilueWfwbJ8u5UXenSzuuqqM2DOma+k9OTTPxvGzTY8Q8U7TZFm00alAsILwxh/OCeJ0h50M7efFcYLjn5kfIIKTuGy3qKFFZveY1czEuKokO1dLfYSWxPkpFtep4qUvMz7Hzsm6JylGLPj+eZdR6F31qaXy3bD72Z0H9lNJRRZJkVCk+m9BVFdc6JslafQ7luT474KlSt8pTalLkGlJqguD3Da55Yeyy4fc4z5WxFHmNPGuF3p4JB57luYYVPCIu/5A08ovr+UWPZgKlEqCC5Kr73PrvIiDtXUl32Qx3RbSzS7odR5tQ3J506QcKf8XYAoWSTq0pLnWf0yl0c+5pz8X/P3iUmgqpYJvfKrzOxUWcG+MBZM+Rna4FJJ1nCsk7jpVSudUtMJOU7CXTU52WgxYor+zb4BV/dnMZpH0YdthK6XN+M7g/fqur3DuOufmOJ+kO5JFS/2mSLeiHIPSSx0DJXskrvsdGzEbSadJY80vHAweas1OEhe9U7ifpSR2lWIF6/UDJrcyOeu0OikR5I1tTX5zhZZIIDL9Oo3TUaOg+SMfW67ILNp2erQtmCcZdzZsFTmiTalZz/6y/svwIdaqOeSm8GgR36zztN34SdWRNrK4pEGIresIIZauqKirURJZraWg0WB1XTFKjSmngKLtzwsKNDq+oGOEL3DcJgf7rYpSMNtaMDsPQET7Y+/ScRf8rYIuXLKZk4x0v5xbGRwPb/21waok6I5unniHlV1bYR2BdbHtyyKeSGfUl50BcYNlaWkL2vhh+KSEmWSXnKkEMyNqTmCiN4efsQxPqJAYQ50DwyPTC+A0GEEJykXD07EnrrGtJDlKFpPm21pHR07FBZjmmqSnTKmoYE4dpBptSjdawtR32gMcmVH5GpapLIKwvJcFR8lCjn2Ocg1wxFrWk3B1ghNeO+fF4C+PR6knG3y5/HSS3+8MgTFcZn/J/fpjH//oqLYbfWGurt3neDFcF6yNc6l0ibvFyElIyk92SM+3djBzfbPdaxUjAlPKCp2BSyroUCtIxr2Okjrgud1U0BoGqqhzZOKOY/k2V5iefnzTw60nhF++SZ0CIeV6vHxeNm+tTEY5NpDRhExguAuFVVOqnGI6NU4U6fjXyaYtBKQipT5zBxvHkzNHrJ0QTQfphQL5VS7hWe1W7LnuCmfYqzQxdT57JkRG4quVC+1iVZtYRbJKaxsVDrZcmJ2ZFJvH4L4sT2MTQsN4ZVK02QQvQrJAd0nWvsFIGIZenoZSSfx8Z9LSFWkhoHnuD/CBjt9q4FRIp9qbke8kT8sA97k/J/wJtCQPK1Z4cgdYq9X6O6CYtRWMsYkMVCdbvxG5JCbroh/FRyBhJsWEf/ls5q9hCLMWG1BkiKayPPQtR+bNyEaP+paTYSk0yB6fnaQhwI8lGke+BsJgH6ngp+Q+VGYGoXLFxX5pUK9tB8Z11kKz7pLkL5DHTQEfs6nMOo/TjL5LDtLchD8UAeeWOlrInlBXO1N99QC9qX3dBL2GosFb6BsQWqMpckFz+H7lp4EjhLFqaGXnJFj15sD0aXLibRL6X8/h3IVH0WuHrzyFajfSyee79Achp7r9yAfKPEcEKtz6BxJyvVHubcR0UIt9TCfksRT7zPhfqiK8/mGrmzrbaWNdtQO7DjTWzWi7Zm52Uiy1wpcTG+4B0m9o2CCh1ijoF981jmyC3wmr+D5EUbyKnd++aTp42jzOSukYxmZPkpv/B8bsBmz/KXZ9Pi1ipoj5UAt86b7/oNdvzSg6gW/bXu7r4/xoS0lfPlSY5X0//9zZfIhHmffgfGOT2Vhe3lwtNc9lq84qtQzskZEgHsaywjBXkEKkHXsU6lG5jnchHbLFzyXteIipVQF1E2MkkYqDWF8s4fzGp9jCCB34fUzp/xHJ1WhYzftJqP0tH6bENOAAyhG64duwljyy1/W2kvbryT0wtkh6OXs3+hVbGFd2n0/tw/gcyNE5IXabPZmM3qqTue8AfDzFKV1Q+4O00m5Vvb28jdDVOXtLNnoIMoRuuy+dlL3ks2D7iMu3h2p+YWtRtbG0Gkb+21gNUX1n36fSOifygGdeSUlhdps9mYzffWSV130naiG1BugL3+4C30+zhlG9vaqURS095WXrqoe6IbZv/k/MIP5CAoCCHAjQQGCiBwYIDDwFAhAllXEiljXU+CKM4SbO8KKu6abt+GKd5Wbf9OK/7eb9flGRF1XTDtGzH9fwgjOJvzOGPTHsXZVU37Rdq98EwTvOybvtxXvfzfn/VKjedH0z/iTdfvMSW8nbVvf9KIawpfLRq1rXOA+f1oHKpsHAxk+QG8uf7gcILKfTk+yBtiOgjRnsd3LTK02xrTwlKOz+TWj+Q7smM/JyQzXkJWPkoFXvbHPy5Z0PaeorIgXTjJY1hT6ScBWq8hb2YAbMo/5dsFGkvSiXCkKKyMO69Xp89fVVSD9FX6MIej4EV3lgyPeOST3+2cr33zXaBjPqFcXmykqn7juYTbWUbuHpp2WJgydo2UFEUCgfg6nlTyeyrC0rTBpFL5brGvyJqm9UGkTg7BLYdrugLH2aFRBy3Iy2ibDiMHEGQScm9GVAY3UqbQkA99dCitOoWHkeJARqmn5tEgps5YIdcTwryZhS9kIY1pwlcHxc5n9eRrtLsZWwxVq9A7uusG78FtLoo/mwB0sWUw32iksdgduncNuX25Dy5GbFskoQnsupjFuORPTFTe5/Y76RADWNVguftmGQg1a/MkrHPtPBkWdclWbBRjIo6r7Xt7JpNYW9Ncf0YzvfDZ1dpwbqC1M+rOpNiWz3lTKFyW+Gbsl234W0Q4KpJWdXEcfQxFzZnU2GG6r6uTRdcnVE9O+6ZizP8M2eccDCZprsyO/bkXqDeB0qvW+akyrUKXbdSe627iJ43F9LsSymEfpAYnh4EGICYBzxYrRzQ/c3UNArvPNLm8xPnVg94JonJqX4oiZyaNwA=') format('woff2'), - url('iconfont.woff?t=1596098002938') format('woff'), - url('iconfont.ttf?t=1596098002938') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */ - url('iconfont.svg?t=1596098002938#pear-icon') format('svg'); /* iOS 4.1- */ +@font-face { + font-family: "laytp-icon"; /* Project id 2654996 */ + src: url('iconfont.woff2?t=1625555217253') format('woff2'), + url('iconfont.woff?t=1625555217253') format('woff'), + url('iconfont.ttf?t=1625555217253') format('truetype'); } .laytp-icon { - font-family: "pear-icon" !important; + font-family: "laytp-icon" !important; font-size: 16px; font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } -.laytp-icon-jiazai:before { - content: "\e6c0"; -} - -.laytp-icon-3column:before { - content: "\e67c"; -} - -.laytp-icon-column-4:before { - content: "\e67d"; -} - -.laytp-icon-add:before { - content: "\e67e"; -} - -.laytp-icon-adjust:before { - content: "\e67f"; -} - -.laytp-icon-ashbin:before { - content: "\e680"; -} - -.laytp-icon-browse:before { - content: "\e681"; -} - -.laytp-icon-bottom:before { - content: "\e682"; -} - -.laytp-icon-back:before { - content: "\e683"; -} - -.laytp-icon-bad:before { - content: "\e684"; -} - -.laytp-icon-arrow-double-left:before { - content: "\e685"; -} - -.laytp-icon-arrow-double-right:before { - content: "\e686"; -} - -.laytp-icon-camera:before { - content: "\e687"; -} - -.laytp-icon-chart-bar:before { - content: "\e688"; -} - -.laytp-icon-attachment:before { - content: "\e689"; -} - -.laytp-icon-code:before { - content: "\e68a"; -} - -.laytp-icon-close:before { - content: "\e68b"; -} - -.laytp-icon-check-item:before { - content: "\e68c"; +.laytp-icon-load:before { + content: "\e6f0"; } -.laytp-icon-calendar:before { +.laytp-icon-download:before { content: "\e68d"; } -.laytp-icon-comment:before { +.laytp-icon-electronics:before { content: "\e68e"; } -.laytp-icon-column-vertical:before { +.laytp-icon-drag:before { content: "\e68f"; } -.laytp-icon-column-horizontal:before { +.laytp-icon-elipsis:before { content: "\e690"; } -.laytp-icon-complete:before { +.laytp-icon-export:before { content: "\e691"; } -.laytp-icon-chart-pie:before { +.laytp-icon-explain:before { content: "\e692"; } -.laytp-icon-cry:before { +.laytp-icon-edit:before { content: "\e693"; } -.laytp-icon-customer-service:before { +.laytp-icon-eye-close:before { content: "\e694"; } -.laytp-icon-direction-down:before { +.laytp-icon-email:before { content: "\e695"; } -.laytp-icon-copy:before { +.laytp-icon-error:before { content: "\e696"; } -.laytp-icon-cut:before { +.laytp-icon-favorite:before { content: "\e697"; } -.laytp-icon-data-view:before { +.laytp-icon-file-common:before { content: "\e698"; } -.laytp-icon-direction-right:before { +.laytp-icon-file-delete:before { content: "\e699"; } -.laytp-icon-direction-up:before { +.laytp-icon-file-add:before { content: "\e69a"; } -.laytp-icon-discount:before { +.laytp-icon-film:before { content: "\e69b"; } -.laytp-icon-direction-left:before { +.laytp-icon-fabulous:before { content: "\e69c"; } -.laytp-icon-download:before { +.laytp-icon-file:before { content: "\e69d"; } -.laytp-icon-electronics:before { +.laytp-icon-folder-close:before { content: "\e69e"; } -.laytp-icon-drag:before { +.laytp-icon-filter:before { content: "\e69f"; } -.laytp-icon-elipsis:before { +.laytp-icon-good:before { content: "\e6a0"; } -.laytp-icon-export:before { +.laytp-icon-hide:before { content: "\e6a1"; } -.laytp-icon-explain:before { +.laytp-icon-home:before { content: "\e6a2"; } -.laytp-icon-edit:before { +.laytp-icon-history:before { content: "\e6a3"; } -.laytp-icon-eye-close:before { +.laytp-icon-file-open:before { content: "\e6a4"; } -.laytp-icon-email:before { +.laytp-icon-forward:before { content: "\e6a5"; } -.laytp-icon-favorite:before { +.laytp-icon-import:before { content: "\e6a6"; } -.laytp-icon-file-common:before { +.laytp-icon-image-text:before { content: "\e6a7"; } -.laytp-icon-file-delete:before { +.laytp-icon-keyboard-26:before { content: "\e6a8"; } -.laytp-icon-file-add:before { +.laytp-icon-keyboard-9:before { content: "\e6a9"; } -.laytp-icon-fabulous:before { +.laytp-icon-link:before { content: "\e6aa"; } -.laytp-icon-file:before { +.laytp-icon-layout:before { content: "\e6ab"; } -.laytp-icon-folder-close:before { +.laytp-icon-fullscreen-shrink:before { content: "\e6ac"; } -.laytp-icon-good:before { +.laytp-icon-layers:before { content: "\e6ad"; } -.laytp-icon-hide:before { +.laytp-icon-lock:before { content: "\e6ae"; } -.laytp-icon-file-open:before { +.laytp-icon-fullscreen-expand:before { content: "\e6af"; } -.laytp-icon-forward:before { +.laytp-icon-map:before { content: "\e6b0"; } -.laytp-icon-import:before { +.laytp-icon-meh:before { content: "\e6b1"; } -.laytp-icon-link:before { +.laytp-icon-menu:before { content: "\e6b2"; } -.laytp-icon-layout:before { +.laytp-icon-loading:before { content: "\e6b3"; } -.laytp-icon-fullscreen-shrink:before { +.laytp-icon-help:before { content: "\e6b4"; } -.laytp-icon-layers:before { +.laytp-icon-minus-circle:before { content: "\e6b5"; } -.laytp-icon-lock:before { +.laytp-icon-modular:before { content: "\e6b6"; } -.laytp-icon-fullscreen-expand:before { +.laytp-icon-notification:before { content: "\e6b7"; } -.laytp-icon-map:before { +.laytp-icon-mic:before { content: "\e6b8"; } -.laytp-icon-meh:before { +.laytp-icon-more:before { content: "\e6b9"; } -.laytp-icon-menu:before { +.laytp-icon-pad:before { content: "\e6ba"; } -.laytp-icon-loading:before { +.laytp-icon-operation:before { content: "\e6bb"; } -.laytp-icon-help:before { +.laytp-icon-play:before { content: "\e6bc"; } -.laytp-icon-modular:before { +.laytp-icon-print:before { content: "\e6bd"; } -.laytp-icon-notification:before { +.laytp-icon-mobile-phone:before { content: "\e6be"; } -.laytp-icon-mic:before { +.laytp-icon-minus:before { content: "\e6bf"; } -.laytp-icon-operation:before { +.laytp-icon-navigation:before { + content: "\e6c0"; +} + +.laytp-icon-pdf:before { content: "\e6c1"; } -.laytp-icon-print:before { +.laytp-icon-prompt:before { content: "\e6c2"; } -.laytp-icon-mobile-phone:before { +.laytp-icon-move:before { content: "\e6c3"; } -.laytp-icon-navigation:before { +.laytp-icon-refresh:before { content: "\e6c4"; } -.laytp-icon-move:before { +.laytp-icon-run-up:before { content: "\e6c5"; } -.laytp-icon-refresh:before { +.laytp-icon-picture:before { content: "\e6c6"; } -.laytp-icon-run-up:before { +.laytp-icon-run-in:before { content: "\e6c7"; } -.laytp-icon-picture:before { +.laytp-icon-pin:before { content: "\e6c8"; } -.laytp-icon-run-in:before { +.laytp-icon-save:before { content: "\e6c9"; } -.laytp-icon-pin:before { +.laytp-icon-search:before { content: "\e6ca"; } -.laytp-icon-save:before { +.laytp-icon-share:before { content: "\e6cb"; } -.laytp-icon-search:before { +.laytp-icon-scanning:before { content: "\e6cc"; } -.laytp-icon-share:before { +.laytp-icon-security:before { content: "\e6cd"; } -.laytp-icon-scanning:before { +.laytp-icon-sign-out:before { content: "\e6ce"; } -.laytp-icon-security:before { +.laytp-icon-select:before { content: "\e6cf"; } -.laytp-icon-select:before { +.laytp-icon-stop:before { content: "\e6d0"; } -.laytp-icon-stop:before { +.laytp-icon-success:before { content: "\e6d1"; } @@ -391,67 +325,255 @@ content: "\e6d9"; } -.laytp-icon-toggle-left:before { +.laytp-icon-telephone-out:before { content: "\e6da"; } -.laytp-icon-toggle-right:before { +.laytp-icon-toggle-left:before { content: "\e6db"; } -.laytp-icon-top:before { +.laytp-icon-toggle-right:before { content: "\e6dc"; } -.laytp-icon-unlock:before { +.laytp-icon-telephone:before { content: "\e6dd"; } -.laytp-icon-user:before { +.laytp-icon-top:before { content: "\e6de"; } -.laytp-icon-upload:before { +.laytp-icon-unlock:before { content: "\e6df"; } -.laytp-icon-work:before { +.laytp-icon-user:before { content: "\e6e0"; } -.laytp-icon-warning:before { +.laytp-icon-upload:before { content: "\e6e1"; } -.laytp-icon-add-bold:before { +.laytp-icon-work:before { content: "\e6e2"; } -.laytp-icon-arrow-left-bold:before { +.laytp-icon-training:before { content: "\e6e3"; } -.laytp-icon-arrow-up-bold:before { +.laytp-icon-warning:before { content: "\e6e4"; } -.laytp-icon-close-bold:before { +.laytp-icon-zoom-in:before { content: "\e6e5"; } -.laytp-icon-arrow-down-bold:before { +.laytp-icon-zoom-out:before { content: "\e6e6"; } -.laytp-icon-minus-bold:before { +.laytp-icon-add-bold:before { content: "\e6e7"; } -.laytp-icon-arrow-right-bold:before { +.laytp-icon-arrow-left-bold:before { content: "\e6e8"; } -.laytp-icon-select-bold:before { +.laytp-icon-arrow-up-bold:before { content: "\e6e9"; } +.laytp-icon-close-bold:before { + content: "\e6ea"; +} + +.laytp-icon-arrow-down-bold:before { + content: "\e6eb"; +} + +.laytp-icon-minus-bold:before { + content: "\e6ec"; +} + +.laytp-icon-arrow-right-bold:before { + content: "\e6ed"; +} + +.laytp-icon-select-bold:before { + content: "\e6ee"; +} + +.laytp-icon-3column:before { + content: "\e663"; +} + +.laytp-icon-column-4:before { + content: "\e664"; +} + +.laytp-icon-add:before { + content: "\e665"; +} + +.laytp-icon-add-circle:before { + content: "\e666"; +} + +.laytp-icon-adjust:before { + content: "\e667"; +} + +.laytp-icon-arrow-up-circle:before { + content: "\e668"; +} + +.laytp-icon-arrow-right-circle:before { + content: "\e669"; +} + +.laytp-icon-arrow-down:before { + content: "\e66a"; +} + +.laytp-icon-ashbin:before { + content: "\e66b"; +} + +.laytp-icon-arrow-right:before { + content: "\e66c"; +} + +.laytp-icon-browse:before { + content: "\e66d"; +} + +.laytp-icon-bottom:before { + content: "\e66e"; +} + +.laytp-icon-back:before { + content: "\e66f"; +} + +.laytp-icon-bad:before { + content: "\e670"; +} + +.laytp-icon-arrow-double-left:before { + content: "\e671"; +} + +.laytp-icon-arrow-left-circle:before { + content: "\e672"; +} + +.laytp-icon-arrow-double-right:before { + content: "\e673"; +} + +.laytp-icon-caps-lock:before { + content: "\e674"; +} + +.laytp-icon-camera:before { + content: "\e675"; +} + +.laytp-icon-chart-bar:before { + content: "\e676"; +} + +.laytp-icon-attachment:before { + content: "\e677"; +} + +.laytp-icon-code:before { + content: "\e678"; +} + +.laytp-icon-close:before { + content: "\e679"; +} + +.laytp-icon-check-item:before { + content: "\e67a"; +} + +.laytp-icon-calendar:before { + content: "\e67b"; +} + +.laytp-icon-comment:before { + content: "\e67c"; +} + +.laytp-icon-column-vertical:before { + content: "\e67d"; +} + +.laytp-icon-column-horizontal:before { + content: "\e67e"; +} + +.laytp-icon-complete:before { + content: "\e67f"; +} + +.laytp-icon-chart-pie:before { + content: "\e680"; +} + +.laytp-icon-cry:before { + content: "\e681"; +} + +.laytp-icon-customer-service:before { + content: "\e682"; +} + +.laytp-icon-delete:before { + content: "\e683"; +} + +.laytp-icon-direction-down:before { + content: "\e684"; +} + +.laytp-icon-copy:before { + content: "\e685"; +} + +.laytp-icon-cut:before { + content: "\e686"; +} + +.laytp-icon-data-view:before { + content: "\e687"; +} + +.laytp-icon-direction-down-circle:before { + content: "\e688"; +} + +.laytp-icon-direction-right:before { + content: "\e689"; +} + +.laytp-icon-direction-up:before { + content: "\e68a"; +} + +.laytp-icon-discount:before { + content: "\e68b"; +} + +.laytp-icon-direction-left:before { + content: "\e68c"; +} + diff --git a/public/static/component/laytp/font/iconfont.js b/public/static/component/laytp/font/iconfont.js index d814bd04876eb9872cbc02e03695e05d0f88ae91..5d247d09087165b859f21f64f73135faaf0e2a22 100644 --- a/public/static/component/laytp/font/iconfont.js +++ b/public/static/component/laytp/font/iconfont.js @@ -1 +1 @@ -!function(c){var h,l,o,s,a,t,p,i='',v=(h=document.getElementsByTagName("script"))[h.length-1].getAttribute("data-injectcss");if(v&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function e(){t||(t=!0,s())}l=function(){var c,h,l,o,s,a=document.createElement("div");a.innerHTML=i,i=null,(c=a.getElementsByTagName("svg")[0])&&(c.setAttribute("aria-hidden","true"),c.style.position="absolute",c.style.width=0,c.style.height=0,c.style.overflow="hidden",h=c,(l=document.body).firstChild?(o=h,(s=l.firstChild).parentNode.insertBefore(o,s)):l.appendChild(h))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(o=function(){document.removeEventListener("DOMContentLoaded",o,!1),l()},document.addEventListener("DOMContentLoaded",o,!1)):document.attachEvent&&(s=l,a=c.document,t=!1,(p=function(){try{a.documentElement.doScroll("left")}catch(c){return void setTimeout(p,50)}e()})(),a.onreadystatechange=function(){"complete"==a.readyState&&(a.onreadystatechange=null,e())})}(window); \ No newline at end of file +!function(c){var h,l,o,a,s,p,t='',v=(v=document.getElementsByTagName("script"))[v.length-1].getAttribute("data-injectcss");if(v&&!c.__iconfont__svg__cssinject__){c.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}function i(){s||(s=!0,o())}h=function(){var c,h,l;(l=document.createElement("div")).innerHTML=t,t=null,(h=l.getElementsByTagName("svg")[0])&&(h.setAttribute("aria-hidden","true"),h.style.position="absolute",h.style.width=0,h.style.height=0,h.style.overflow="hidden",c=h,(l=document.body).firstChild?(h=l.firstChild).parentNode.insertBefore(c,h):l.appendChild(c))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(h,0):(l=function(){document.removeEventListener("DOMContentLoaded",l,!1),h()},document.addEventListener("DOMContentLoaded",l,!1)):document.attachEvent&&(o=h,a=c.document,s=!1,(p=function(){try{a.documentElement.doScroll("left")}catch(c){return void setTimeout(p,50)}i()})(),a.onreadystatechange=function(){"complete"==a.readyState&&(a.onreadystatechange=null,i())})}(window); \ No newline at end of file diff --git a/public/static/component/laytp/font/iconfont.json b/public/static/component/laytp/font/iconfont.json index 93b1c3efd519693a8e29048250c209f38b6cdfb7..e7291f109bded61225c175585ee35c6f77eed0f3 100644 --- a/public/static/component/laytp/font/iconfont.json +++ b/public/static/component/laytp/font/iconfont.json @@ -1,609 +1,497 @@ { - "id": "1858883", - "name": "pearui", - "font_family": "pear-icon", - "css_prefix_text": "pear-icon-", - "description": "Pear ui 的图标组件", + "id": "2654996", + "name": "laytp-admin-layui", + "font_family": "laytp-icon", + "css_prefix_text": "laytp-icon-", + "description": "", "glyphs": [ { - "icon_id": "12654162", + "icon_id": "22697089", "name": "加载", - "font_class": "jiazai", - "unicode": "e6c0", - "unicode_decimal": 59072 - }, - { - "icon_id": "15838406", - "name": "column-3", - "font_class": "3column", - "unicode": "e67c", - "unicode_decimal": 59004 - }, - { - "icon_id": "15838423", - "name": "column-4", - "font_class": "column-4", - "unicode": "e67d", - "unicode_decimal": 59005 - }, - { - "icon_id": "15838424", - "name": "add", - "font_class": "add", - "unicode": "e67e", - "unicode_decimal": 59006 - }, - { - "icon_id": "15838426", - "name": "adjust", - "font_class": "adjust", - "unicode": "e67f", - "unicode_decimal": 59007 - }, - { - "icon_id": "15838430", - "name": "ashbin", - "font_class": "ashbin", - "unicode": "e680", - "unicode_decimal": 59008 - }, - { - "icon_id": "15838432", - "name": "browse", - "font_class": "browse", - "unicode": "e681", - "unicode_decimal": 59009 - }, - { - "icon_id": "15838433", - "name": "bottom", - "font_class": "bottom", - "unicode": "e682", - "unicode_decimal": 59010 - }, - { - "icon_id": "15838434", - "name": "back", - "font_class": "back", - "unicode": "e683", - "unicode_decimal": 59011 - }, - { - "icon_id": "15838435", - "name": "bad", - "font_class": "bad", - "unicode": "e684", - "unicode_decimal": 59012 - }, - { - "icon_id": "15838436", - "name": "arrow-double-left", - "font_class": "arrow-double-left", - "unicode": "e685", - "unicode_decimal": 59013 - }, - { - "icon_id": "15838438", - "name": "arrow-double-right", - "font_class": "arrow-double-right", - "unicode": "e686", - "unicode_decimal": 59014 - }, - { - "icon_id": "15838440", - "name": "camera", - "font_class": "camera", - "unicode": "e687", - "unicode_decimal": 59015 - }, - { - "icon_id": "15838441", - "name": "chart-bar", - "font_class": "chart-bar", - "unicode": "e688", - "unicode_decimal": 59016 - }, - { - "icon_id": "15838442", - "name": "attachment", - "font_class": "attachment", - "unicode": "e689", - "unicode_decimal": 59017 - }, - { - "icon_id": "15838443", - "name": "code", - "font_class": "code", - "unicode": "e68a", - "unicode_decimal": 59018 - }, - { - "icon_id": "15838444", - "name": "close", - "font_class": "close", - "unicode": "e68b", - "unicode_decimal": 59019 - }, - { - "icon_id": "15838445", - "name": "check-item", - "font_class": "check-item", - "unicode": "e68c", - "unicode_decimal": 59020 + "font_class": "load", + "unicode": "e6f0", + "unicode_decimal": 59120 }, { - "icon_id": "15838446", - "name": "calendar", - "font_class": "calendar", + "icon_id": "15838464", + "name": "download", + "font_class": "download", "unicode": "e68d", "unicode_decimal": 59021 }, { - "icon_id": "15838447", - "name": "comment", - "font_class": "comment", + "icon_id": "15838465", + "name": "electronics", + "font_class": "electronics", "unicode": "e68e", "unicode_decimal": 59022 }, { - "icon_id": "15838448", - "name": "column-vertical", - "font_class": "column-vertical", + "icon_id": "15838466", + "name": "drag", + "font_class": "drag", "unicode": "e68f", "unicode_decimal": 59023 }, { - "icon_id": "15838449", - "name": "column-horizontal", - "font_class": "column-horizontal", + "icon_id": "15838467", + "name": "elipsis", + "font_class": "elipsis", "unicode": "e690", "unicode_decimal": 59024 }, { - "icon_id": "15838450", - "name": "complete", - "font_class": "complete", + "icon_id": "15838468", + "name": "export", + "font_class": "export", "unicode": "e691", "unicode_decimal": 59025 }, { - "icon_id": "15838451", - "name": "chart-pie", - "font_class": "chart-pie", + "icon_id": "15838469", + "name": "explain", + "font_class": "explain", "unicode": "e692", "unicode_decimal": 59026 }, { - "icon_id": "15838452", - "name": "cry", - "font_class": "cry", + "icon_id": "15838470", + "name": "edit", + "font_class": "edit", "unicode": "e693", "unicode_decimal": 59027 }, { - "icon_id": "15838453", - "name": "customer-service", - "font_class": "customer-service", + "icon_id": "15838471", + "name": "eye-close", + "font_class": "eye-close", "unicode": "e694", "unicode_decimal": 59028 }, { - "icon_id": "15838455", - "name": "direction-down", - "font_class": "direction-down", + "icon_id": "15838472", + "name": "email", + "font_class": "email", "unicode": "e695", "unicode_decimal": 59029 }, { - "icon_id": "15838456", - "name": "copy", - "font_class": "copy", + "icon_id": "15838473", + "name": "error", + "font_class": "error", "unicode": "e696", "unicode_decimal": 59030 }, { - "icon_id": "15838457", - "name": "cut", - "font_class": "cut", + "icon_id": "15838474", + "name": "favorite", + "font_class": "favorite", "unicode": "e697", "unicode_decimal": 59031 }, { - "icon_id": "15838458", - "name": "data-view", - "font_class": "data-view", + "icon_id": "15838475", + "name": "file-common", + "font_class": "file-common", "unicode": "e698", "unicode_decimal": 59032 }, { - "icon_id": "15838460", - "name": "direction-right", - "font_class": "direction-right", + "icon_id": "15838476", + "name": "file-delete", + "font_class": "file-delete", "unicode": "e699", "unicode_decimal": 59033 }, { - "icon_id": "15838461", - "name": "direction-up", - "font_class": "direction-up", + "icon_id": "15838477", + "name": "file-add", + "font_class": "file-add", "unicode": "e69a", "unicode_decimal": 59034 }, { - "icon_id": "15838462", - "name": "discount", - "font_class": "discount", + "icon_id": "15838478", + "name": "film", + "font_class": "film", "unicode": "e69b", "unicode_decimal": 59035 }, { - "icon_id": "15838463", - "name": "direction-left", - "font_class": "direction-left", + "icon_id": "15838479", + "name": "fabulous", + "font_class": "fabulous", "unicode": "e69c", "unicode_decimal": 59036 }, { - "icon_id": "15838464", - "name": "download", - "font_class": "download", + "icon_id": "15838480", + "name": "file", + "font_class": "file", "unicode": "e69d", "unicode_decimal": 59037 }, { - "icon_id": "15838465", - "name": "electronics", - "font_class": "electronics", + "icon_id": "15838481", + "name": "folder-close", + "font_class": "folder-close", "unicode": "e69e", "unicode_decimal": 59038 }, { - "icon_id": "15838466", - "name": "drag", - "font_class": "drag", + "icon_id": "15838482", + "name": "filter", + "font_class": "filter", "unicode": "e69f", "unicode_decimal": 59039 }, { - "icon_id": "15838467", - "name": "elipsis", - "font_class": "elipsis", + "icon_id": "15838483", + "name": "good", + "font_class": "good", "unicode": "e6a0", "unicode_decimal": 59040 }, { - "icon_id": "15838468", - "name": "export", - "font_class": "export", + "icon_id": "15838484", + "name": "hide", + "font_class": "hide", "unicode": "e6a1", "unicode_decimal": 59041 }, { - "icon_id": "15838469", - "name": "explain", - "font_class": "explain", + "icon_id": "15838485", + "name": "home", + "font_class": "home", "unicode": "e6a2", "unicode_decimal": 59042 }, { - "icon_id": "15838470", - "name": "edit", - "font_class": "edit", + "icon_id": "15838486", + "name": "history", + "font_class": "history", "unicode": "e6a3", "unicode_decimal": 59043 }, { - "icon_id": "15838471", - "name": "eye-close", - "font_class": "eye-close", + "icon_id": "15838487", + "name": "file-open", + "font_class": "file-open", "unicode": "e6a4", "unicode_decimal": 59044 }, { - "icon_id": "15838472", - "name": "email", - "font_class": "email", + "icon_id": "15838488", + "name": "forward", + "font_class": "forward", "unicode": "e6a5", "unicode_decimal": 59045 }, { - "icon_id": "15838474", - "name": "favorite", - "font_class": "favorite", + "icon_id": "15838489", + "name": "import", + "font_class": "import", "unicode": "e6a6", "unicode_decimal": 59046 }, { - "icon_id": "15838475", - "name": "file-common", - "font_class": "file-common", + "icon_id": "15838490", + "name": "image-text", + "font_class": "image-text", "unicode": "e6a7", "unicode_decimal": 59047 }, { - "icon_id": "15838476", - "name": "file-delete", - "font_class": "file-delete", + "icon_id": "15838491", + "name": "keyboard-26", + "font_class": "keyboard-26", "unicode": "e6a8", "unicode_decimal": 59048 }, { - "icon_id": "15838477", - "name": "file-add", - "font_class": "file-add", + "icon_id": "15838492", + "name": "keyboard-9", + "font_class": "keyboard-9", "unicode": "e6a9", "unicode_decimal": 59049 }, { - "icon_id": "15838479", - "name": "fabulous", - "font_class": "fabulous", + "icon_id": "15838493", + "name": "link", + "font_class": "link", "unicode": "e6aa", "unicode_decimal": 59050 }, { - "icon_id": "15838480", - "name": "file", - "font_class": "file", + "icon_id": "15838494", + "name": "layout", + "font_class": "layout", "unicode": "e6ab", "unicode_decimal": 59051 }, { - "icon_id": "15838481", - "name": "folder-close", - "font_class": "folder-close", + "icon_id": "15838495", + "name": "fullscreen-shrink", + "font_class": "fullscreen-shrink", "unicode": "e6ac", "unicode_decimal": 59052 }, { - "icon_id": "15838483", - "name": "good", - "font_class": "good", + "icon_id": "15838496", + "name": "layers", + "font_class": "layers", "unicode": "e6ad", "unicode_decimal": 59053 }, { - "icon_id": "15838484", - "name": "hide", - "font_class": "hide", + "icon_id": "15838497", + "name": "lock", + "font_class": "lock", "unicode": "e6ae", "unicode_decimal": 59054 }, { - "icon_id": "15838487", - "name": "file-open", - "font_class": "file-open", + "icon_id": "15838498", + "name": "fullscreen-expand", + "font_class": "fullscreen-expand", "unicode": "e6af", "unicode_decimal": 59055 }, { - "icon_id": "15838488", - "name": "forward", - "font_class": "forward", + "icon_id": "15838499", + "name": "map", + "font_class": "map", "unicode": "e6b0", "unicode_decimal": 59056 }, { - "icon_id": "15838489", - "name": "import", - "font_class": "import", + "icon_id": "15838500", + "name": "meh", + "font_class": "meh", "unicode": "e6b1", "unicode_decimal": 59057 }, { - "icon_id": "15838493", - "name": "link", - "font_class": "link", + "icon_id": "15838501", + "name": "menu", + "font_class": "menu", "unicode": "e6b2", "unicode_decimal": 59058 }, { - "icon_id": "15838494", - "name": "layout", - "font_class": "layout", + "icon_id": "15838502", + "name": "loading", + "font_class": "loading", "unicode": "e6b3", "unicode_decimal": 59059 }, { - "icon_id": "15838495", - "name": "fullscreen-shrink", - "font_class": "fullscreen-shrink", + "icon_id": "15838503", + "name": "help", + "font_class": "help", "unicode": "e6b4", "unicode_decimal": 59060 }, { - "icon_id": "15838496", - "name": "layers", - "font_class": "layers", + "icon_id": "15838504", + "name": "minus-circle", + "font_class": "minus-circle", "unicode": "e6b5", "unicode_decimal": 59061 }, { - "icon_id": "15838497", - "name": "lock", - "font_class": "lock", + "icon_id": "15838505", + "name": "modular", + "font_class": "modular", "unicode": "e6b6", "unicode_decimal": 59062 }, { - "icon_id": "15838498", - "name": "fullscreen-expand", - "font_class": "fullscreen-expand", + "icon_id": "15838506", + "name": "notification", + "font_class": "notification", "unicode": "e6b7", "unicode_decimal": 59063 }, { - "icon_id": "15838499", - "name": "map", - "font_class": "map", + "icon_id": "15838507", + "name": "mic", + "font_class": "mic", "unicode": "e6b8", "unicode_decimal": 59064 }, { - "icon_id": "15838500", - "name": "meh", - "font_class": "meh", + "icon_id": "15838508", + "name": "more", + "font_class": "more", "unicode": "e6b9", "unicode_decimal": 59065 }, { - "icon_id": "15838501", - "name": "menu", - "font_class": "menu", + "icon_id": "15838509", + "name": "pad", + "font_class": "pad", "unicode": "e6ba", "unicode_decimal": 59066 }, { - "icon_id": "15838502", - "name": "loading", - "font_class": "loading", + "icon_id": "15838510", + "name": "operation", + "font_class": "operation", "unicode": "e6bb", "unicode_decimal": 59067 }, { - "icon_id": "15838503", - "name": "help", - "font_class": "help", + "icon_id": "15838511", + "name": "play", + "font_class": "play", "unicode": "e6bc", "unicode_decimal": 59068 }, { - "icon_id": "15838505", - "name": "modular", - "font_class": "modular", + "icon_id": "15838512", + "name": "print", + "font_class": "print", "unicode": "e6bd", "unicode_decimal": 59069 }, { - "icon_id": "15838506", - "name": "notification", - "font_class": "notification", + "icon_id": "15838513", + "name": "mobile-phone", + "font_class": "mobile-phone", "unicode": "e6be", "unicode_decimal": 59070 }, { - "icon_id": "15838507", - "name": "mic", - "font_class": "mic", + "icon_id": "15838514", + "name": "minus", + "font_class": "minus", "unicode": "e6bf", "unicode_decimal": 59071 }, { - "icon_id": "15838510", - "name": "operation", - "font_class": "operation", + "icon_id": "15838515", + "name": "navigation", + "font_class": "navigation", + "unicode": "e6c0", + "unicode_decimal": 59072 + }, + { + "icon_id": "15838516", + "name": "pdf", + "font_class": "pdf", "unicode": "e6c1", "unicode_decimal": 59073 }, { - "icon_id": "15838512", - "name": "print", - "font_class": "print", + "icon_id": "15838517", + "name": "prompt", + "font_class": "prompt", "unicode": "e6c2", "unicode_decimal": 59074 }, - { - "icon_id": "15838513", - "name": "mobile-phone", - "font_class": "mobile-phone", - "unicode": "e6c3", - "unicode_decimal": 59075 - }, - { - "icon_id": "15838515", - "name": "navigation", - "font_class": "navigation", - "unicode": "e6c4", - "unicode_decimal": 59076 - }, { "icon_id": "15838518", "name": "move", "font_class": "move", - "unicode": "e6c5", - "unicode_decimal": 59077 + "unicode": "e6c3", + "unicode_decimal": 59075 }, { "icon_id": "15838519", "name": "refresh", "font_class": "refresh", - "unicode": "e6c6", - "unicode_decimal": 59078 + "unicode": "e6c4", + "unicode_decimal": 59076 }, { "icon_id": "15838520", "name": "run-up", "font_class": "run-up", - "unicode": "e6c7", - "unicode_decimal": 59079 + "unicode": "e6c5", + "unicode_decimal": 59077 }, { "icon_id": "15838521", "name": "picture", "font_class": "picture", - "unicode": "e6c8", - "unicode_decimal": 59080 + "unicode": "e6c6", + "unicode_decimal": 59078 }, { "icon_id": "15838522", "name": "run-in", "font_class": "run-in", - "unicode": "e6c9", - "unicode_decimal": 59081 + "unicode": "e6c7", + "unicode_decimal": 59079 }, { "icon_id": "15838523", "name": "pin", "font_class": "pin", - "unicode": "e6ca", - "unicode_decimal": 59082 + "unicode": "e6c8", + "unicode_decimal": 59080 }, { "icon_id": "15838524", "name": "save", "font_class": "save", - "unicode": "e6cb", - "unicode_decimal": 59083 + "unicode": "e6c9", + "unicode_decimal": 59081 }, { "icon_id": "15838525", "name": "search", "font_class": "search", - "unicode": "e6cc", - "unicode_decimal": 59084 + "unicode": "e6ca", + "unicode_decimal": 59082 }, { "icon_id": "15838526", "name": "share", "font_class": "share", - "unicode": "e6cd", - "unicode_decimal": 59085 + "unicode": "e6cb", + "unicode_decimal": 59083 }, { "icon_id": "15838527", "name": "scanning", "font_class": "scanning", - "unicode": "e6ce", - "unicode_decimal": 59086 + "unicode": "e6cc", + "unicode_decimal": 59084 }, { "icon_id": "15838528", "name": "security", "font_class": "security", - "unicode": "e6cf", - "unicode_decimal": 59087 + "unicode": "e6cd", + "unicode_decimal": 59085 + }, + { + "icon_id": "15838529", + "name": "sign-out", + "font_class": "sign-out", + "unicode": "e6ce", + "unicode_decimal": 59086 }, { "icon_id": "15838530", "name": "select", "font_class": "select", - "unicode": "e6d0", - "unicode_decimal": 59088 + "unicode": "e6cf", + "unicode_decimal": 59087 }, { "icon_id": "15838531", "name": "stop", "font_class": "stop", + "unicode": "e6d0", + "unicode_decimal": 59088 + }, + { + "icon_id": "15838532", + "name": "success", + "font_class": "success", "unicode": "e6d1", "unicode_decimal": 59089 }, @@ -663,117 +551,446 @@ "unicode": "e6d9", "unicode_decimal": 59097 }, + { + "icon_id": "15838541", + "name": "telephone-out", + "font_class": "telephone-out", + "unicode": "e6da", + "unicode_decimal": 59098 + }, { "icon_id": "15838542", "name": "toggle-left", "font_class": "toggle-left", - "unicode": "e6da", - "unicode_decimal": 59098 + "unicode": "e6db", + "unicode_decimal": 59099 }, { "icon_id": "15838543", "name": "toggle-right", "font_class": "toggle-right", - "unicode": "e6db", - "unicode_decimal": 59099 + "unicode": "e6dc", + "unicode_decimal": 59100 + }, + { + "icon_id": "15838544", + "name": "telephone", + "font_class": "telephone", + "unicode": "e6dd", + "unicode_decimal": 59101 }, { "icon_id": "15838545", "name": "top", "font_class": "top", - "unicode": "e6dc", - "unicode_decimal": 59100 + "unicode": "e6de", + "unicode_decimal": 59102 }, { "icon_id": "15838546", "name": "unlock", "font_class": "unlock", - "unicode": "e6dd", - "unicode_decimal": 59101 + "unicode": "e6df", + "unicode_decimal": 59103 }, { "icon_id": "15838547", "name": "user", "font_class": "user", - "unicode": "e6de", - "unicode_decimal": 59102 + "unicode": "e6e0", + "unicode_decimal": 59104 }, { "icon_id": "15838548", "name": "upload", "font_class": "upload", - "unicode": "e6df", - "unicode_decimal": 59103 + "unicode": "e6e1", + "unicode_decimal": 59105 }, { "icon_id": "15838549", "name": "work", "font_class": "work", - "unicode": "e6e0", - "unicode_decimal": 59104 + "unicode": "e6e2", + "unicode_decimal": 59106 + }, + { + "icon_id": "15838550", + "name": "training", + "font_class": "training", + "unicode": "e6e3", + "unicode_decimal": 59107 }, { "icon_id": "15838551", "name": "warning", "font_class": "warning", - "unicode": "e6e1", - "unicode_decimal": 59105 + "unicode": "e6e4", + "unicode_decimal": 59108 + }, + { + "icon_id": "15838552", + "name": "zoom-in", + "font_class": "zoom-in", + "unicode": "e6e5", + "unicode_decimal": 59109 + }, + { + "icon_id": "15838554", + "name": "zoom-out", + "font_class": "zoom-out", + "unicode": "e6e6", + "unicode_decimal": 59110 }, { "icon_id": "15838560", "name": "add-bold", "font_class": "add-bold", - "unicode": "e6e2", - "unicode_decimal": 59106 + "unicode": "e6e7", + "unicode_decimal": 59111 }, { "icon_id": "15838561", "name": "arrow-left-bold", "font_class": "arrow-left-bold", - "unicode": "e6e3", - "unicode_decimal": 59107 + "unicode": "e6e8", + "unicode_decimal": 59112 }, { "icon_id": "15838562", "name": "arrow-up-bold", "font_class": "arrow-up-bold", - "unicode": "e6e4", - "unicode_decimal": 59108 + "unicode": "e6e9", + "unicode_decimal": 59113 }, { "icon_id": "15838563", "name": "close-bold", "font_class": "close-bold", - "unicode": "e6e5", - "unicode_decimal": 59109 + "unicode": "e6ea", + "unicode_decimal": 59114 }, { "icon_id": "15838564", "name": "arrow-down-bold", "font_class": "arrow-down-bold", - "unicode": "e6e6", - "unicode_decimal": 59110 + "unicode": "e6eb", + "unicode_decimal": 59115 }, { "icon_id": "15838565", "name": "minus-bold", "font_class": "minus-bold", - "unicode": "e6e7", - "unicode_decimal": 59111 + "unicode": "e6ec", + "unicode_decimal": 59116 }, { "icon_id": "15838566", "name": "arrow-right-bold", "font_class": "arrow-right-bold", - "unicode": "e6e8", - "unicode_decimal": 59112 + "unicode": "e6ed", + "unicode_decimal": 59117 }, { "icon_id": "15838567", "name": "select-bold", "font_class": "select-bold", - "unicode": "e6e9", - "unicode_decimal": 59113 + "unicode": "e6ee", + "unicode_decimal": 59118 + }, + { + "icon_id": "15838406", + "name": "column-3", + "font_class": "3column", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "15838423", + "name": "column-4", + "font_class": "column-4", + "unicode": "e664", + "unicode_decimal": 58980 + }, + { + "icon_id": "15838424", + "name": "add", + "font_class": "add", + "unicode": "e665", + "unicode_decimal": 58981 + }, + { + "icon_id": "15838425", + "name": "add-circle", + "font_class": "add-circle", + "unicode": "e666", + "unicode_decimal": 58982 + }, + { + "icon_id": "15838426", + "name": "adjust", + "font_class": "adjust", + "unicode": "e667", + "unicode_decimal": 58983 + }, + { + "icon_id": "15838427", + "name": "arrow-up-circle", + "font_class": "arrow-up-circle", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "15838428", + "name": "arrow-right-circle", + "font_class": "arrow-right-circle", + "unicode": "e669", + "unicode_decimal": 58985 + }, + { + "icon_id": "15838429", + "name": "arrow-down", + "font_class": "arrow-down", + "unicode": "e66a", + "unicode_decimal": 58986 + }, + { + "icon_id": "15838430", + "name": "ashbin", + "font_class": "ashbin", + "unicode": "e66b", + "unicode_decimal": 58987 + }, + { + "icon_id": "15838431", + "name": "arrow-right", + "font_class": "arrow-right", + "unicode": "e66c", + "unicode_decimal": 58988 + }, + { + "icon_id": "15838432", + "name": "browse", + "font_class": "browse", + "unicode": "e66d", + "unicode_decimal": 58989 + }, + { + "icon_id": "15838433", + "name": "bottom", + "font_class": "bottom", + "unicode": "e66e", + "unicode_decimal": 58990 + }, + { + "icon_id": "15838434", + "name": "back", + "font_class": "back", + "unicode": "e66f", + "unicode_decimal": 58991 + }, + { + "icon_id": "15838435", + "name": "bad", + "font_class": "bad", + "unicode": "e670", + "unicode_decimal": 58992 + }, + { + "icon_id": "15838436", + "name": "arrow-double-left", + "font_class": "arrow-double-left", + "unicode": "e671", + "unicode_decimal": 58993 + }, + { + "icon_id": "15838437", + "name": "arrow-left-circle", + "font_class": "arrow-left-circle", + "unicode": "e672", + "unicode_decimal": 58994 + }, + { + "icon_id": "15838438", + "name": "arrow-double-right", + "font_class": "arrow-double-right", + "unicode": "e673", + "unicode_decimal": 58995 + }, + { + "icon_id": "15838439", + "name": "caps-lock", + "font_class": "caps-lock", + "unicode": "e674", + "unicode_decimal": 58996 + }, + { + "icon_id": "15838440", + "name": "camera", + "font_class": "camera", + "unicode": "e675", + "unicode_decimal": 58997 + }, + { + "icon_id": "15838441", + "name": "chart-bar", + "font_class": "chart-bar", + "unicode": "e676", + "unicode_decimal": 58998 + }, + { + "icon_id": "15838442", + "name": "attachment", + "font_class": "attachment", + "unicode": "e677", + "unicode_decimal": 58999 + }, + { + "icon_id": "15838443", + "name": "code", + "font_class": "code", + "unicode": "e678", + "unicode_decimal": 59000 + }, + { + "icon_id": "15838444", + "name": "close", + "font_class": "close", + "unicode": "e679", + "unicode_decimal": 59001 + }, + { + "icon_id": "15838445", + "name": "check-item", + "font_class": "check-item", + "unicode": "e67a", + "unicode_decimal": 59002 + }, + { + "icon_id": "15838446", + "name": "calendar", + "font_class": "calendar", + "unicode": "e67b", + "unicode_decimal": 59003 + }, + { + "icon_id": "15838447", + "name": "comment", + "font_class": "comment", + "unicode": "e67c", + "unicode_decimal": 59004 + }, + { + "icon_id": "15838448", + "name": "column-vertical", + "font_class": "column-vertical", + "unicode": "e67d", + "unicode_decimal": 59005 + }, + { + "icon_id": "15838449", + "name": "column-horizontal", + "font_class": "column-horizontal", + "unicode": "e67e", + "unicode_decimal": 59006 + }, + { + "icon_id": "15838450", + "name": "complete", + "font_class": "complete", + "unicode": "e67f", + "unicode_decimal": 59007 + }, + { + "icon_id": "15838451", + "name": "chart-pie", + "font_class": "chart-pie", + "unicode": "e680", + "unicode_decimal": 59008 + }, + { + "icon_id": "15838452", + "name": "cry", + "font_class": "cry", + "unicode": "e681", + "unicode_decimal": 59009 + }, + { + "icon_id": "15838453", + "name": "customer-service", + "font_class": "customer-service", + "unicode": "e682", + "unicode_decimal": 59010 + }, + { + "icon_id": "15838454", + "name": "delete", + "font_class": "delete", + "unicode": "e683", + "unicode_decimal": 59011 + }, + { + "icon_id": "15838455", + "name": "direction-down", + "font_class": "direction-down", + "unicode": "e684", + "unicode_decimal": 59012 + }, + { + "icon_id": "15838456", + "name": "copy", + "font_class": "copy", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "15838457", + "name": "cut", + "font_class": "cut", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "15838458", + "name": "data-view", + "font_class": "data-view", + "unicode": "e687", + "unicode_decimal": 59015 + }, + { + "icon_id": "15838459", + "name": "direction-down-circle", + "font_class": "direction-down-circle", + "unicode": "e688", + "unicode_decimal": 59016 + }, + { + "icon_id": "15838460", + "name": "direction-right", + "font_class": "direction-right", + "unicode": "e689", + "unicode_decimal": 59017 + }, + { + "icon_id": "15838461", + "name": "direction-up", + "font_class": "direction-up", + "unicode": "e68a", + "unicode_decimal": 59018 + }, + { + "icon_id": "15838462", + "name": "discount", + "font_class": "discount", + "unicode": "e68b", + "unicode_decimal": 59019 + }, + { + "icon_id": "15838463", + "name": "direction-left", + "font_class": "direction-left", + "unicode": "e68c", + "unicode_decimal": 59020 } ] } diff --git a/public/static/component/laytp/font/iconfont.ttf b/public/static/component/laytp/font/iconfont.ttf index 160767099fa7635f53b2b2d69c796321645da3e1..f40ab3acea096b8096b94762a26da9c9ca1baf99 100644 Binary files a/public/static/component/laytp/font/iconfont.ttf and b/public/static/component/laytp/font/iconfont.ttf differ diff --git a/public/static/component/laytp/font/iconfont.woff b/public/static/component/laytp/font/iconfont.woff index 9cfc24b9157478eb39cbc90f1d9e6ff4dc0995b2..869e1a06606fb68a0e13c408d75919a343cc06f7 100644 Binary files a/public/static/component/laytp/font/iconfont.woff and b/public/static/component/laytp/font/iconfont.woff differ diff --git a/public/static/component/laytp/font/iconfont.woff2 b/public/static/component/laytp/font/iconfont.woff2 index 52b39fd65e68986bcb02a3f1361c32aee6a1f5da..4a3ea5e4eda162e70b54ba932a3950a45297c374 100644 Binary files a/public/static/component/laytp/font/iconfont.woff2 and b/public/static/component/laytp/font/iconfont.woff2 differ diff --git a/public/static/component/laytp/layuiConfig.js b/public/static/component/laytp/layuiConfig.js index 1fea76ed6190c2832883f874b014a0bf2d6f188c..8064d2c84bd1e4f10f804b6711da5c7424139630 100644 --- a/public/static/component/laytp/layuiConfig.js +++ b/public/static/component/laytp/layuiConfig.js @@ -17,62 +17,7 @@ layui.config({ dir: dir, // 此值影响layui.addcss方法 base: base, //设定扩展的Layui模块的所在目录,一般用于外部模块扩展 version: localStorage.getItem("version") //js和css文件统一版本号 -}).use([ - 'theme', - 'facade', -], function () { - // 加载css样式 - var cssPath = [ - // layui.css要优先于layui.js进行加载,否则有些样式会出错,所以在每个加载layui.js的前面去加载layui.css - // "/component/layui/css/layui.css", - // js模块的css - "/component/laytp/font/iconfont.css", - "/component/laytp/font/font-awesome-4.7.0/css/font-awesome.css", - "/component/laytp/css/module/dtree/font/dtreefont.css", - "/component/laytp/css/module/dtree/dtree.css", - "/component/laytp/css/module/iconPicker.css", - "/component/laytp/css/module/treetable.css", - "/component/laytp/css/module/message.css", - "/component/laytp/css/module/cropper.css", - "/component/laytp/css/module/loading.css", - "/component/laytp/css/module/topBar.css", - "/component/laytp/css/module/select.css", - "/component/laytp/css/module/layout.css", - "/component/laytp/css/module/laytpUpload.css", - "/component/laytp/css/module/notice.css", - "/component/laytp/css/module/button.css", - "/component/laytp/css/module/table.css", - "/component/laytp/css/module/frame.css", - "/component/laytp/css/module/icon.css", - "/component/laytp/css/module/layer.css", - "/component/laytp/css/module/menu.css", - "/component/laytp/css/module/form.css", - "/component/laytp/css/module/link.css", - "/component/laytp/css/module/code.css", - "/component/laytp/css/module/step.css", - "/component/laytp/css/module/card.css", - "/component/laytp/css/module/tab.css", - "/component/laytp/css/module/tag.css", - "/component/laytp/css/module/verticalCard.css", - "/component/laytp/css/module/prettify.css", - "/component/laytp/css/module/operationDropdown.css", - - // 静态页面html独立的css - // "admin/css/admin.css", // index.html布局页面,在这里来加载它的css页面样式会错乱,放在index.html页面顶部加载需要的css - // "admin/css/load.css", // index.html布局页面,在这里来加载它的css页面样式会错乱,放在index.html页面顶部加载需要的css - "/admin/css/other/console.css", // 控制面板的css - ]; - - for(let k in cssPath){ - if(localStorage.getItem("staticDomain")){ - cssPath[k] = ".." + cssPath[k]; - layui.addcss(cssPath[k] + "?v=" + localStorage.getItem("version")); - }else{ - cssPath[k] = "/static" + cssPath[k]; - layui.link(cssPath[k] + "?v=" + localStorage.getItem("version")); - } - } - +}).use(['theme','facade'], function () { // 设置主题 layui.theme.changeTheme(window, false); }); \ No newline at end of file diff --git a/public/static/component/laytp/module/admin.js b/public/static/component/laytp/module/admin.js index 0b40a3a297b58bfe9ba5078a57b239797b3bdc9a..78a15d33d72450c4517f03747b7bab21310c9f5a 100644 --- a/public/static/component/laytp/module/admin.js +++ b/public/static/component/laytp/module/admin.js @@ -1,88 +1,76 @@ -layui.define([ - 'message', - 'table', - 'jquery', - 'element', - 'yaml', - 'form', - 'laytpTab', - 'menu', - 'frame', - 'theme', - 'convert' - ], +layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'laytpTab', 'laytpMenu', 'frame', 'theme', 'convert', 'fullscreen'], function(exports) { "use strict"; - var $ = layui.jquery, + const $ = layui.jquery, form = layui.form, element = layui.element, yaml = layui.yaml, laytpTab = layui.laytpTab, convert = layui.convert, - laytpMenu = layui.menu, + laytpMenu = layui.laytpMenu, laytpFrame = layui.frame, laytpTheme = layui.theme, - message = layui.message; + message = layui.message, + fullscreen = layui.fullscreen; - var bodyFrame; - var sideMenu; - var bodyTab; - var config; - var logout = function() {}; - var msgInstance; - - var body = $('body'); + let bodyFrame; + let sideMenu; + let bodyTab; + let config; + let logout = function () { + }; + let msgInstance; + const body = $('body'); - var laytpAdmin = new function() { + const laytpAdmin = new function () { - // 默认配置 - var configType = 'yml'; - var configPath = 'laytp.config.yml'; + let configType = 'yml'; + let configPath = 'laytp.config.yml'; - this.setConfigPath = function(path) { + this.setConfigPath = function (path) { configPath = path; - }; + } - this.setConfigType = function(type) { + this.setConfigType = function (type) { configType = type; - }; + } - this.setAvatar = function(url, username) { - // var image = new Image(); - // if(localStorage.getItem("staticDomain") && !url){ - // image.src = localStorage.getItem("staticDomain") + "/admin/images/avatar.jpg"; - // }else{ - // image.src = url || "/static/admin/images/avatar.jpg"; - // } - // image.onload = function() { - // $(".layui-nav-img").attr("src", convert.imageToBase64(image)); - // }; - var src = ''; - if(facade.getStaticDomain() && !url){ - src = facade.getStaticDomain() + "/admin/images/avatar.jpg"; - }else{ - src = url || "/static/admin/images/avatar.jpg"; - } - $(".layui-nav-img").attr("src", src); - $(".layui-nav-img").parent().append(username); - }; + this.setAvatar = function(url, username) { + // var image = new Image(); + // if(localStorage.getItem("staticDomain") && !url){ + // image.src = localStorage.getItem("staticDomain") + "/admin/images/avatar.jpg"; + // }else{ + // image.src = url || "/static/admin/images/avatar.jpg"; + // } + // image.onload = function() { + // $(".layui-nav-img").attr("src", convert.imageToBase64(image)); + // }; + var src = ''; + if(facade.getStaticDomain() && !url){ + src = facade.getStaticDomain() + "/admin/images/avatar.jpg"; + }else{ + src = url || "/static/admin/images/avatar.jpg"; + } + $(".layui-nav-img").attr("src", src); + $(".layui-nav-img").parent().append(username); + }; - this.render = function(initConfig) { + this.render = function (initConfig) { if (initConfig !== undefined) { applyConfig(initConfig); } else { applyConfig(laytpAdmin.readConfig()); } - window.config = config; - window.bodyTab = bodyTab; + window.config = config; + window.bodyTab = bodyTab; }; - this.readConfig = function() { + this.readConfig = function () { if (configType === "yml") { return yaml.load(configPath); } else { - var data; + var data; $.ajax({ url: configPath, type: 'get', @@ -91,121 +79,92 @@ layui.define([ success: function(result) { data = result; } - }); + }) return data; } - }; + } - this.messageRender = function(option) { - var option = { + this.messageRender = function (option) { + var option = { elem: '.message', url: option.header.message, height: '250px' }; msgInstance = message.render(option); - }; - - this.logoRender = function(param) { - if(facade.getStaticDomain()){ - $(".layui-logo .logo").attr("src", facade.getStaticDomain() + param.logo.image); - }else{ - $(".layui-logo .logo").attr("src", param.logo.image); - } + } - $(".layui-logo .title").html(param.logo.title); - }; + this.logoRender = function (param) { + if(facade.getStaticDomain()){ + $(".layui-logo .logo").attr("src", facade.getStaticDomain() + param.logo.image); + }else{ + $(".layui-logo .logo").attr("src", param.logo.image); + } + $(".layui-logo .title").html(param.logo.title); + } - this.menuRender = function(param) { + this.menuRender = function (param) { sideMenu = laytpMenu.render({ elem: 'sideMenu', async: param.menu.async !== undefined ? param.menu.async : true, theme: "dark-theme", height: '100%', method: param.menu.method, - control: param.menu.control ? 'control' : false, // control + control: isControl(param) === 'true' || isControl(param) === true ? 'control' : false, // control defaultMenu: 0, accordion: param.menu.accordion, url: param.menu.data, data: param.menu.data, //async为false时,传入菜单数组 parseData: function(res){ - if(param.isSearch){ - var result = { - "id" : 0, - "is_menu" : 1, - "is_show" : 1, - "title" : "搜索结果", - "type" : 0, - "children" : res, - "href" : "", - "icon" : "" - }; - var resArr = []; - resArr.push(result); - return resArr; - }else{ - window.menuData = []; - if(res.data){ - if(res.code === 10401){ - layui.popup.failure(res["msg"],function(){ - facade.redirect("/admin/login.html"); - }); - }else{ - window.menuData = laytpAdmin.parseData(res.data); - } - }else{ - window.menuData = laytpAdmin.parseData(res); - } - return window.menuData; - } - - }, - change: function() { + window.menuData = []; + if(res.data){ + if(res.code === 10401){ + layui.popup.failure(res["msg"],function(){ + facade.redirect("/admin/login.html"); + }); + }else{ + window.menuData = laytpAdmin.parseData(res.data); + } + }else{ + window.menuData = laytpAdmin.parseData(res); + } + return window.menuData; + }, + change: function () { compatible(); }, - done: function() { + done: function () { + sideMenu.isCollapse = param.menu.collapse; sideMenu.selectItem(param.menu.select); - sideMenu.selectItem(sessionStorage.getItem("content-laytp-tab-data-current")); + laytpAdmin.collapse(param); } }); - }; + } - this.parseData = function(data){ - $.each(data, function(i, item) { - var tempItem = {}; - tempItem.id = item.id; - tempItem.href = item.href; - tempItem.icon = item.icon; - tempItem.type = 0; - tempItem.title = item.name; - if(typeof item.children != null && typeof item.children !== "undefined" && item.children.length > 0){ - tempItem.children = laytpAdmin.parseData(item.children); - }else{ - tempItem.type = 1; - } - data[i] = tempItem; - }); - return data; - }; + this.parseData = function(data){ + $.each(data, function(i, item) { + var tempItem = {}; + tempItem.id = item.id; + tempItem.href = item.href; + tempItem.icon = item.icon; + tempItem.type = 0; + tempItem.title = item.name; + if(typeof item.children != null && typeof item.children !== "undefined" && item.children.length > 0){ + tempItem.children = laytpAdmin.parseData(item.children); + }else{ + tempItem.type = 1; + } + data[i] = tempItem; + }); + return data; + }; - this.bodyRender = function(param) { - body.on("click", ".refresh", function() { - var refreshA = $(".refresh a"); - refreshA.removeClass("layui-icon-refresh-1"); - refreshA.addClass("layui-anim"); - refreshA.addClass("layui-anim-rotate"); - refreshA.addClass("layui-anim-loop"); - refreshA.addClass("layui-icon-loading"); - if (param.tab.muiltTab) bodyTab.refresh(400); - else bodyFrame.refresh(400); - setTimeout(function() { - refreshA.addClass("layui-icon-refresh-1"); - refreshA.removeClass("layui-anim"); - refreshA.removeClass("layui-anim-rotate"); - refreshA.removeClass("layui-anim-loop"); - refreshA.removeClass("layui-icon-loading"); - }, 600); - }); - if (param.tab.muiltTab) { + this.bodyRender = function (param) { + + body.on("click", ".refresh", function () { + refresh(); + }) + + if (isMuiltTab(param) === "true" || isMuiltTab(param) === true) { bodyTab = laytpTab.render({ elem: 'content', roll: true, @@ -214,8 +173,9 @@ layui.define([ height: '100%', session: param.tab.session, index: 0, - tabMax: param.tab.tabMax, - closeEvent: function(id) { + tabMax: param.tab.max, + preload: param.tab.preload, + closeEvent: function (id) { sideMenu.selectItem(id); }, data: [{ @@ -224,24 +184,25 @@ layui.define([ title: param.tab.index.title, close: false }], - success: function(id) { + success: function (id) { if (param.tab.session) { - setTimeout(function() { + setTimeout(function () { sideMenu.selectItem(id); bodyTab.positionTab(); - }, 500); + }, 500) } } }); - bodyTab.click(function(id) { + + bodyTab.click(function (id) { if (!param.tab.keepState) { bodyTab.refresh(false); } bodyTab.positionTab(); sideMenu.selectItem(id); - }); + }) - sideMenu.click(function(dom, data) { + sideMenu.click(function (dom, data) { bodyTab.addTabOnly({ id: data.menuId, title: data.menuTitle, @@ -249,152 +210,519 @@ layui.define([ icon: data.menuIcon, close: true }, 300); - compatible(); - - }); + }) } else { bodyFrame = laytpFrame.render({ elem: 'content', - title: '控制面板', + title: '首页', url: param.tab.index.href, width: '100%', height: '100%' }); - window.bodyFrame = bodyFrame; - sideMenu.click(function(dom, data) { - bodyFrame.changePage(data.menuUrl, data.menuPath, true); - compatible(); - }); + sideMenu.click(function (dom, data) { + bodyFrame.changePage(data.menuUrl, true); + compatible() + }) } - }; + } - this.keepLoad = function(param) { - compatible(); - setTimeout(function() { + this.keepLoad = function (param) { + compatible() + setTimeout(function () { $(".loader-main").fadeOut(200); }, param.other.keepLoad) - }; + } - this.themeRender = function(option) { + this.themeRender = function (option) { if (option.theme.allowCustom === false) { $(".setting").remove(); } - var colorId = localStorage.getItem("theme-color"); - var currentColor = getColorById(colorId); + const colorId = localStorage.getItem("theme-color"); + const currentColor = getColorById(colorId); localStorage.setItem("theme-color", currentColor.id); - localStorage.setItem("theme-color-context", currentColor.color); - laytpTheme.changeTheme(window, option.other.autoHead); - var menu = localStorage.getItem("theme-menu"); - if (menu == null) { + localStorage.setItem("theme-color-color", currentColor.color); + localStorage.setItem("theme-color-second", currentColor.second); + localStorage.setItem("theme-color-table_checked", currentColor.tableChecked); + laytpTheme.changeTheme(window, isAutoHead(config)); + + let menu = localStorage.getItem("theme-menu"); + if (menu === null) { menu = option.theme.defaultMenu; } else { if (option.theme.allowCustom === false) { menu = option.theme.defaultMenu; } } + + let header = localStorage.getItem("theme-header"); + if (header === null) { + header = option.theme.defaultHeader; + } else { + if (option.theme.allowCustom === false) { + header = option.theme.defaultHeader; + } + } + + let banner = localStorage.getItem("theme-banner"); + if (banner === null) { + banner = option.theme.banner; + } else { + if (option.theme.allowCustom === false) { + banner = option.theme.banner; + } + } + + let autoHead = localStorage.getItem("auto-head"); + if (autoHead === null) { + autoHead = option.other.autoHead; + } else { + if (option.theme.allowCustom === false) { + autoHead = option.other.autoHead; + } + } + + let muiltTab = localStorage.getItem("muilt-tab"); + if (muiltTab === null) { + muiltTab = option.tab.enable; + } else { + if (option.theme.allowCustom === false) { + muiltTab = option.tab.enable; + } + } + + let control = localStorage.getItem("control"); + if (control === null) { + control = option.menu.control; + } else { + if (option.theme.allowCustom === false) { + control = option.menu.control; + } + } + + let footer = localStorage.getItem("footer"); + if (footer === null) { + footer = option.other.footer; + } else { + if (option.theme.allowCustom === false) { + footer = option.other.footer; + } + } + + localStorage.setItem("muilt-tab", muiltTab); + localStorage.setItem("theme-banner", banner); localStorage.setItem("theme-menu", menu); + localStorage.setItem("theme-header", header); + localStorage.setItem("auto-head", autoHead); + localStorage.setItem("control", control); + localStorage.setItem("footer", footer); this.menuSkin(menu); + this.headerSkin(header); + this.bannerSkin(banner); + this.footer(footer); + } + + this.footer = function (footer) { + const bodyDOM = $(".laytp-admin .layui-body"); + const footerDOM = $(".laytp-admin .layui-footer"); + if (footer === true || footer === "true") { + footerDOM.removeClass("close"); + bodyDOM.css("bottom", footerDOM.outerHeight()); + } else { + footerDOM.addClass("close"); + bodyDOM.css("bottom", ""); + } + } + + this.bannerSkin = function (theme) { + const laytpAdmin = $(".laytp-admin"); + laytpAdmin.removeClass("banner-layout"); + if (theme === true || theme === "true") { + laytpAdmin.addClass("banner-layout"); + } } - this.menuSkin = function(theme) { - var laytpAdmin = $(".laytp-admin"); + this.collapse = function (param) { + if (param.menu.collapse) { + if ($(window).width() >= 768) { + collapse() + } + } + } + + this.menuSkin = function (theme) { + const laytpAdmin = $(".laytp-admin .layui-side"); + laytpAdmin.removeClass("light-theme"); + laytpAdmin.removeClass("dark-theme"); + laytpAdmin.addClass(theme); + } + + this.headerSkin = function (theme) { + const laytpAdmin = $(".laytp-admin .layui-header"); laytpAdmin.removeClass("light-theme"); laytpAdmin.removeClass("dark-theme"); laytpAdmin.addClass(theme); } - this.logout = function(callback) { + this.logout = function (callback) { logout = callback; } - this.message = function(callback) { + this.message = function (callback) { if (callback != null) { msgInstance.click(callback); - } else { - msgInstance.click(messageTip); } } - this.jump = function(id, title, url) { - if (config.tab.muiltTab) { + this.collapseSide = function () { + collapse() + } + + this.refreshThis = function () { + refresh() + } + + this.refresh = function (id) { + const iframe = $("iframe[id='" + id + "']"); + iframe.attr('src', iframe.attr('src')); + } + + this.addTab = function (id, title, url) { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { bodyTab.addTabOnly({ id: id, title: title, url: url, icon: null, close: true - }, 300); - } else { + }, 400); + } + } + + this.closeTab = function (id) { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + laytpTab.delTabByElem('content', id, function (currentId) { + sideMenu.selectItem(currentId); + }); + } + } + + this.closeCurrentTab = function () { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + laytpTab.delCurrentTabByElem('content', function (id) { + sideMenu.selectItem(id); + }); + } + } + + this.closeOtherTab = function () { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + laytpTab.delOtherTabByElem('content', function (id) { + sideMenu.selectItem(id); + }); + } + } + + this.closeAllTab = function () { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + laytpTab.delAllTabByElem('content', function (id) { + sideMenu.selectItem(id); + }); + } + } + + this.changeTabTitle = function (id, title) { + laytpTab.changeTabTitleById('content', id, title); + } + + this.changeIframe = function (id, title, url) { + if (isMuiltTab(config) !== "true" && isMuiltTab(config) !== true) { sideMenu.selectItem(id); - bodyFrame.changePage(url, title, true); + bodyFrame.changePage(url, true); } } - }; - var messageTip = function(id, title, context, form) { - layer.open({ - type: 1, - title: '消息', //标题 - area: ['390px', '330px'], //宽高 - shade: 0.4, //遮罩透明度 - content: "
来源 :   " + - form + "
标题 :   " + title + - "
内容 :   " + context + "
", //支持获取DOM元素 - btn: ['确认'], //按钮组 - scrollbar: false, //屏蔽浏览器滚动条 - yes: function(index) { //layer.msg('yes'); //点击确定回调 - layer.close(index); - showToast(); + this.jump = function (id, title, url) { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { + laytpAdmin.addTab(id, title, url) + } else { + laytpAdmin.changeIframe(id, title, url) } - }); + } + + this.fullScreen = function () { + if ($(".fullScreen").hasClass("layui-icon-screen-restore")) { + screenFun(2).then(function () { + $(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); + }); + } else { + screenFun(1).then(function () { + $(".fullScreen").eq(0).addClass("layui-icon-screen-restore"); + }); + } + } + }; + + function refresh() { + const refreshA = $(".refresh a"); + refreshA.removeClass("layui-icon-refresh-1"); + refreshA.addClass("layui-anim"); + refreshA.addClass("layui-anim-rotate"); + refreshA.addClass("layui-anim-loop"); + refreshA.addClass("layui-icon-loading"); + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) bodyTab.refresh(true); + else bodyFrame.refresh(true); + setTimeout(function() { + refreshA.addClass("layui-icon-refresh-1"); + refreshA.removeClass("layui-anim"); + refreshA.removeClass("layui-anim-rotate"); + refreshA.removeClass("layui-anim-loop"); + refreshA.removeClass("layui-icon-loading"); + }, 600) } - function collaspe() { - sideMenu.collaspe(); - var admin = $(".laytp-admin"); - var left = $(".layui-icon-spread-left") - var right = $(".layui-icon-shrink-right") + function collapse() { + sideMenu.collapse(); + const admin = $(".laytp-admin"); + const left = $(".layui-icon-spread-left"); + const right = $(".layui-icon-shrink-right"); if (admin.is(".laytp-mini")) { left.addClass("layui-icon-shrink-right") left.removeClass("layui-icon-spread-left") admin.removeClass("laytp-mini"); + sideMenu.isCollapse = false; } else { right.addClass("layui-icon-spread-left") right.removeClass("layui-icon-shrink-right") admin.addClass("laytp-mini"); + sideMenu.isCollapse = true; } } body.on("click", ".logout", function() { - // 回调 - var result = logout(); - - if (result) { - // 清空缓存 + if (logout() && bodyTab) { bodyTab.clear(); } }) - body.on("click", ".collaspe,.laytp-cover", function() { - collaspe(); + body.on("click", ".collapse,.laytp-cover", function() { + collapse(); }); + body.on("click", ".menuSearch", function () { + // 过滤菜单 + const filterHandle = function (filterData, val) { + if (!val) return []; + const filteredMenus = []; + filterData = $.extend(true, {}, filterData); + $.each(filterData, function (index, item) { + if (item.children && item.children.length) { + var children = filterHandle(item.children, val) + var obj = $.extend({}, item, {children: children}); + if (children && children.length) { + filteredMenus.push(obj); + } else if (item.title.indexOf(val) >= 0) { + item.children = []; // 父级匹配但子级不匹配,就去除子级 + filteredMenus.push($.extend({}, item)); + } + } else if (item.title.indexOf(val) >= 0) { + filteredMenus.push(item); + } + }) + return filteredMenus; + }; + + // 树转路径 + const tiledHandle = function (data) { + const tiledMenus = []; + const treeTiled = function (data, content) { + let path = ""; + const separator = " / "; + // 上级路径 + if (!content) content = ""; + $.each(data, function (index, item) { + if (item.children && item.children.length) { + path += content + item.title + separator; + const childPath = treeTiled(item.children, path); + path += childPath; + if (!childPath) path = ""; // 重置路径 + } else { + path += content + item.title + tiledMenus.push({path: path, info: item}); + path = ""; //重置路径 + } + }) + return path; + }; + treeTiled(data); + + return tiledMenus; + }; + + // 创建搜索列表 + const createList = function (data) { + let _listHtml = ''; + $.each(data, function (index, item) { + _listHtml += '
  • '; + _listHtml += ' ' + item.path + ''; + _listHtml += ' '; + _listHtml += '
  • ' + }) + return _listHtml; + }; + + const _html = [ + '' + ].join(''); + + layer.open({ + type: 1, + offset: "10%", + area: ['600px'], + title: false, + closeBtn: 0, + shadeClose: true, + anim: 0, + move: false, + content: _html, + success: function(layero,layeridx){ + const $layer = layero; + const $content = $(layero).children('.layui-layer-content'); + const $input = $(".menu-search-input-wrapper input"); + const $noData = $(".menu-search-no-data"); + const $list = $(".menu-search-list"); + const menuData = sideMenu.option.data; + + $layer.css("border-radius", "6px"); + $input.off("focus").focus(); + // 搜索菜单 + $input.off("input").on("input", debounce(function(){ + const keywords = $input.val().trim(); + if(keywords){ + $('.menu-search-no-data').html('暂无搜索结果'); + }else{ + $('.menu-search-no-data').html('请输入关键字进行搜索'); + } + const filteredMenus = filterHandle(menuData, keywords); + + if(filteredMenus.length){ + const tiledMenus = tiledHandle(filteredMenus); + const listHtml = createList(tiledMenus); + $noData.css("display", "none"); + $list.html("").append(listHtml).children(":first").addClass("this") + }else{ + $list.html(""); + $noData.css("display", "flex"); + } + const currentHeight = $(".menu-search-content").outerHeight(); + $layer.css("height", currentHeight); + $content.css("height", currentHeight); + }, 500) + ); + // 搜索列表点击事件 + $list.off("click").on("click", "li", function () { + const menuId = $(this).attr("smenu-id"); + const menuUrl = $(this).attr("smenu-url"); + const menuIcon = $(this).attr("smenu-icon"); + const menuTitle = $(this).attr("smenu-title"); + const menuType = $(this).attr("smenu-type"); + const openableWindow = menuType === "1" || menuType === 1; + + if(sideMenu.isCollapse){ + collapse(); + } + if (openableWindow) { + laytpAdmin.jump(menuId, menuTitle, menuUrl) + } else { + sideMenu.selectItem(menuId); + } + compatible(); + layer.close(layeridx); + }); + + $list.off('mouseenter').on("mouseenter", "li", function () { + $(".menu-search-list li.this").removeClass("this"); + $(this).addClass("this"); + }).off("mouseleave").on("mouseleave", "li", function(){ + $(this).removeClass("this"); + }); + + // 监听键盘事件 + // Enter:13 Spacebar:32 UpArrow:38 DownArrow:40 Esc:27 + $(document).off("keydown").keydown(function (e) { + const $menuSearchList = $(".menu-search-list li.this"); + if (e.keyCode === 13 || e.keyCode === 32) { + e.preventDefault(); + const menuId = $menuSearchList.attr("smenu-id"); + const menuUrl = $menuSearchList.attr("smenu-url"); + const menuTitle = $menuSearchList.attr("smenu-title"); + const menuType = $menuSearchList.attr("smenu-type"); + const openableWindow = menuType === "1" || menuType === 1; + if (sideMenu.isCollapse) { + collapse(); + } + if (openableWindow) { + laytpAdmin.jump(menuId, menuTitle, menuUrl) + } else { + sideMenu.selectItem(menuId); + } + compatible(); + layer.close(layeridx); + }else if(e.keyCode === 38){ + e.preventDefault(); + const prevEl = $menuSearchList.prev(); + $menuSearchList.removeClass("this"); + if(prevEl.length !== 0){ + prevEl.addClass("this"); + }else{ + $list.children().last().addClass("this"); + } + }else if(e.keyCode === 40){ + e.preventDefault(); + const nextEl = $menuSearchList.next(); + $menuSearchList.removeClass("this"); + if(nextEl.length !== 0){ + nextEl.addClass("this"); + }else{ + $list.children().first().addClass("this"); + } + }else if(e.keyCode === 27){ + e.preventDefault(); + layer.close(layeridx); + } + }) + } + }) + }); + + body.on("click", ".fullScreen", function() { if ($(this).hasClass("layui-icon-screen-restore")) { - screenFun(2).then(function() { + fullscreen.fullClose().then(function() { $(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); }); } else { - screenFun(1).then(function() { + fullscreen.fullScreen().then(function() { $(".fullScreen").eq(0).addClass("layui-icon-screen-restore"); }); } }); body.on("click", '[user-menu-id]', function() { - if (config.tab.muiltTab) { + if (isMuiltTab(config) === "true" || isMuiltTab(config) === true) { bodyTab.addTabOnly({ id: $(this).attr("user-menu-id"), title: $(this).attr("user-menu-title"), @@ -403,13 +731,13 @@ layui.define([ close: true }, 300); } else { - bodyFrame.changePage($(this).attr("user-menu-url"), "", true); + bodyFrame.changePage($(this).attr("user-menu-url"), true); } }); body.on("click", ".setting", function() { - var bgColorHtml = + let menuItem = '
  • ' + '' + '
    ' + @@ -417,7 +745,7 @@ layui.define([ '
    ' + '
  • '; - bgColorHtml += + menuItem += '
  • ' + '' + '
    ' + @@ -425,11 +753,57 @@ layui.define([ '
    ' + '
  • '; - var html = + const menuHtml = '
    \n' + - '
    整体风格
    \n' + + '
    菜单风格
    \n' + '
    \n' + - '
      \n' + bgColorHtml + '
    \n' + + '
      \n' + menuItem + '
    \n' + + '
    \n' + + '
    '; + + let headItem = + '
  • ' + + '' + + '
    ' + + '
    ' + + '
    ' + + '
  • '; + + headItem += + '
  • ' + + '' + + '
    ' + + '
    ' + + '
    ' + + '
  • '; + + const headHtml = + '
    \n' + + '
    顶部风格
    \n' + + '
    \n' + + '
      \n' + headItem + '
    \n' + + '
    \n' + + '
    '; + + let moreItem = + '
    菜单
    '; + + moreItem += + '
    视图
    '; + + moreItem += + '
    通栏
    '; + + moreItem += + '
    通色
    '; + + moreItem += + '
    页脚
    '; + + const moreHtml = '
    \n' + + '
    更多设置
    \n' + + '
    \n' + + '
    \n' + moreItem + '
    \n' + '
    \n' + '
    '; @@ -444,62 +818,125 @@ layui.define([ anim: -1, skin: 'layer-anim-right', move: false, - content: html + buildColorHtml() + buildLinkHtml() + bottomTool(), + content: menuHtml + headHtml + buildColorHtml() + moreHtml, success: function(layero, index) { - var color = localStorage.getItem("theme-color"); - var menu = localStorage.getItem("theme-menu"); + form.render(); + + const color = localStorage.getItem("theme-color"); + const menu = localStorage.getItem("theme-menu"); + const header = localStorage.getItem("theme-header"); if (color !== "null") { $(".select-color-item").removeClass("layui-icon").removeClass("layui-icon-ok"); $("*[color-id='" + color + "']").addClass("layui-icon").addClass("layui-icon-ok"); } + if (menu !== "null") { $("*[data-select-bgcolor]").removeClass("layui-this"); $("[data-select-bgcolor='" + menu + "']").addClass("layui-this"); } - $(document).off("click", '#layui-layer-shade' + index).on("click", '#layui-layer-shade' + index, function () { - // $('#layui-layer-shade' + index).click(function() { - var $layero = $('#layui-layer' + index); - $layero.animate({ - left: $layero.offset().left + $layero.width() - }, 200, function() { - layer.close(index); - }); - }); - $('#closeTheme').click(function() { - var $layero = $('#layui-layer' + index); + if (header !== "null") { + $("*[data-select-header]").removeClass("layui-this"); + $("[data-select-header='" + header + "']").addClass("layui-this"); + } + + $('#layui-layer-shade' + index).click(function() { + const $layero = $('#layui-layer' + index); $layero.animate({ left: $layero.offset().left + $layero.width() }, 200, function() { layer.close(index); }); }) + + form.on('switch(control)', function(data) { + localStorage.setItem("control", this.checked); + window.location.reload(); + }) + + form.on('switch(muilt-tab)', function(data) { + localStorage.setItem("muilt-tab", this.checked); + window.location.reload(); + }) + + form.on('switch(auto-head)', function(data) { + localStorage.setItem("auto-head", this.checked); + laytpTheme.changeTheme(window, this.checked); + }) + + form.on('switch(banner)', function(data) { + localStorage.setItem("theme-banner", this.checked); + laytpAdmin.bannerSkin(this.checked); + }) + + form.on('switch(footer)', function (data) { + localStorage.setItem("footer", this.checked); + laytpAdmin.footer(this.checked); + }) + + if (localStorage.getItem('theme-banner') === 'true') { + $('input[name="banner"]').attr('checked', 'checked') + } else { + $('input[name="banner"]').removeAttr('checked') + } + + if (localStorage.getItem('control') === 'true') { + $('input[name="control"]').attr('checked', 'checked') + } else { + $('input[name="control"]').removeAttr('checked') + } + + if (localStorage.getItem('muilt-tab') === 'true') { + $('input[name="muilt-tab"]').attr('checked', 'checked') + } else { + $('input[name="muilt-tab"]').removeAttr('checked') + } + + if (localStorage.getItem('auto-head') === 'true') { + $('input[name="auto-head"]').attr('checked', 'checked') + } else { + $('input[name="auto-head"]').removeAttr('checked') + } + + if (localStorage.getItem('footer') === 'true') { + $('input[name="footer"]').attr('checked', 'checked') + } else { + $('input[name="footer"]').removeAttr('checked') + } + + form.render('checkbox'); } }); }); - function bottomTool() { - return "" - } - body.on('click', '[data-select-bgcolor]', function() { - var theme = $(this).attr('data-select-bgcolor'); + const theme = $(this).attr('data-select-bgcolor'); $('[data-select-bgcolor]').removeClass("layui-this"); $(this).addClass("layui-this"); localStorage.setItem("theme-menu", theme); laytpAdmin.menuSkin(theme); }); + body.on('click', '[data-select-header]', function() { + const theme = $(this).attr('data-select-header'); + $('[data-select-header]').removeClass("layui-this"); + $(this).addClass("layui-this"); + localStorage.setItem("theme-header", theme); + laytpAdmin.headerSkin(theme); + }); + body.on('click', '.select-color-item', function() { $(".select-color-item").removeClass("layui-icon").removeClass("layui-icon-ok"); $(this).addClass("layui-icon").addClass("layui-icon-ok"); - var colorId = $(".select-color-item.layui-icon-ok").attr("color-id"); - var currentColor = getColorById(colorId); + const colorId = $(".select-color-item.layui-icon-ok").attr("color-id"); + const currentColor = getColorById(colorId); localStorage.setItem("theme-color", currentColor.id); - localStorage.setItem("theme-color-context", currentColor.color); - laytpTheme.changeTheme(window, config.other.autoHead); + localStorage.setItem("theme-color-color", currentColor.color); + localStorage.setItem("theme-color-second", currentColor.second); + localStorage.setItem("theme-color-table_checked", currentColor.tableChecked); + laytpTheme.changeTheme(window, isAutoHead(config)); }); function applyConfig(param) { @@ -515,8 +952,8 @@ layui.define([ } function getColorById(id) { - var color; - var flag = false; + let color; + let flag = false; $.each(config.colors, function(i, value) { if (value.id === id) { color = value; @@ -533,18 +970,8 @@ layui.define([ return color; } - function buildLinkHtml() { - var links = ""; - $.each(config.links, function(i, value) { - links += '' + - ' ' + value.title + - '' - }) - return '
    ' + links + '
    '; - } - function buildColorHtml() { - var colors = ""; + let colors = ""; $.each(config.colors, function(i, value) { colors += ""; @@ -555,55 +982,69 @@ layui.define([ function compatible() { if ($(window).width() <= 768) { - collaspe() + collapse() } } - function screenFun(num) { - num = num || 1; - num = num * 1; - var docElm = document.documentElement; - switch (num) { - case 1: - if (docElm.requestFullscreen) { - docElm.requestFullscreen(); - } else if (docElm.mozRequestFullScreen) { - docElm.mozRequestFullScreen(); - } else if (docElm.webkitRequestFullScreen) { - docElm.webkitRequestFullScreen(); - } else if (docElm.msRequestFullscreen) { - docElm.msRequestFullscreen(); - } - break; - case 2: - if (document.exitFullscreen) { - document.exitFullscreen(); - } else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } else if (document.webkitCancelFullScreen) { - document.webkitCancelFullScreen(); - } else if (document.msExitFullscreen) { - document.msExitFullscreen(); - } - break; + function isControl(option) { + if (option.theme.allowCustom) { + if (localStorage.getItem("control") != null) { + return localStorage.getItem("control") + } else { + return option.menu.control + } + } else { + return option.menu.control } - return new Promise(function(res, rej) { - res("返回值"); - }); } - function isFullscreen() { - return document.fullscreenElement || - document.msFullscreenElement || - document.mozFullScreenElement || - document.webkitFullscreenElement || false; + function isAutoHead(option) { + if (option.theme.allowCustom) { + if (localStorage.getItem("auto-head") != null) { + return localStorage.getItem("auto-head"); + } else { + return option.other.autoHead; + } + } else { + return option.other.autoHead; + } + } + + function isMuiltTab(option) { + if (option.theme.allowCustom) { + if (localStorage.getItem("muilt-tab") != null) { + return localStorage.getItem("muilt-tab") + } else { + return option.tab.enable + } + } else { + return option.tab.enable + } } window.onresize = function() { - if (!isFullscreen()) { + if (!fullscreen.isFullscreen()) { $(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); } } + $(window).on('resize', debounce(function () { + if (sideMenu && !sideMenu.isCollapse && $(window).width() <= 768) { + collapse(); + } + },50)); + + function debounce(fn, awaitTime) { + let timerID = null; + return function () { + const arg = arguments[0]; + if (timerID) { + clearTimeout(timerID) + } + timerID = setTimeout(function () { + fn(arg) + }, awaitTime) + } + } exports('admin', laytpAdmin); }) diff --git a/public/static/component/laytp/module/apidoc.js b/public/static/component/laytp/module/apidoc.js deleted file mode 100644 index 2bf4343c3e915928943591caf79f2e40e3cea749..0000000000000000000000000000000000000000 --- a/public/static/component/laytp/module/apidoc.js +++ /dev/null @@ -1,519 +0,0 @@ -layui.define([ - 'message', - 'table', - 'jquery', - 'element', - 'yaml', - 'form', - 'laytpTab', - 'apimenu', - 'frame', - 'theme', - 'convert' - ], - function(exports) { - "use strict"; - - var $ = layui.jquery, - form = layui.form, - element = layui.element, - yaml = layui.yaml, - laytpTab = layui.laytpTab, - convert = layui.convert, - laytpApiMenu = layui.apimenu, - laytpFrame = layui.frame, - laytpTheme = layui.theme, - message = layui.message; - - var bodyFrame; - var sideMenu; - var bodyTab; - var config; - var logout = function() {}; - var msgInstance; - - var body = layui.$('body'); - - var laytpApidoc = new function() { - - // 默认配置 - var configType = 'yml'; - var configPath = 'api.config.yml'; - - this.setConfigPath = function(path) { - configPath = path; - }; - - this.setConfigType = function(type) { - configType = type; - }; - - this.setAvatar = function(url, username) { - var image = new Image(); - image.src = url || "/static/admin/images/avatar.jpg"; - image.onload = function() { - layui.$(".layui-nav-img").attr("src", convert.imageToBase64(image)); - }; - layui.$(".layui-nav-img").parent().append(username); - }; - - this.render = function(initConfig) { - if (initConfig !== undefined) { - applyConfig(initConfig); - } else { - applyConfig(laytpApidoc.readConfig()); - } - }; - - this.readConfig = function() { - if (configType === "yml") { - return yaml.load(configPath); - } else { - var data; - $.ajax({ - url: configPath, - type: 'get', - dataType: 'json', - async: false, - success: function(result) { - data = result; - } - }); - return data; - } - }; - - this.messageRender = function(option) { - var option = { - elem: '.message', - url: option.header.message, - height: '250px' - }; - msgInstance = message.render(option); - }; - - this.logoRender = function(param) { - layui.$(".layui-logo .logo").attr("src", param.logo.image); - layui.$(".layui-logo .title").html(param.logo.title); - }; - - this.menuRender = function(param) { - sideMenu = laytpApiMenu.render({ - elem: 'sideMenu', - async: param.menu.async !== undefined ? param.menu.async : true, - theme: "dark-theme", - height: '100%', - method: param.menu.method, - control: param.menu.control ? 'control' : false, // control - defaultMenu: 0, - accordion: param.menu.accordion, - url: param.menu.data, - data: param.menu.data, //async为false时,传入菜单数组 - parseData: function(res){ - if(param.isSearch){ - var result = { - "id" : -1, - "is_menu" : 1, - "is_show" : 1, - "title" : "搜索结果", - "type" : 0, - "children" : res, - "href" : "", - "icon" : "" - }; - var resArr = []; - resArr.push(result); - return resArr; - }else{ - window.menuData = laytpApidoc.parseData(res.data); - return window.menuData; - } - }, - change: function() { - compatible(); - }, - done: function() { - let firstMenuObj = layui.$("#sideMenu a[menu-id='" + param.menu.select + "']").parent(); - let menuType = $(firstMenuObj.html()).attr("doc-type"); - let id = $(firstMenuObj.html()).attr("menu-id"); - $('.api-page-tab-content').hide(); - $('#' + menuType + '_' + id).show(); - sideMenu.selectItem(param.menu.select); - } - }); - }; - - this.parseData = function(data){ - $.each(data, function(i, item) { - var tempItem = item; - // tempItem.id = item.id; - // tempItem.href = item.href; - // tempItem.icon = item.icon; - tempItem.type = 0; - // tempItem.title = item.name; - if(typeof item.children != null && typeof item.children !== "undefined" && item.children.length > 0){ - tempItem.children = laytpApidoc.parseData(item.children); - }else{ - tempItem.type = 1; - } - data[i] = tempItem; - }); - return data; - }; - - this.bodyRender = function(param) { - if (param.tab.muiltTab) { - sideMenu.click(function(dom, data) { - let menuType = data.docType; - let id = data.menuId; - $('.api-page-tab-content').hide(); - $('#' + menuType + '_' + id).show(); - compatible(); - }); - } else { - sideMenu.click(function(dom, data) { - let menuType = data.docType; - let id = data.menuId; - $('.api-page-tab-content').hide(); - $('#' + menuType + '_' + id).show(); - compatible(); - }); - } - }; - - this.keepLoad = function(param) { - compatible(); - setTimeout(function() { - layui.$(".loader-main").fadeOut(200); - }, param.other.keepLoad) - }; - - this.themeRender = function(option) { - if (option.theme.allowCustom === false) { - layui.$(".setting").remove(); - } - var colorId = localStorage.getItem("theme-color"); - var currentColor = getColorById(colorId); - localStorage.setItem("theme-color", currentColor.id); - localStorage.setItem("theme-color-context", currentColor.color); - laytpTheme.changeTheme(window, option.other.autoHead); - var menu = localStorage.getItem("theme-menu"); - if (menu == null) { - menu = option.theme.defaultMenu; - } else { - if (option.theme.allowCustom === false) { - menu = option.theme.defaultMenu; - } - } - localStorage.setItem("theme-menu", menu); - this.menuSkin(menu); - } - - this.menuSkin = function(theme) { - var laytpApidoc = layui.$(".laytp-admin"); - laytpApidoc.removeClass("light-theme"); - laytpApidoc.removeClass("dark-theme"); - laytpApidoc.addClass(theme); - } - - this.logout = function(callback) { - logout = callback; - } - - this.message = function(callback) { - if (callback != null) { - msgInstance.click(callback); - } else { - msgInstance.click(messageTip); - } - } - - this.jump = function(id, title, url) { - if (config.tab.muiltTab) { - bodyTab.addTabOnly({ - id: id, - title: title, - url: url, - icon: null, - close: true - }, 300); - } else { - sideMenu.selectItem(id); - bodyFrame.changePage(url, title, true); - } - } - }; - - var messageTip = function(id, title, context, form) { - layer.open({ - type: 1, - title: '消息', //标题 - area: ['390px', '330px'], //宽高 - shade: 0.4, //遮罩透明度 - content: "
    来源 :   " + - form + "
    标题 :   " + title + - "
    内容 :   " + context + "
    ", //支持获取DOM元素 - btn: ['确认'], //按钮组 - scrollbar: false, //屏蔽浏览器滚动条 - yes: function(index) { //layer.msg('yes'); //点击确定回调 - layer.close(index); - showToast(); - } - }); - } - - function collaspe() { - sideMenu.collaspe(); - var admin = layui.$(".laytp-admin"); - var left = layui.$(".layui-icon-spread-left") - var right = layui.$(".layui-icon-shrink-right") - if (admin.is(".laytp-mini")) { - left.addClass("layui-icon-shrink-right") - left.removeClass("layui-icon-spread-left") - admin.removeClass("laytp-mini"); - } else { - right.addClass("layui-icon-spread-left") - right.removeClass("layui-icon-shrink-right") - admin.addClass("laytp-mini"); - } - } - - body.on("click", ".logout", function() { - // 回调 - var result = logout(); - - if (result) { - // 清空缓存 - bodyTab.clear(); - } - }) - - body.on("click", ".collaspe,.laytp-cover", function() { - collaspe(); - }); - - body.on("click", ".fullScreen", function() { - if (layui.$(this).hasClass("layui-icon-screen-restore")) { - screenFun(2).then(function() { - layui.$(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); - }); - } else { - screenFun(1).then(function() { - layui.$(".fullScreen").eq(0).addClass("layui-icon-screen-restore"); - }); - } - }); - - body.on("click", '[user-menu-id]', function() { - if (config.tab.muiltTab) { - bodyTab.addTabOnly({ - id: layui.$(this).attr("user-menu-id"), - title: layui.$(this).attr("user-menu-title"), - url: layui.$(this).attr("user-menu-url"), - icon: "", - close: true - }, 300); - } else { - bodyFrame.changePage(layui.$(this).attr("user-menu-url"), "", true); - } - }); - - body.on("click", ".setting", function() { - - var bgColorHtml = - '
  • ' + - '' + - '
    ' + - '
    ' + - '
    ' + - '
  • '; - - bgColorHtml += - '
  • ' + - '' + - '
    ' + - '
    ' + - '
    ' + - '
  • '; - - var html = - '
    \n' + - '
    整体风格
    \n' + - '
    \n' + - '
      \n' + bgColorHtml + '
    \n' + - '
    \n' + - '
    '; - - layer.open({ - type: 1, - offset: 'r', - area: ['320px', '100%'], - title: false, - shade: 0.1, - closeBtn: 0, - shadeClose: false, - anim: -1, - skin: 'layer-anim-right', - move: false, - content: html + buildColorHtml() + buildLinkHtml() + bottomTool(), - success: function(layero, index) { - - var color = localStorage.getItem("theme-color"); - var menu = localStorage.getItem("theme-menu"); - - if (color !== "null") { - layui.$(".select-color-item").removeClass("layui-icon").removeClass("layui-icon-ok"); - layui.$("*[color-id='" + color + "']").addClass("layui-icon").addClass("layui-icon-ok"); - } - if (menu !== "null") { - layui.$("*[data-select-bgcolor]").removeClass("layui-this"); - layui.$("[data-select-bgcolor='" + menu + "']").addClass("layui-this"); - } - layui.$('#layui-layer-shade' + index).click(function() { - var $layero = layui.$('#layui-layer' + index); - $layero.animate({ - left: $layero.offset().left + $layero.width() - }, 200, function() { - layer.close(index); - }); - }) - - layui.$('#closeTheme').click(function() { - var $layero = layui.$('#layui-layer' + index); - $layero.animate({ - left: $layero.offset().left + $layero.width() - }, 200, function() { - layer.close(index); - }); - }) - } - }); - }); - - function bottomTool() { - return "" - } - - body.on('click', '[data-select-bgcolor]', function() { - var theme = layui.$(this).attr('data-select-bgcolor'); - layui.$('[data-select-bgcolor]').removeClass("layui-this"); - layui.$(this).addClass("layui-this"); - localStorage.setItem("theme-menu", theme); - laytpApidoc.menuSkin(theme); - }); - - body.on('click', '.select-color-item', function() { - layui.$(".select-color-item").removeClass("layui-icon").removeClass("layui-icon-ok"); - layui.$(this).addClass("layui-icon").addClass("layui-icon-ok"); - var colorId = layui.$(".select-color-item.layui-icon-ok").attr("color-id"); - var currentColor = getColorById(colorId); - localStorage.setItem("theme-color", currentColor.id); - localStorage.setItem("theme-color-context", currentColor.color); - laytpTheme.changeTheme(window, config.other.autoHead); - }); - - function applyConfig(param) { - config = param; - laytpApidoc.logoRender(param); - laytpApidoc.menuRender(param); - laytpApidoc.bodyRender(param); - laytpApidoc.themeRender(param); - laytpApidoc.keepLoad(param); - if (param.header.message !== false) { - laytpApidoc.messageRender(param); - } - } - - function getColorById(id) { - var color; - var flag = false; - $.each(config.colors, function(i, value) { - if (value.id === id) { - color = value; - flag = true; - } - }) - if (flag === false || config.theme.allowCustom === false) { - $.each(config.colors, function(i, value) { - if (value.id === config.theme.defaultColor) { - color = value; - } - }) - } - return color; - } - - function buildLinkHtml() { - var links = ""; - $.each(config.links, function(i, value) { - links += '' + - ' ' + value.title + - '' - }) - return '
    ' + links + '
    '; - } - - function buildColorHtml() { - var colors = ""; - $.each(config.colors, function(i, value) { - colors += ""; - }) - return "
    主题配色
    " + - colors + "
    " - } - - function compatible() { - if (layui.$(window).width() <= 768) { - collaspe() - } - } - - function screenFun(num) { - num = num || 1; - num = num * 1; - var docElm = document.documentElement; - switch (num) { - case 1: - if (docElm.requestFullscreen) { - docElm.requestFullscreen(); - } else if (docElm.mozRequestFullScreen) { - docElm.mozRequestFullScreen(); - } else if (docElm.webkitRequestFullScreen) { - docElm.webkitRequestFullScreen(); - } else if (docElm.msRequestFullscreen) { - docElm.msRequestFullscreen(); - } - break; - case 2: - if (document.exitFullscreen) { - document.exitFullscreen(); - } else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } else if (document.webkitCancelFullScreen) { - document.webkitCancelFullScreen(); - } else if (document.msExitFullscreen) { - document.msExitFullscreen(); - } - break; - } - return new Promise(function(res, rej) { - res("返回值"); - }); - } - - function isFullscreen() { - return document.fullscreenElement || - document.msFullscreenElement || - document.mozFullScreenElement || - document.webkitFullscreenElement || false; - } - - window.onresize = function() { - if (!isFullscreen()) { - layui.$(".fullScreen").eq(0).removeClass("layui-icon-screen-restore"); - } - } - - exports('apidoc', laytpApidoc); - }) diff --git a/public/static/component/laytp/module/apimenu.js b/public/static/component/laytp/module/apimenu.js deleted file mode 100644 index b15e201f0c71190dce3855cf68523b21d0adc11a..0000000000000000000000000000000000000000 --- a/public/static/component/laytp/module/apimenu.js +++ /dev/null @@ -1,491 +0,0 @@ -layui.define(['table', 'jquery', 'element'], function(exports) { - "use strict"; - - var MOD_NAME = 'apimenu', - $ = layui.jquery, - element = layui.element; - - var laytpApiMenu = function(opt) { - this.option = opt; - }; - - // 供外部调用的,渲染菜单方法 - laytpApiMenu.prototype.render = function(opt) { - var option = { - elem: opt.elem, - async: opt.async, - parseData: opt.parseData, - url: opt.url, - method: opt.method ? opt.method : "GET", - defaultOpen: opt.defaultOpen, - defaultSelect: opt.defaultSelect, - control: opt.control, - defaultMenu: opt.defaultMenu, - accordion: opt.accordion, - height: opt.height, - theme: opt.theme, - data: opt.data ? opt.data : [], - change: opt.change ? opt.change : function() {}, - done: opt.done ? opt.done : function() {} - }; - if (option.async) { - if (option.method === "GET") { - getData(option.url).then(function(data) { - option.data = data; - renderMenu(option); - }); - } else { - postData(option.url).then(function(data) { - option.data = data; - renderMenu(option); - }); - } - } else { - //renderMenu中需要调用done事件,done事件中需要menu对象,但是此时还未返回menu对象,做个延时提前返回对象 - window.setTimeout(function() { renderMenu(option);}, 500); - } - - // 处理高度 - layui.$("#"+opt.elem).height(option.height); - return new laytpApiMenu(opt); - }; - - // 任意左侧菜单绑定点击事件 - laytpApiMenu.prototype.click = function(clickEvent) { - var _this = this; - layui.$(document).off("click", "#" + _this.option.elem + " .site-demo-active").on("click", "#" + _this.option.elem + " .site-demo-active", function() { - // layui.$("body").on("click", "#" + _this.option.elem + " .site-demo-active", function() { - var dom = layui.$(this); - var data = { - menuId: dom.attr("menu-id"), - docType: dom.attr("doc-type"), - menuTitle: dom.attr("menu-title"), - }; - var doms = hash(dom); - if (doms != null) { - if (doms.text() != '') { - data['menuPath'] = doms.find("span").text() + " / " + data['menuPath']; - } - } - if (doms != null) { - var domss = hash(doms); - if(domss!=null){ - if (domss.text() != '') { - data['menuPath'] = domss.find("span").text() + " / " + data['menuPath']; - }} - } - if (domss != null) { - - var domsss = hash(domss); - if(domsss!=null){ - if (domsss.text() != '') { - data['menuPath'] = domsss.find("span").text() + " / " + data['menuPath']; - }} - } - if (layui.$("#" + _this.option.elem).is(".laytp-nav-mini")) { - if (_this.option.accordion) { - activeMenus = layui.$(this).parent().parent().parent().children("a"); - } else { - activeMenus.push(layui.$(this).parent().parent().parent().children("a")); - } - } - clickEvent(dom, data); - }) - }; - - function hash(dom) { - var d = dom.parent().parent().prev(); - if (d.prop("tagName") === "UL") { - return null; - } - return d; - } - - // 样式选择 - laytpApiMenu.prototype.skin = function(skin) { - var menu = layui.$(".laytp-nav-tree[lay-filter='" + this.option.elem + "']").parent(); - menu.removeClass("dark-theme"); - menu.removeClass("light-theme"); - menu.addClass(skin); - }; - - // 选择没有子级的菜单节点 - laytpApiMenu.prototype.selectItem = function(laytpId) { - if (this.option.control != false) { - layui.$("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents(".layui-side-scroll ").find("ul").css({ - display: "none" - }); - layui.$("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents(".layui-side-scroll ").find(".layui-this").removeClass( - "layui-this"); - layui.$("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents("ul").css({ - display: "block" - }); - var controlId = layui.$("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents("ul").attr("menu-id"); - if (controlId != undefined) { - layui.$("#" + this.option.control).find(".layui-this").removeClass("layui-this"); - layui.$("#" + this.option.control).find("[menu-id='" + controlId + "']").addClass("layui-this"); - } - } - if (this.option.accordion === true) { - layui.$("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents(".laytp-nav-tree").find(".layui-nav-itemed").removeClass( - "layui-nav-itemed"); - } - layui.$("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents(".laytp-nav-tree").find(".layui-this").removeClass( - "layui-this"); - if (!layui.$("#" + this.option.elem).is(".laytp-nav-mini")) { - layui.$("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents(".layui-nav-item").addClass("layui-nav-itemed"); - layui.$("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents("dd").addClass("layui-nav-itemed"); - } - layui.$("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parent().addClass("layui-this"); - } - - var activeMenus; - // 手机模式下,右下角按钮点击展开收缩左侧菜单事件 - laytpApiMenu.prototype.collaspe = function(time) { - var elem = this.option.elem; - var config = this.option; - if (layui.$("#" + this.option.elem).is(".laytp-nav-mini")) { - $.each(activeMenus, function(i, item) { - layui.$("#" + elem + " a[menu-id='" + layui.$(this).attr("menu-id") + "']").parent().addClass("layui-nav-itemed"); - }); - layui.$("#" + this.option.elem).removeClass("laytp-nav-mini"); - layui.$("#" + this.option.elem).animate({ - width: "220px" - }, 150); - isHoverMenu(false, config); - } else { - activeMenus = layui.$("#" + this.option.elem).find(".layui-nav-itemed>a"); - layui.$("#" + this.option.elem).find(".layui-nav-itemed").removeClass("layui-nav-itemed"); - layui.$("#" + this.option.elem).addClass("laytp-nav-mini"); - layui.$("#" + this.option.elem).animate({ - width: "60px" - }, 400); - isHoverMenu(true, config); - } - }; - - function getData(url) { - var defer = $.Deferred(); - var contact = (url.indexOf('?') > -1) ? "&" : "?"; - $.get(url + contact + "fresh=" + Math.random(), function(result) { - defer.resolve(result) - }); - return defer.promise(); - } - - function postData(url) { - var defer = $.Deferred(); - $.post(url + "?fresh=" + Math.random(), function(result) { - defer.resolve(result) - }); - return defer.promise(); - } - - // 内部使用,渲染菜单函数 - function renderMenu(option) { - if (option.parseData != false) { - option.data = option.parseData(option.data); - } - if (option.data.length > 0) { - if (option.control != false) { - createMenuAndControl(option); - } else { - createMenu(option); - } - } - element.init(); - downShow(option); - option.done(); - } - - // 创建菜单 - function createMenu(option) { - var menuHtml = '
      '; - $.each(option.data, function(i, item) { - var content = '
    • '; - if (i === option.defaultOpen) { - content = '
    • '; - } - var href = "javascript:void(0);"; - var className = "site-demo-active"; - if (item.openType === "_blank" && item.type === 1) { - className = ""; - } - if (item.type === 0) { - // 创 建 目 录 结 构 - content += '' + - '' + item.title + ''; - } else if (item.type === 1) { - content += '' + item.title + ''; - } - // 调 用 递 归 方 法 加 载 无 限 层 级 的 子 菜 单 - content += loadchild(item); - // 结 束 一 个 根 菜 单 项 - content += '
    • '; - menuHtml += content; - }); - // 结 束 菜 单 结 构 的 初 始 化 - menuHtml += "
    "; - // 将 菜 单 拼 接 到 初 始 化 容 器 中 - layui.$("#" + option.elem).html(menuHtml); - } - - // 创建多系统菜单, 包括渲染静态html和绑定顶部菜单点击事件 - function createMenuAndControl(option) { - var control = '
    '; - $("#"+option.elem).html("
    "+header+iframe+loading+"
    "); + function renderContentLoading (iframeEl, loadingEl, isLoading) { + if (isLoading) { + loadingEl.css({ + display: 'block' + }); + $(iframeEl).on('load', function() { + loadingEl.fadeOut(1000); + }) + } } - exports(MOD_NAME,new laytpFrame()); -}) \ No newline at end of file + + exports('frame', new frame()); +}); diff --git a/public/static/component/laytp/module/fullscreen.js b/public/static/component/laytp/module/fullscreen.js new file mode 100644 index 0000000000000000000000000000000000000000..0defe5f3c960909d14e1f4b6568946d3e2e2ce76 --- /dev/null +++ b/public/static/component/laytp/module/fullscreen.js @@ -0,0 +1,54 @@ +layui.define(['message', 'table', 'jquery', 'element', 'yaml', 'form', 'laytpTab', 'laytpMenu', 'frame', 'theme', 'convert'], + function(exports) { + "use strict"; + var $ = layui.jquery; + var defer = $.Deferred(); + var fullScreen = new function() { + this.func = null; + this.onFullchange = function(func){ + this.func = func; + var evts = ['fullscreenchange','webkitfullscreenchange','mozfullscreenchange','MSFullscreenChange']; + for(var i=0;i'; + } else { + oriIcon += ORIGINAL_ELEM_VALUE; + } + oriIcon += '
    '; + + var selectHtml = + '
    ' + + '
    ' + + '
    ' + + '' + + oriIcon + + '' + + '' + + '
    ' + + '
    ' + + '
    ' + + '123' + + '
    '; + $(elem).after(selectHtml); + return a; + }, + /** + * 展开/折叠下拉框 + */ + toggleSelect: function() { + var item = '#' + TITLE_ID + ' .layui-iconpicker-item,#' + TITLE_ID + + ' .layui-iconpicker-item .layui-edge'; + a.event('click', item, function(e) { + var $icon = $('#' + ICON_BODY); + if ($icon.hasClass(selected)) { + $icon.removeClass(selected).addClass(unselect); + } else { + // 隐藏其他picker + $('.layui-form-select').removeClass(selected); + // 显示当前picker + $icon.addClass(selected).removeClass(unselect); + } + e.stopPropagation(); + }); + return a; + }, + /** + * 绘制主体部分 + */ + createBody: function() { + // 获取数据 + var searchHtml = ''; + + if (search) { + searchHtml = ''; + } + + // 组合dom + var bodyHtml = '
    ' + + searchHtml + + '
    ' + + '
    '; + $('#' + ICON_BODY).find('.layui-anim').eq(0).html(bodyHtml); + a.search().createList().check().page(); + + return a; + }, + /** + * 绘制图标列表 + * @param text 模糊查询关键字 + * @returns {string} + */ + createList: function(text) { + var d = data, + l = d.length, + pageHtml = '', + listHtml = $( + '
    ') //'
    '; + + // 计算分页数据 + var _limit = limit, // 每页显示数量 + _pages = l % _limit === 0 ? l / _limit : parseInt(l / _limit + 1), // 总计多少页 + _id = PAGE_ID; + + // 图标列表 + var icons = []; + + for (var i = 0; i < l; i++) { + var obj = d[i]; + + // 判断是否模糊查询 + if (text && obj.indexOf(text) === -1) { + continue; + } + + // 是否自定义格子宽度 + var style = ''; + if (cellWidth !== null) { + style += ' style="width:' + cellWidth + '"'; + } + + // 每个图标dom + var icon = '
    '; + if (isFontClass || isCustom) + { + icon += ''; + }else{ + icon += '' + obj.replace('amp;', '') + ''; + } + icon += '
    '; + + icons.push(icon); + } + + // 查询出图标后再分页 + l = icons.length; + _pages = l % _limit === 0 ? l / _limit : parseInt(l / _limit + 1); + for (var i = 0; i < _pages; i++) { + // 按limit分块 + var lm = $( + '
    '); + + for (var j = i * _limit; j < (i + 1) * _limit && j < l; j++) { + lm.append(icons[j]); + } + + listHtml.append(lm); + } + + // 无数据 + if (l === 0) { + listHtml.append('

    无数据

    '); + } + + // 判断是否分页 + if (page) { + $('#' + PICKER_BODY).addClass('layui-iconpicker-body-page'); + pageHtml = '
    ' + + '
    ' + + '1/' + + '' + _pages + '' + + ' (' + l + ')' + + '
    ' + + '
    ' + + ' ' + + ' ' + + '
    ' + + '
    '; + } + + + $('#' + ICON_BODY).find('.layui-anim').find('.' + LIST_BOX).html('').append( + listHtml).append(pageHtml); + return a; + }, + // 阻止Layui的一些默认事件 + preventEvent: function() { + var item = '#' + ICON_BODY + ' .layui-anim'; + a.event('click', item, function(e) { + e.stopPropagation(); + }); + return a; + }, + // 分页 + page: function() { + var icon = '#' + PAGE_ID + ' .layui-iconpicker-page-operate .layui-icon'; + + $(icon).unbind('click'); + a.event('click', icon, function(e) { + var elem = e.currentTarget, + total = parseInt($('#' + PAGE_ID + '-pages').html()), + isPrev = $(elem).attr('prev') !== undefined, + // 按钮上标的页码 + index = parseInt($(elem).attr('data-index')), + $cur = $('#' + PAGE_ID + '-current'), + // 点击时正在显示的页码 + current = parseInt($cur.html()); + + // 分页数据 + if (isPrev && current > 1) { + current = current - 1; + $(icon + '[prev]').attr('data-index', current); + } else if (!isPrev && current < total) { + current = current + 1; + $(icon + '[next]').attr('data-index', current); + } + $cur.html(current); + + // 图标数据 + $('#' + ICON_BODY + ' .layui-iconpicker-icon-limit').hide(); + $('#layui-iconpicker-icon-limit-' + tmp + current).show(); + e.stopPropagation(); + }); + return a; + }, + /** + * 搜索 + */ + search: function() { + var item = '#' + PICKER_BODY + ' .layui-iconpicker-search .layui-input'; + a.event('input propertychange', item, function(e) { + var elem = e.target, + t = $(elem).val(); + a.createList(t); + }); + return a; + }, + /** + * 点击选中图标 + */ + check: function() { + var item = '#' + PICKER_BODY + ' .layui-iconpicker-icon-item'; + a.event('click', item, function(e) { + var el = $(e.currentTarget).find('.' + ICON_prefix), + icon = ''; + console.log( el.attr('class')); + if (isFontClass || isCustom) { + var clsArr = el.attr('class').split(/[\s\n]/), + cls = clsArr[1], + icon = cls; + $('#' + TITLE_ID).find('.layui-iconpicker-item .' + ICON_prefix).html( + '').attr('class', clsArr.join(' ')); + } else { + var cls = el.html(), + icon = cls; + $('#' + TITLE_ID).find('.layui-iconpicker-item .layui-icon').html( + icon); + } + + $('#' + ICON_BODY).removeClass(selected).addClass(unselect); + $(elem).val(icon).attr('value', icon); + // 回调 + if (click) { + click({ + icon: icon + }); + } + + }); + return a; + }, + // 监听原始input数值改变 + inputListen: function() { + var el = $(elem); + a.event('change', elem, function() { + var value = el.val(); + }) + // el.change(function(){ + + // }); + return a; + }, + event: function(evt, el, fn) { + $(BODY).on(evt, el, fn); + } + }; + var common = { + /** + * 加载样式表 + */ + loadCss: function() { + var css = + '.layui-iconpicker {max-width: 280px;}.layui-iconpicker .layui-anim{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box;}.layui-iconpicker-item{border:1px solid #e6e6e6;width:90px;height:38px;border-radius:4px;cursor:pointer;position:relative;}.layui-iconpicker-icon{border-right:1px solid #e6e6e6;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:60px;height:100%;float:left;text-align:center;background:#fff;transition:all .3s;}.layui-iconpicker-icon i{line-height:38px;font-size:18px;}.layui-iconpicker-item > .layui-edge{left:70px;}.layui-iconpicker-item:hover{border-color:#D2D2D2!important;}.layui-iconpicker-item:hover .layui-iconpicker-icon{border-color:#D2D2D2!important;}.layui-iconpicker.layui-form-selected .layui-anim{display:block;}.layui-iconpicker-body{padding:6px;}.layui-iconpicker .layui-iconpicker-list{background-color:#fff;border:1px solid #ccc;border-radius:4px;}.layui-iconpicker .layui-iconpicker-icon-item{display:inline-block;width:21.1%;line-height:36px;text-align:center;cursor:pointer;vertical-align:top;height:36px;margin:4px;border:1px solid #ddd;border-radius:2px;transition:300ms;}.layui-iconpicker .layui-iconpicker-icon-item i.layui-icon{font-size:17px;}.layui-iconpicker .layui-iconpicker-icon-item:hover{background-color:#eee;border-color:#ccc;-webkit-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;-moz-box-shadow:0 0 2px #aaa,0 0 2px #fff inset;box-shadow:0 0 2px #aaa,0 0 2px #fff inset;text-shadow:0 0 1px #fff;}.layui-iconpicker-search{position:relative;margin:0 0 6px 0;border:1px solid #e6e6e6;border-radius:2px;transition:300ms;}.layui-iconpicker-search:hover{border-color:#D2D2D2!important;}.layui-iconpicker-search .layui-input{cursor:text;display:inline-block;width:86%;border:none;padding-right:0;margin-top:1px;}.layui-iconpicker-search .layui-icon{position:absolute;top:11px;right:4%;}.layui-iconpicker-tips{text-align:center;padding:8px 0;cursor:not-allowed;}.layui-iconpicker-page{margin-top:6px;margin-bottom:-6px;font-size:12px;padding:0 2px;}.layui-iconpicker-page-count{display:inline-block;}.layui-iconpicker-page-operate{display:inline-block;float:right;cursor:default;}.layui-iconpicker-page-operate .layui-icon{font-size:12px;cursor:pointer;}.layui-iconpicker-body-page .layui-iconpicker-icon-limit{display:none;}.layui-iconpicker-body-page .layui-iconpicker-icon-limit:first-child{display:block;}'; + var $style = $('head').find('style[iconpicker]'); + if ($style.length === 0) { + $('head').append(''); + } + }, + /** + * 获取数据 + */ + getData: { + fontClass: function() { + var arr = ["layui-icon-rate-half", "layui-icon-rate", "layui-icon-rate-solid", + "layui-icon-cellphone", "layui-icon-vercode", "layui-icon-login-wechat", + "layui-icon-login-qq", "layui-icon-login-weibo", "layui-icon-password", + "layui-icon-username", "layui-icon-refresh-3", "layui-icon-auz", + "layui-icon-spread-left", "layui-icon-shrink-right", + "layui-icon-snowflake", "layui-icon-tips", "layui-icon-note", + "layui-icon-home", "layui-icon-senior", "layui-icon-refresh", + "layui-icon-refresh-1", "layui-icon-flag", "layui-icon-theme", + "layui-icon-notice", "layui-icon-website", "layui-icon-console", + "layui-icon-face-surprised", "layui-icon-set", "layui-icon-template-1", + "layui-icon-app", "layui-icon-template", "layui-icon-praise", + "layui-icon-tread", "layui-icon-male", "layui-icon-female", + "layui-icon-camera", "layui-icon-camera-fill", "layui-icon-more", + "layui-icon-more-vertical", "layui-icon-rmb", "layui-icon-dollar", + "layui-icon-diamond", "layui-icon-fire", "layui-icon-return", + "layui-icon-location", "layui-icon-read", "layui-icon-survey", + "layui-icon-face-smile", "layui-icon-face-cry", + "layui-icon-cart-simple", "layui-icon-cart", "layui-icon-next", + "layui-icon-prev", "layui-icon-upload-drag", "layui-icon-upload", + "layui-icon-download-circle", "layui-icon-component", + "layui-icon-file-b", "layui-icon-user", "layui-icon-find-fill", + "layui-icon-loading", "layui-icon-loading-1", "layui-icon-add-1", + "layui-icon-play", "layui-icon-pause", "layui-icon-headset", + "layui-icon-video", "layui-icon-voice", "layui-icon-speaker", + "layui-icon-fonts-del", "layui-icon-fonts-code", + "layui-icon-fonts-html", "layui-icon-fonts-strong", "layui-icon-unlink", + "layui-icon-picture", "layui-icon-link", "layui-icon-face-smile-b", + "layui-icon-align-left", "layui-icon-align-right", + "layui-icon-align-center", "layui-icon-fonts-u", "layui-icon-fonts-i", + "layui-icon-tabs", "layui-icon-radio", "layui-icon-circle", + "layui-icon-edit", "layui-icon-share", "layui-icon-delete", + "layui-icon-form", "layui-icon-cellphone-fine", "layui-icon-dialogue", + "layui-icon-fonts-clear", "layui-icon-layer", "layui-icon-date", + "layui-icon-water", "layui-icon-code-circle", "layui-icon-carousel", + "layui-icon-prev-circle", "layui-icon-layouts", "layui-icon-util", + "layui-icon-templeate-1", "layui-icon-upload-circle", "layui-icon-tree", + "layui-icon-table", "layui-icon-chart", "layui-icon-chart-screen", + "layui-icon-engine", "layui-icon-triangle-d", "layui-icon-triangle-r", + "layui-icon-file", "layui-icon-set-sm", "layui-icon-add-circle", + "layui-icon-404", "layui-icon-about", "layui-icon-up", + "layui-icon-down", "layui-icon-left", "layui-icon-right", + "layui-icon-circle-dot", "layui-icon-search", "layui-icon-set-fill", + "layui-icon-group", "layui-icon-friends", "layui-icon-reply-fill", + "layui-icon-menu-fill", "layui-icon-log", "layui-icon-picture-fine", + "layui-icon-face-smile-fine", "layui-icon-list", "layui-icon-release", + "layui-icon-ok", "layui-icon-help", "layui-icon-chat", "layui-icon-top", + "layui-icon-star", "layui-icon-star-fill", "layui-icon-close-fill", + "layui-icon-close", "layui-icon-ok-circle", "layui-icon-add-circle-fine" + ]; + return arr; + }, + unicode: function() { + return ["&#xe6c9;", "&#xe67b;", "&#xe67a;", "&#xe678;", + "&#xe679;", "&#xe677;", "&#xe676;", "&#xe675;", + "&#xe673;", "&#xe66f;", "&#xe9aa;", "&#xe672;", + "&#xe66b;", "&#xe668;", "&#xe6b1;", "&#xe702;", + "&#xe66e;", "&#xe68e;", "&#xe674;", "&#xe669;", + "&#xe666;", "&#xe66c;", "&#xe66a;", "&#xe667;", + "&#xe7ae;", "&#xe665;", "&#xe664;", "&#xe716;", + "&#xe656;", "&#xe653;", "&#xe663;", "&#xe6c6;", + "&#xe6c5;", "&#xe662;", "&#xe661;", "&#xe660;", + "&#xe65d;", "&#xe65f;", "&#xe671;", "&#xe65e;", + "&#xe659;", "&#xe735;", "&#xe756;", "&#xe65c;", + "&#xe715;", "&#xe705;", "&#xe6b2;", "&#xe6af;", + "&#xe69c;", "&#xe698;", "&#xe657;", "&#xe65b;", + "&#xe65a;", "&#xe681;", "&#xe67c;", "&#xe601;", + "&#xe857;", "&#xe655;", "&#xe770;", "&#xe670;", + "&#xe63d;", "&#xe63e;", "&#xe654;", "&#xe652;", + "&#xe651;", "&#xe6fc;", "&#xe6ed;", "&#xe688;", + "&#xe645;", "&#xe64f;", "&#xe64e;", "&#xe64b;", + "&#xe62b;", "&#xe64d;", "&#xe64a;", "&#xe64c;", + "&#xe650;", "&#xe649;", "&#xe648;", "&#xe647;", + "&#xe646;", "&#xe644;", "&#xe62a;", "&#xe643;", + "&#xe63f;", "&#xe642;", "&#xe641;", "&#xe640;", + "&#xe63c;", "&#xe63b;", "&#xe63a;", "&#xe639;", + "&#xe638;", "&#xe637;", "&#xe636;", "&#xe635;", + "&#xe634;", "&#xe633;", "&#xe632;", "&#xe631;", + "&#xe630;", "&#xe62f;", "&#xe62e;", "&#xe62d;", + "&#xe62c;", "&#xe629;", "&#xe628;", "&#xe625;", + "&#xe623;", "&#xe621;", "&#xe620;", "&#xe61f;", + "&#xe61c;", "&#xe60b;", "&#xe619;", "&#xe61a;", + "&#xe603;", "&#xe602;", "&#xe617;", "&#xe615;", + "&#xe614;", "&#xe613;", "&#xe612;", "&#xe611;", + "&#xe60f;", "&#xe60e;", "&#xe60d;", "&#xe60c;", + "&#xe60a;", "&#xe609;", "&#xe605;", "&#xe607;", + "&#xe606;", "&#xe604;", "&#xe600;", "&#xe658;", + "&#x1007;", "&#x1006;", "&#x1005;", "&#xe608;" + ]; + }, + + }, + //通过异步获取自定义图标数据源 + ajaxData:function (url,prefix){ + var iconlist = []; + $.ajax({ + url: url, + type: 'get', + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + async: false, + success: function (ret) { + var exp = eval("/"+prefix+"-(.*):/ig"); + var result; + while ((result = exp.exec(ret)) != null) { + iconlist.push(prefix + '-' + result[1]); + } + }, + error: function (xhr, textstatus, thrown) { + layer.msg('自定义图标接口有误'); + } + }); + return iconlist; + } + }; + + a.init(); + return new IconPicker(); + }; + + /** + * 选中图标 + * @param filter lay-filter + * @param iconName 图标名称,自动识别fontClass/unicode + */ + IconPicker.prototype.checkIcon = function(filter, iconName) { + var el = $('*[lay-filter=' + filter + ']'), + p = el.next().find('.layui-iconpicker-item .layui-icon'), + c = iconName; + + if (c.indexOf('#xe') > 0) { + p.html(c); + } else { + p.html('').attr('class', 'layui-icon ' + c); + } + el.attr('value', c).val(c); + }; + + var iconPicker = new IconPicker(); + exports(_MOD, iconPicker); +}); diff --git a/public/static/component/laytp/module/laytp.js b/public/static/component/laytp/module/laytp.js index f675dfff5fcd049c7ce2a134884838977e7ce3fd..b724fcb545f4eca7bf4915f017d78f18cd1512f5 100644 --- a/public/static/component/laytp/module/laytp.js +++ b/public/static/component/laytp/module/laytp.js @@ -7,19 +7,20 @@ * @Last Modified time: 2021-09-22 17:19:40 */ layui.define([ - "facade", // 助手函数 + "facade", // 助手函数 "laytpForm", // 表单元素组件 - "treeTable", // 树形表格组件 "laytpDropdown", // 数据表格顶部批量操作下拉组件 "laytpTable", // 数据表格处理完成后需要执行的操作组件 "button", // 按钮点击过渡效果组件 + "drawer", // 抽屉组件 + "react", // 模拟react的响应式组件,允许注册一些数据,方法,钩子并提供简单的响应式 ], function (exports) { const MOD_NAME = "laytp"; let $ = layui.jquery , facade = layui.facade , laytp = {} - ; + ; window.$ = $; @@ -28,12 +29,12 @@ layui.define([ custom: ["#FF5722", "#009688", "#FFB800", "#2F4056", "#1E9FFF", "#393D49", "#999999", "#0b1bf8", "#7a0bf8", "#f00bf8", "#5FB878", "#1E9FFF", "#2F4056"], status: function (field, value, json, isTreeTable) { let customIndex = 0, key; - if(value){ + if (value) { for (key in json['value']) { if (value.toString() === json['value'][key].toString()) { - if(isTreeTable){ + if (isTreeTable) { return '' + json['text'][key] + ''; - }else{ + } else { return '' + json['text'][key] + ''; } } @@ -65,7 +66,7 @@ layui.define([ if (value) { let valueArr = value.split(", "), key; for (key in valueArr) { - html += " "; + html += " "; } } return html; @@ -116,19 +117,63 @@ layui.define([ * 监听数据表格顶部左侧默认按钮点击事件 */ laytp.tableToolbar = function (obj, isTreeTable) { + // 窗口句柄 + let indexes = []; + // 按钮扩展属性 + let extend = { + actions: {}, + options: {} + }; + // 扩展options + let __ext = {}; + try { + let d = $(obj.elem ? obj.elem.context : obj.config.elem.context.activeElement).data(); + for (const key in d) { + if (Object.hasOwnProperty.call(d, key)) { + const value = d[key]; + if (key.indexOf('actions') === 0) + extend.actions[`${key}`.replace('actions', '')] = value; + if (key.indexOf('options') === 0) + extend.options[`${key}`.replace('options', '')] = value; + } + } + + /** + * 处理yes、cencel和end的回调 + * 从注册到laytp的托管函数中按名调用函数 + */ + if (extend.options.hasOwnProperty('Yes')) { + __ext['yes'] = layui.react.methods[extend.options['Yes']]; + } + + if (extend.options.hasOwnProperty('Cancel')) { + __ext['cancel'] = layui.react.methods[extend.options['Cancel']]; + } + + if (extend.options.hasOwnProperty('End')) { + __ext['end'] = layui.react.methods[extend.options['End']]; + } + } catch (error) { + console.error(error); + __ext = {}; + } + if (obj.event === "add") { let options = {}; options.title = "添 加"; options.path = facade.compatibleHtmlPath(window.htmlPrefix) + "add.html"; - facade.popupDiv(options); + indexes.push(facade.popupDiv({ + ...options, + ...__ext + })); } else if (obj.event === "edit") { - let checkData; + let checkData, checkStatus; if (isTreeTable) { - checkData = laytpTreeTable.checkStatus(false); + checkStatus = layui.treeTable.checkStatus(obj.config.id); } else { - let checkStatus = layui.table.checkStatus(obj.config.id); - checkData = checkStatus.data; + checkStatus = layui.table.checkStatus(obj.config.id); } + checkData = checkStatus.data; if (checkData.length === 0) { facade.error("请选择数据"); return false; @@ -139,19 +184,20 @@ layui.define([ } let key; for (key in checkData) { - facade.popupDiv({ + indexes.push(facade.popupDiv({ title: "编辑", - path: facade.compatibleHtmlPath(window.htmlPrefix) + "edit.html?id=" + checkData[key].id - }); + path: facade.compatibleHtmlPath(window.htmlPrefix) + "edit.html?id=" + checkData[key].id, + ...__ext + })); } } else if (obj.event === "del") { - let checkData; + let checkData, checkStatus; if (isTreeTable) { - checkData = laytpTreeTable.checkStatus(false); + checkStatus = layui.treeTable.checkStatus(obj.config.id); } else { - let checkStatus = layui.table.checkStatus(obj.config.id); - checkData = checkStatus.data; + checkStatus = layui.table.checkStatus(obj.config.id); } + checkData = checkStatus.data; if (checkData.length === 0) { facade.error("请选择数据"); return false; @@ -161,44 +207,65 @@ layui.define([ for (key in checkData) { ids.push(checkData[key].id); } - if(isTreeTable){ - facade.popupConfirm({text: "确定删除么?", route: window.apiPrefix + "del", data: {ids: ids}}, function(res){ - if(res.code === 0){ - if(typeof obj.del === "function"){ + if (isTreeTable) { + facade.popupConfirm({ text: "确定删除么?", route: window.apiPrefix + "del", data: { ids: ids } }, function (res) { + if (res.code === 0) { + if (typeof obj.del === "function") { obj.del(); - }else{ + } else { funController.tableRender(); } } }); - }else{ - facade.popupConfirm({text: "确定删除么?", route: window.apiPrefix + "del", data: {ids: ids}}); - } - } else if (obj.event === "search") { - if ($("#search-form").css("display") === "none") { - $("#search-form").show(); } else { - $("#search-form").hide(); + facade.popupConfirm({ text: "确定删除么?", route: window.apiPrefix + "del", data: { ids: ids } }); } + } else if (obj.event === "search") { + layui.drawer.open({ + direction: "right", + dom: "#search-form", + distance: "60%", + success: function (d) { + var windowHeight = d.height; + var height = parseInt(windowHeight) - 115; + $(".search-form-body").css("height", height + 'px'); + $(".search-form-body").css("max-height", height + 'px'); + $(".search-form-body").css("overflow-y", "auto"); + } + }); } else if (obj.event === "recycle-search") { - if ($("#recycle-search-form").css("display") === "none") { - $("#recycle-search-form").show(); - } else { - $("#recycle-search-form").hide(); - } + layui.drawer.open({ + direction: "right", + dom: "#recycle-search-form", + distance: "60%", + success: function (d) { + var windowHeight = d.height; + var height = parseInt(windowHeight) - 115; + $(".search-form-body").css("height", height + 'px'); + $(".search-form-body").css("max-height", height + 'px'); + $(".search-form-body").css("overflow-y", "auto"); + } + }); } else if (obj.event === "recycle") { let options = {}; options.title = "回收站"; options.path = facade.compatibleHtmlPath(window.htmlPrefix) + "recycle.html"; - facade.popupDiv(options); + options.offset = "auto"; + options.width = facade.isMobile() ? '100%' : '90%'; + options.height = facade.isMobile() ? '100%' : '90%'; + options.anim = 2; + indexes.push(facade.popupDiv({ + ...options, + ...__ext + })); } else if (obj.event === "restore") { - let checkData; + let checkData, checkStatus; if (isTreeTable) { - checkData = laytpTreeTable.checkStatus(false); + checkStatus = layui.treeTable.checkStatus(obj.config.id); } else { - let checkStatus = layui.table.checkStatus(obj.config.id); - checkData = checkStatus.data; + checkStatus = layui.table.checkStatus(obj.config.id); } + checkData = checkStatus.data; if (checkData.length === 0) { facade.error("请选择数据"); return false; @@ -210,7 +277,7 @@ layui.define([ } facade.ajax({ route: window.apiPrefix + "restore", - data: {ids: ids}, + data: { ids: ids }, showLoading: true }).done(function (res) { if (res.code === 0) { @@ -219,13 +286,13 @@ layui.define([ } }); } else if (obj.event === "true-del") { - let checkData; + let checkData, checkStatus; if (isTreeTable) { - checkData = laytpTreeTable.checkStatus(false); + checkStatus = layui.treeTable.checkStatus(obj.config.id); } else { - let checkStatus = layui.table.checkStatus(obj.config.id); - checkData = checkStatus.data; + checkStatus = layui.table.checkStatus(obj.config.id); } + checkData = checkStatus.data; if (checkData.length === 0) { facade.error("请选择数据"); return false; @@ -239,40 +306,99 @@ layui.define([ facade.popupConfirm({ text: "真的在回收站删除么?此次删除将不能还原", route: window.apiPrefix + "trueDel", - data: {ids: ids} + data: { ids: ids } }); - } else if (obj.event === "refresh"){ - if(typeof funController !== "undefined"){ - funController.tableRender(layui.form.val("layui-form"),$(".layui-laypage-em").next().html()); + } else if (obj.event === "refresh") { + if (typeof funController !== "undefined") { + funController.tableRender(layui.form.val("layui-form"), $(".layui-laypage-em").next().html()); } - } else if(obj.event === "recycle-refresh"){ - if(typeof funRecycleController !== "undefined"){ - funRecycleController.tableRender(layui.form.val("layui-form"),$(".layui-laypage-em").next().html()); + } else if (obj.event === "recycle-refresh") { + if (typeof funRecycleController !== "undefined") { + funRecycleController.tableRender(layui.form.val("layui-form"), $(".layui-laypage-em").next().html()); } } + + // 自动最大化 + if (extend.actions.hasOwnProperty('WindowMax')) + indexes.forEach(win => { + layui.layer.full(win); + }); + + // 自动最小化 + if (extend.actions.hasOwnProperty('WindowMin')) + indexes.forEach(win => { + layui.layer.min(win); + }); + + // 返回窗口句柄 + if (indexes.length === 1) return indexes.pop(); + else return [...indexes]; }; /** * 监听数据表格操作列,默认按钮点击事件 */ laytp.tableTool = function (obj, isTreeTable) { + let indexes = []; + // 按钮扩展属性 + let extend = { + actions: {}, + options: {} + }; + // 扩展options + let __ext = {}; + try { + let d = $($(obj.tr.selector + ` [lay-event="${obj.event}"]`)[0]).data(); + for (const key in d) { + if (Object.hasOwnProperty.call(d, key)) { + const value = d[key]; + if (key.indexOf('actions') === 0) + extend.actions[`${key}`.replace('actions', '')] = value; + if (key.indexOf('options') === 0) + extend.options[`${key}`.replace('options', '')] = value; + } + } + + /** + * 处理yes、cencel和end的回调 + * 从注册到laytp的托管函数中按名调用函数 + */ + if (extend.options.hasOwnProperty('Yes')) { + __ext['yes'] = layui.react.methods[extend.options['Yes']]; + } + + if (extend.options.hasOwnProperty('Cancel')) { + __ext['cancel'] = layui.react.methods[extend.options['Cancel']]; + } + + if (extend.options.hasOwnProperty('End')) { + __ext['end'] = layui.react.methods[extend.options['End']]; + } + } catch (error) { + console.error(error); + __ext = {}; + } + if (obj.event === "del") { - if(isTreeTable){ - facade.popupConfirm({text: "真的删除么?", route: window.apiPrefix + "del", data: {ids: [obj.data.id]}},function(res){ - if(res.code === 0){ + if (isTreeTable) { + facade.popupConfirm({ text: "真的删除么?", route: window.apiPrefix + "del", data: { ids: [obj.data.id] } }, function (res) { + if (res.code === 0) { obj.del(); } }); - }else{ - facade.popupConfirm({text: "真的删除么?", route: window.apiPrefix + "del", data: {ids: [obj.data.id]}}); + } else { + facade.popupConfirm({ text: "真的删除么?", route: window.apiPrefix + "del", data: { ids: [obj.data.id] } }); } } else if (obj.event === "edit") { let options = {}; options.title = "编 辑"; options.path = facade.compatibleHtmlPath(window.htmlPrefix) + "edit.html?id=" + obj.data.id; - facade.popupDiv(options); + indexes.push(facade.popupDiv({ + ...options, + ...__ext + })); } else if (obj.event === "restore") { - facade.ajax({route: window.apiPrefix + "restore", data: {ids: [obj.data.id]}}).done(function (res) { + facade.ajax({ route: window.apiPrefix + "restore", data: { ids: [obj.data.id] } }).done(function (res) { if (res.code === 0) { parent.funController.tableRender(); funRecycleController.tableRender(); @@ -282,9 +408,24 @@ layui.define([ facade.popupConfirm({ text: "真的在回收站删除么?此次删除将不能还原", route: window.apiPrefix + "trueDel", - data: {ids: [obj.data.id]} + data: { ids: [obj.data.id] } }); } + + // 自动最大化 + if (extend.actions.hasOwnProperty('WindowMax')) + indexes.forEach(win => { + layui.layer.full(win); + }); + + // 自动最小化 + if (extend.actions.hasOwnProperty('WindowMin')) + indexes.forEach(win => { + layui.layer.min(win); + }); + + if (indexes.length === 1) return indexes.pop(); + else return indexes; }; //初始化 @@ -335,7 +476,7 @@ layui.define([ * data-url 必填,弹窗展示的静态文件url * data-title tab菜单的名称 */ - openTabMenu: function(){ + openTabMenu: function () { $(document).off("click", ".openTabMenu").on("click", ".openTabMenu", function () { if (parent.config.tab.muiltTab) { parent.bodyTab.addTabOnly({ @@ -376,13 +517,13 @@ layui.define([ * 监听.delArrayItem节点,删除表格中的一行 * .delArrayItem节点存在的位置举例:系统配置,数组类型配置,删除某一个数组元素 */ - delArrayItem: function(){ - $(document).off("click", ".delArrayItem").on('click','.delArrayItem',function(){ + delArrayItem: function () { + $(document).off("click", ".delArrayItem").on('click', '.delArrayItem', function () { let clickObj = $(this); let childrenLength = clickObj.parent().parent().parent().children().length; - if(childrenLength>2){ + if (childrenLength > 2) { clickObj.parent().parent().remove(); - }else{ + } else { facade.error('请留下这唯一的一行数据'); } }); @@ -392,11 +533,13 @@ layui.define([ * 监听.addArrayItem节点,追加表格中的一行 * .addArrayItem节点存在的位置举例:系统配置,数组类型配置,追加一个数组元素 */ - addArrayItem: function(){ - $(document).off("click", ".addArrayItem").on('click','.addArrayItem',function(){ + addArrayItem: function () { + $(document).off("click", ".addArrayItem").on('click', '.addArrayItem', function () { let clickObj = $(this); var itemHtml = clickObj.parent().parent().prev().prop("outerHTML"); clickObj.parent().parent().before(itemHtml); + layui.form.render(); + layui.laytp.init.tableDnd(); }); }, @@ -423,8 +566,8 @@ layui.define([ * - 再加载jquery_3.3.1.js * - 最后加载第三方jQuery库jquery.tablednd.js */ - tableDnd:function(){ - layui.each($(".tableDnd"),function(key,item) { + tableDnd: function () { + layui.each($(".tableDnd"), function (key, item) { $(item).tableDnD({}); }); }, @@ -455,11 +598,41 @@ layui.define([ }); }, + /** + * 监听拥有layerImgTips样式的节点,渲染layerImgTips组件 + * data-time 弹窗展示时间,单位秒 + * data-text 弹窗内文本 + */ + layerImgTips: function () { + var tipsIndex; + // 鼠标进入层就展示Tips + $(document).off('mouseover', '.layerImgTips').on('mouseover', '.layerImgTips', function (e) { + let position = 2; + if (e.screenY > (window.screen.height) / 2) { + position = 1 + } + let obj = $(this); + let time = (typeof obj.data('time') != 'undefined') ? obj.data('time') : 5000; + var img = ""; + tipsIndex = layui.layer.tips(img, this, { + tips: [position] + , time: time + , area: ['300px'] + , skin: "laytpLayerImgTips" + }); + }); + + // 鼠标离开层就关闭Tips + $(document).off('mouseout', '.layerImgTips').on('mouseout', '.layerImgTips', function () { + layui.layer.close(tipsIndex); + }); + }, + //锁屏 - lockScreen: function(){ + lockScreen: function () { let lockScreenStatus = localStorage.getItem("laytpLockScreen"); - $(document).ready(function(){ - if( lockScreenStatus === "locked" ){ + $(document).ready(function () { + if (lockScreenStatus === "locked") { layui.facade.popupDiv({ title: '锁屏', path: '/admin/lockScreen.html', @@ -468,9 +641,8 @@ layui.define([ } }); - - $(document).on('click','#lockScreen',function(){ - layui.layer.confirm('锁屏后,需要使用登录密码解锁,确定锁屏么?', {title: "锁屏确认继续", skin: "laytp"}, function(index){ + $(document).on('click', '#lockScreen', function () { + layui.layer.confirm('锁屏后,需要使用登录密码解锁,确定锁屏么?', { title: "锁屏确认继续", skin: "laytp" }, function (index) { layui.layer.close(index); localStorage.setItem("laytpLockScreen", "locked"); layui.facade.popupDiv({ @@ -495,7 +667,6 @@ layui.define([ exports(MOD_NAME, laytp); layui.laytp = laytp; - window.laytp = laytp; window.$ = $; }); \ No newline at end of file diff --git a/public/static/component/laytp/module/laytpForm.js b/public/static/component/laytp/module/laytpForm.js index c0a66779c9bc0ca2f284005b4d721203a17ab8c3..afa6f1bf5d69dcfbc52e147fd338726b73b112b2 100644 --- a/public/static/component/laytp/module/laytpForm.js +++ b/public/static/component/laytp/module/laytpForm.js @@ -1,12 +1,17 @@ /** * 表单元素渲染插件 - * 表单元素 附加选项 - * 下拉框 单选 - 无限极分类 - * @version: 1.0 + * @version: 2.1.0 + * # 版本修改: + * - 为了实现更加复杂的交互,提供laytpForm中的所有表单元素独立的渲染方法 + * - renderOne(表单元素唯一标识/jquery对象, '表单元素class标识') // 统一渲染单个表单元素方法 + * - renderSelect(表单元素唯一标识/jquery对象) // 渲染单个select + * - renderXmSelect(表单元素唯一标识/jquery对象) // 渲染单个xmSelect + * - renderUpload(表单元素唯一标识/jquery对象) // 渲染单个upload + * - ... * @Author: JunStar * @Date: 2020-08-17 18:13:50 * @Last Modified by: JunStar - * @Last Modified time: 2020-08-28 18:16:07 + * @Last Modified time: 2022年8月29日14:59:11 */ layui.define([ 'xmSelect', @@ -21,9 +26,15 @@ layui.define([ ; window.xmSelectObj = {}; + window.xmSelectJqueryObj = {}; + window.xmSelectData = {}; let laytpForm = {}; + window.linkageXmSelectData = {}; + window.linkageXmSelectJqueryObj = {}; + window.linkageXmSelectObj = {}; + //延迟对象数组 let defArr = []; @@ -31,72 +42,158 @@ layui.define([ * 初始化所有表单元素的数据,比如下拉框的待选择项和选定项 */ laytpForm.initData = { + select: function () { + let obj = $("select"); + layui.each(obj, function (key, item) { + layui.laytpForm.initDataOne.selectOne(item); + }); + }, + + xmSelect: function () { + let obj = $(".xmSelect"); + layui.each(obj, function (key, item) { + layui.laytpForm.initDataOne.xmSelectOne(item); + }); + }, + + linkageXmSelect: function () { + let obj = $(".linkageXmSelect"); + + layui.each(obj, function (key, item) { + layui.laytpForm.initDataOne.linkageXmSelectOne(item); + }); + }, + + linkageSelect: function () { + let obj = $(".linkageSelect"); + layui.each(obj, function (key, item) { + layui.laytpForm.initDataOne.linkageSelectOne(item); + }); + }, + + upload: function () { + let obj = $(".laytpUpload"); + layui.each(obj, function (key, item) { + layui.laytpForm.initDataOne.uploadOne(item); + }); + }, + + icon: function () { + let obj = $(".laytpIcon"); + layui.each(obj, function (key, item) { + layui.laytpForm.initDataOne.iconOne(item); + }); + }, + + laydate: function () { + let obj = $("input[type='text']").filter(".laydate"); + layui.each(obj, function (key, item) { + layui.laytpForm.initDataOne.laydateOne(item); + }); + }, + + colorPicker: function () { + let obj = $("div").filter(".colorPicker"); + layui.each(obj, function (key, item) { + layui.laytpForm.initDataOne.colorPickerOne(item); + }); + }, + + /** + * 编辑器 + * 此方法已废弃,实现方式变更,使用iframe调用编辑器页面进行展示 + * 原因:多种编辑器在单页面下进行加载展示,会有js、css冲突的情况,改成iframe就不会出现此问题 + */ + // editorRender: function () { + // let obj = $(".editor"); + // layui.each(obj, function (key, item) { + // let type = $(item).data('type'); + // let id = $(item).attr('id'); + // layui.use(type, function () { + // layui[type].render(id); + // }); + // }); + // }, + }; + + // 将html标记元素渲染成指定的表单元素 + laytpForm.initDataOne = { /** * 默认下拉框 * - * @param parentElem 父节点 + * @param item 需要渲染的jquery对象 */ - select: function (parentElem) { - let obj = (typeof parentElem === "undefined") ? $("select") : $("select", parentElem); - layui.each(obj, function (key, item) { - let source = $(item).data("source"); - $(item).removeAttr("data-source"); - if (source) { - let selected = $(item).data("selected"); - let valueField = $(item).data("valuefield") ? $(item).data("valuefield") : 'id'; - let showField = $(item).data("showfield") ? $(item).data("showfield") : 'name'; - let placeholder = $(item).data("placeholder"); - //将ajax的延迟对象,存入延迟对象数组defArr中 - defArr.push( - facade.ajax({ - method: "GET", - route: source, - data: {"all_data": 1}, - successAlert: false - }).then(function (res) { - if (placeholder) { - $(item).append(""); - } - for (key in res.data) { - let optionValue = (valueField !== "k") ? res.data[key][valueField] : key; - let optionText = (showField !== "v") ? res.data[key][showField] : res.data[key]; - if (selected === optionValue) { - $(item).append(""); - } else { - $(item).append(""); - } + selectOne: function (item) { + let route = $(item).data("route"); + if (route) { + let selected = $(item).data("selected"); + let valueField = $(item).data("valuefield") ? $(item).data("valuefield") : 'id'; + let showField = $(item).data("showfield") ? $(item).data("showfield") : 'name'; + let placeholder = $(item).data("placeholder"); + //将ajax的延迟对象,存入延迟对象数组defArr中 + defArr.push( + facade.ajax({ + method: "GET", + route: route, + data: {"paging": 0}, + successAlert: false + }).then(function (res) { + if (placeholder) { + $(item).append(""); + } + for (key in res.data) { + let optionValue = (valueField !== "k") ? res.data[key][valueField] : key; + let optionText = (showField !== "v") ? res.data[key][showField] : res.data[key]; + if (selected === optionValue) { + $(item).append(""); + } else { + $(item).append(""); } - }) - ); - } - }); + } + }) + ); + } }, /** - * xmSelect下拉选择组件 - * - 获取父级窗口xmSelect组件已经选中的值,console.log(parent.xmSelectObj[options.name].getValue()); - * - 获取当前窗口xmSelect组件已经选中的值,console.log(xmSelectObj[options.name].getValue()); + * xmSelect + * - 获取父级窗口xmSelect组件已经选中的值,console.log(parent.xmSelectObj[id].getValue()); + * - 获取当前窗口xmSelect组件已经选中的值,console.log(xmSelectObj[id].getValue()); + * - 动态更新xmSelect组件, + * - xmSelectObj[id].update(改变了的属性值); // 如果你很了解xmSelect手册,可以使用此方法 + * - 更改html属性值,调用laytpForm.updateXmSelect(id); *
    - * @param parentElem + * @param item 需要渲染的jquery对象 + * @returns {boolean} */ - xmSelect: function (parentElem) { - let obj = (typeof parentElem === "undefined") ? $(".xmSelect") : $(".xmSelect", parentElem); - layui.each(obj, function (key, item) { - let name = $(item).data("name"); - if (!name) facade.error("xmSelect组件未定义name属性"); - let sourceType = $(item).data("sourcetype") ? $(item).data("sourcetype") : "data"; - let source = $(item).data("source"); - if (!source) { - facade.error('xmSelect插件未定义source'); + xmSelectOne: function (item) { + var obj, el; + + if (typeof item == "string") { + el = ($('.xmSelect[data-id="' + item + '"]').length == 0) ? '.xmSelect[data-name="' + item + '"]' : '.xmSelect[data-id="' + item + '"]'; + } else { + el = item; + } + + obj = $(el); + let id = obj.data("id"); + let name = obj.data("name"); + if (!id && !name) { + facade.error("xmSelect组件data-id和data-name属性值均未定义"); + return false; + } + if (!id && name) id = name; + + if (window.xmSelectObj[id]) { + return false; + } + + let source = obj.data("source"); + if (!source) { + facade.error('xmSelect插件' + id + '未定义data-source属性值'); + return false; + } + + window.xmSelectData[id] = { + id: id, + name: name, + sourceType: obj.data("sourcetype") ? obj.data("sourcetype") : "data", + source: source, + param: obj.data("param") ? obj.data("param") : {}, + customParam: obj.data("customparam") ? obj.data("customparam") : {}, + search: obj.data("search") ? obj.data("search") : false, + searchParam: obj.data("searchparam") ? obj.data("searchparam") : {}, + searchCustomParam: obj.data("searchcustomparam") ? obj.data("searchcustomparam") : {}, + textField: obj.data("textfield") ? obj.data("textfield") : 'name', + subTextField: obj.data("subtextfield") ? obj.data("subtextfield") : '', + valueField: obj.data("valuefield") ? obj.data("valuefield") : "id", + iconField: obj.data("iconfield") ? obj.data("iconfield") : "", + sourceTree: obj.data("sourcetree") === true, + treeType: (obj.data("treetype") === 'cascader') ? 'cascader' : 'tree', + onchange: obj.data("onchange") ? obj.data("onchange") : "", + paging: obj.data("paging") ? obj.data("paging") : false, + pageSize: obj.data("pagesize") ? obj.data("pagesize") : 10, + radio: obj.data("radio") === true, + strict: (typeof obj.data("strict") !== "undefined") ? obj.data("strict") : !(obj.data("radio") === true), + selected: obj.data("selected") ? obj.data("selected").toString() : '', + max: obj.data("max") ? obj.data("max") : 0, + direction: obj.data("direction") ? obj.data("direction") : "auto", + layVerify: obj.data("layverify") ? obj.data("layverify") : "", + layVerType: obj.data("layvertype") ? obj.data("layvertype") : "", + placeholder: obj.data("placeholder") ? obj.data("placeholder") : "请选择", + searchKeyword: '', + onNum: 0, + } + + var jsonTypeAttr = ['param', 'customParam', 'searchParam', 'searchCustomParam']; + for (key in jsonTypeAttr) { + if (typeof window.xmSelectData[id][jsonTypeAttr[key]] != "object") { + facade.error("data-id=" + id + "的xmSelect下拉框组件,data-" + jsonTypeAttr[key] + "属性值需要是一个正确的json字符串"); return false; } - source = source.toString(); - let textField = $(item).data("textfield"); - let subTextField = $(item).data("subtextfield"); - let radio = $(item).data("radio") === true; - let strict = !radio; - //这里是第一次渲染 - let options = { - el: item - , name: name - , language: 'zn' - , data: [] - , filterable: true - , filterMethod: function (val, item, index, prop) { - if (val) { - //主标题中包含的大小写都搜索出来 - if (item[textField].toLowerCase().indexOf(val.toLowerCase()) !== -1) { - return true; - //副标题中包含的大小写都搜索出来 - } else if (subTextField && item[subTextField].toLowerCase().indexOf(val.toLowerCase()) !== -1) { - return true; - } - return false;//其他的就不要了 - } else { + } + + if (window.xmSelectData[id].sourceType == 'data') { + if (typeof window.xmSelectData[id].source != "object") { + facade.error("data-id=" + id + "的xmSelect下拉框组件,data-source属性值需要是一个正确的json字符串"); + return false; + } + } + + // 定义树形结构渲染参数 + let renderTreeOptions = {}; + // 定义级联模式渲染参数 + let renderCascaderOptions = {}; + // 赋值树形结构渲染参数和级联模式渲染参数 + if (window.xmSelectData[id].sourceTree) { + if (window.xmSelectData[id].treeType === 'tree') { + renderTreeOptions = { + //是否显示树状结构 + show: true, + //是否展示三角图标 + showFolderIcon: true, + //是否显示虚线 + showLine: true, + //间距 + indent: 20, + //默认展开节点的数组, 为 true 时, 展开所有节点 + expandedKeys: true, + //是否严格遵守父子模式 + strict: window.xmSelectData[id].strict, + //是否开启极简模式 + simple: true, + clickExpand: false, + clickCheck: true, + }; + } else if (window.xmSelectData[id].treeType === 'tree-group') { + renderTreeOptions = { + //是否显示树状结构 + show: false, + //是否展示三角图标 + showFolderIcon: true, + //是否显示虚线 + showLine: true, + //间距 + indent: 20, + //默认展开节点的数组, 为 true 时, 展开所有节点 + expandedKeys: true, + //是否严格遵守父子模式 + strict: window.xmSelectData[id].strict, + //是否开启极简模式 + simple: true, + clickExpand: false, + clickCheck: true, + }; + } else { + renderCascaderOptions.cascader = { + show: true, + indent: 200, + //是否严格遵守父子模式 + strict: window.xmSelectData[id].strict, + }; + } + } + // 定义渲染参数 + let renderOptions = { + el: el, + id: id, + name: name ? name : "", + language: 'zn', + data: [], + filterable: true, + filterMethod: function (val, item, index, prop) { + if (val) { + //主标题中包含的大小写都搜索出来 + if (window.xmSelectData[id].textField && item[window.xmSelectData[id].textField].toLowerCase().indexOf(val.toLowerCase()) !== -1) { + return true; + //副标题中包含的大小写都搜索出来 + } else if (window.xmSelectData[id].subTextField && item[window.xmSelectData[id].subTextField].toLowerCase().indexOf(val.toLowerCase()) !== -1) { return true; } + return false;//其他的就不要了 + } else { + return true; } - , radio: radio - , searchTips: "输入关键字进行搜索" - , maxMethod: function (selectedData) { - facade.error("最多可选" + selectedData.length + "个数据"); - } - , layVerify: $(item).data("layverify") ? $(item).data("layverify") : "" - , layVerType: $(item).data("layvertype") ? $(item).data("layvertype") : "" - , clickClose: $(item).data("radio") === true - , tips: $(item).data("placeholder") ? $(item).data("placeholder") : "请选择" - , toolbar: {show: !($(item).data("radio") === true)} - , theme: { - color: localStorage.getItem("theme-color-context") - } - }; - let max = $(item).data("max"); - if (max) options.max = max; - let selected = $(item).data("selected"); - if (selected && selected !== "undefined") { - selected = selected.toString(); - options.initValue = selected.split(','); - } - options.direction = $(item).data("direction") ? $(item).data("direction") : "auto"; - options.textField = $(item).data("textfield") ? $(item).data("textfield") : "name"; - options.subTextField = $(item).data("subtextfield") ? $(item).data("subtextfield") : ""; - options.valueField = $(item).data("valuefield") ? $(item).data("valuefield") : "value"; - options.iconField = $(item).data("iconfield") ? $(item).data("iconfield") : ""; - options.sourceTree = $(item).data("sourcetree") === true; - options.treeType = ($(item).data("treetype") === 'cascader') ? 'cascader' : 'tree'; - options.onchange = $(item).data("onchange") ? $(item).data("onchange") : ""; - if (options.onchange) { - options.on = function (params) { - if (typeof window[options.onchange] === "function") { - window[options.onchange].call(this, params); + }, + radio: window.xmSelectData[id].radio, + searchTips: "输入关键字进行搜索", + maxMethod: function (selectedData) { + facade.error("最多可选" + selectedData.length + "个数据"); + }, + layVerify: window.xmSelectData[id].layVerify, + layVerType: window.xmSelectData[id].layVerType, + clickClose: window.xmSelectData[id].radio, + tips: window.xmSelectData[id].placeholder, + toolbar: { + show: true, + list: !(obj.data("radio") === true) ? ['ALL', 'REVERSE', 'CLEAR'] : ['CLEAR'] + }, + theme: { + color: localStorage.getItem("theme-color-color") + }, + direction: window.xmSelectData[id].direction, + textField: window.xmSelectData[id].textField, + subTextField: window.xmSelectData[id].subTextField, + valueField: window.xmSelectData[id].valueField, + iconField: window.xmSelectData[id].iconField, + sourceTree: window.xmSelectData[id].sourceTree, + treeType: window.xmSelectData[id].treeType, + paging: window.xmSelectData[id].paging, + pageSize: window.xmSelectData[id].pageSize, + show: function () { + $('.xm-search-input', xmSelectObj[id].dom) + .val(xmSelectData[id].searchKeyword) + .focus(); + }, + on: function (params) { + window.xmSelectData[id].onNum++; + if (window.xmSelectData[id].onchange) { + if (typeof window[window.xmSelectData[id].onchange] === "function") { + if (!window.xmSelectData[id].selected) { + window[window.xmSelectData[id].onchange].call(this, params); + } else { + if (window.xmSelectData[id].paging) { + if (window.xmSelectData[id].onNum > 1) { + window[window.xmSelectData[id].onchange].call(this, params); + } + } else { + window[window.xmSelectData[id].onchange].call(this, params); + } + } } else { - facade.error(options.onchange + "回调函数未定义"); + facade.error(window.xmSelectData[id].onchange + "回调函数未定义"); } - }; - } - //model是设置选中后,input框的模板 - options.model = { + } + }, + model: { label: { block: { template: function (item) { - let template = item[options.textField]; - template = options.iconField ? '' + template : template; + let template = item[window.xmSelectData[id].textField]; + template = window.xmSelectData[id].iconField ? '' + template : template; return template; }, + showIcon: !(window.xmSelectData[id].radio === true) }, - } - }; - //这里是设置选中后,input框中的每一项,删除图标是否显示 - options.model.label.block.showIcon = !($(item).data("radio") === true); - //这里是设置下拉框前面的单选按钮或者复选框是否显示 - options.model.icon = ($(item).data("radio") === true && !options.sourceTree) ? "hidden" : "show"; - //template是设置下拉框的模板 - options.template = function (item) { - let template = item.item[options.textField]; - template = options.iconField ? '' + template : template; - if(options.subTextField.indexOf('.') !== -1){ - var subTextFieldArr = options.subTextField.split('.'); - if(item.item[subTextFieldArr[0]]){ - template = template + '' + item.item[subTextFieldArr[0]][subTextFieldArr[1]] + ''; + }, + icon: (window.xmSelectData[id].radio === true && !window.xmSelectData[id].sourceTree) ? "hidden" : "show", + }, + template: function (item) { + let template = item.item[window.xmSelectData[id].textField]; + template = window.xmSelectData[id].iconField ? '' + template : template; + if (window.xmSelectData[id].subTextField.indexOf('.') !== -1) { + var subTextFieldArr = window.xmSelectData[id].subTextField.split('.'); + if (item.item[subTextFieldArr[0]]) { + template = template + '' + item.item[subTextFieldArr[0]][subTextFieldArr[1]] + ''; } - }else{ - template = options.subTextField ? template + '' + item.item[options.subTextField] + '' : template; + } else { + template = window.xmSelectData[id].subTextField ? template + '' + item.item[window.xmSelectData[id].subTextField] + '' : template; } return template; - }; - options.prop = { - name: options.textField - , value: options.valueField - }; - if (options.sourceTree) { - if(options.treeType === 'tree'){ - options.tree = { - //是否显示树状结构 - show: true, - //是否展示三角图标 - showFolderIcon: true, - //是否显示虚线 - showLine: true, - //间距 - indent: 20, - //默认展开节点的数组, 为 true 时, 展开所有节点 - expandedKeys: true, - //是否严格遵守父子模式 - strict: false, - //是否开启极简模式 - simple: true, - clickExpand: false, - clickCheck: true, - }; - }else{ - options.cascader = { - show: true, - indent: 200, - //是否严格遵守父子模式 - strict: false, - }; + }, + prop: { + name: window.xmSelectData[id].textField + , value: window.xmSelectData[id].valueField + }, + tree: renderTreeOptions, + cascader: renderCascaderOptions, + autoRow: true, // 如果选中的项目过多,会自动变动输入框的高度 + }; + + // 根据数据来源的不同,进行不同方式的渲染xmSelect组件 + if (window.xmSelectData[id].sourceType === "route") { + // 只要是route方式获取数据进行渲染组件,那么就需要先组合查询条件 + let ajaxParams = {}; + var param, customParam, searchParam, searchCustomParam = {}; + var key; + ajaxParams['search_param'] = {}; + if (window.xmSelectData[id].selected && window.xmSelectData[id].selected !== "undefined") { + ajaxParams.selected = window.xmSelectData[id].selected.split(','); + ajaxParams.selectedField = window.xmSelectData[id].valueField; + } + if (window.xmSelectData[id].param) { + param = window.xmSelectData[id].param; + for (key in param) { + ajaxParams['search_param'][key] = param[key]; } } - options.autoRow = true; // 如果选中的项目过多,会自动变动输入框的高度 - if (sourceType === "route") { - //这个ajax请求无需存入延迟对象数组,因为xmSelect是一个一个进行渲染的,不像layui.form.render()方法,xmSelect没有全局统一方法一次性渲染所有的xmSelect - //xmSelect的分页效果由js实现,不管分页与否,都查询出所有数据集,参数传递all_data即为查询出所有数据集 - let params = $(item).data("params"); - let ajaxParams = {}; - if(options.sourceTree){ - ajaxParams.is_tree = 1; - }else{ - ajaxParams.all_data = 1; + if (window.xmSelectData[id].customParam) { + customParam = window.xmSelectData[id].customParam; + for (key in customParam) { + ajaxParams[key] = customParam[key]; } - if (params) { - params = eval(params); - for (key in params) { - ajaxParams[key] = params[key]; + } + + // 如果是树形结构的数据,是先进行ajax请求,然后渲染组件 + if (window.xmSelectData[id].sourceTree) { + ajaxParams.is_tree = 1; + // 如果开启了search且searchParam或者searchCustomParam有值,就需要开启远程搜索 + if (window.xmSelectData[id].search && (window.xmSelectData[id].searchParam || window.xmSelectData[id].searchCustomParam)) { + renderOptions.remoteSearch = true; + renderOptions.remoteMethod = function (val, cb, show, pageIndex) { + if (window.xmSelectData[id].searchParam) { + searchParam = window.xmSelectData[id].searchParam; + for (var searchParamKey in searchParam) { + ajaxParams['search_param'][searchParamKey] = searchParam[searchParamKey]; + ajaxParams['search_param'][searchParamKey]['value'] = val; + } + } + + if (window.xmSelectData[id].searchCustomParam) { + searchCustomParam = window.xmSelectData[id].searchCustomParam; + for (var searchCustomParamKey in searchCustomParam) { + ajaxParams[searchCustomParamKey] = searchCustomParam[searchCustomParamKey]; + ajaxParams[searchCustomParamKey]['value'] = val; + } + } + + if (val) { + if ($.isEmptyObject(window.xmSelectData[id].searchParam)) { + ajaxParams['search_param'][window.xmSelectData[id].textField] = { + "condition": "LIKE", + "value": val + }; + } + } else { + // 1. 用户在页面上先输入搜索值,后删除搜索值,如果没有如下删除语句,ajaxParams对象不会有改变,还是会用有值时的val进行查询 + // 2. 如果不进行任何判断,仅执行重新定义ajaxParams,会传递like空的查询条件 + + // 所以当没有搜索值时,最好是删除查询条件 + Reflect.deleteProperty(ajaxParams['search_param'], window.xmSelectData[id].textField); + } } } facade.ajax({ @@ -292,83 +533,418 @@ layui.define([ data: ajaxParams, successAlert: false }).done(function (res) { - let paging = $(item).data("paging") === true; - if (paging) { - options.paging = true; - options.pageSize = 10; + renderOptions.paging = 0; // 是否分页的标识使用0和1,否则是一个字符串传递到后台 + renderOptions.data = res.data; + window.xmSelectObj[id] = xmSelect.render(renderOptions); + if (window.xmSelectData[id].selected && window.xmSelectData[id].selected !== "undefined") { + window.xmSelectObj[id].setValue(window.xmSelectData[id].selected.split(',')); + } + }); + } else { + // 非树形结构渲染组件,需要开启远程分页进行组件渲染 + renderOptions.pageRemote = true; + renderOptions.remoteMethod = function (val, cb, show, pageIndex) { + window.xmSelectData[id].searchKeyword = val; + //val: 搜索框的内容, 不开启搜索默认为空, cb: 回调函数, show: 当前下拉框是否展开, pageIndex: 当前第几页 + ajaxParams.paging = window.xmSelectData[id].paging ? 1 : 0; + ajaxParams.page = pageIndex; + ajaxParams.limit = window.xmSelectData[id].pageSize; + + if (window.xmSelectData[id].searchParam) { + searchParam = window.xmSelectData[id].searchParam; + for (var searchParamKey in searchParam) { + ajaxParams['search_param'][searchParamKey] = searchParam[searchParamKey]; + ajaxParams['search_param'][searchParamKey]['value'] = val; + } + } + + if (window.xmSelectData[id].searchCustomParam) { + searchCustomParam = window.xmSelectData[id].searchCustomParam; + for (var searchCustomParamKey in searchCustomParam) { + ajaxParams[searchCustomParamKey] = searchCustomParam[searchCustomParamKey]; + ajaxParams[searchCustomParamKey]['value'] = val; + } + } + + if (val) { + if ($.isEmptyObject(window.xmSelectData[id].searchParam)) { + ajaxParams['search_param'][window.xmSelectData[id].textField] = { + "condition": "LIKE", + "value": val + }; + } + } else { + // 1. 用户在页面上先输入搜索值,后删除搜索值,如果没有如下删除语句,ajaxParams对象不会有改变,还是会用有值时的val进行查询 + // 2. 如果不进行任何判断,仅执行重新定义ajaxParams,会传递like空的查询条件 + + // 所以当没有搜索值时,最好是删除查询条件 + Reflect.deleteProperty(ajaxParams['search_param'], window.xmSelectData[id].textField); + } + + facade.ajax({ + route: source, + data: ajaxParams, + successAlert: false, + }).done(response => { + //这里是success的处理 + var res = window.xmSelectData[id].paging ? response.data : response; + if (window.xmSelectData[id].selected && window.xmSelectData[id].selected !== "undefined") { + var selectedArr = window.xmSelectData[id].selected.split(','); + } + for (var key in res.data) { + if (facade.inArray(res.data[key][window.xmSelectData[id].valueField], selectedArr)) { + res.data[key]["selected"] = true; + } else { + res.data[key]["selected"] = false; + } + } + //回调需要两个参数, 第一个: 数据数组, 第二个: 总页码 + window.xmSelectData[id].paging ? cb(res.data, res.last_page) : cb(res.data); + }).fail(err => { + //这里是error的处理 + cb([], 0); + }); + }; + window.xmSelectObj[id] = xmSelect.render(renderOptions); + } + } else if (window.xmSelectData[id].sourceType === "data") { + renderOptions.data = window.xmSelectData[id].source; + window.xmSelectObj[id] = xmSelect.render(renderOptions); + if (window.xmSelectData[id].selected && window.xmSelectData[id].selected !== "undefined") { + window.xmSelectObj[id].setValue(window.xmSelectData[id].selected.split(',')); + } + } + }, + + /** + * linkageXmSelect,使用xmSelect实现的联动下拉框组件 + * + */ + linkageXmSelectOne: function (item) { + let id = $.trim($(item).data('id'));//id属性 + let name = $.trim($(item).data('name'));//name属性 + if (!id && !name) { + facade.error('linkageXmSelect组件data-id和data-name属性不能同时为空'); + return false; + } + if (!id && name) id = name; + + if (typeof window.linkageXmSelectObj[id] != "undefined") { + facade.error("linkageXmSelect联动下拉框的data-id或data-name属性值" + id + "重复"); + return false; + } + + let textField = $(item).data('textfield') ? $(item).data('textfield') : ''; + if (!textField) { + facade.error('标识为' + id + '的linkageXmSelect联动下拉框组件未定义data-textField属性'); + return false; + } + + let leftId = $(item).data('leftid') ? $(item).data('leftid') : ''; + let rightId = $(item).data('rightid') ? $(item).data('rightid') : ''; + if (!leftId && !rightId) { + facade.error('标识为' + id + '的linkageXmSelect联动下拉框组件data-leftId和data-rightId属性不能同时为空'); + return false; + } + + window.linkageXmSelectJqueryObj[id] = item; + + window.linkageXmSelectData[id] = { + "id": id, + "name": $(item).data('name') ? $(item).data('name') : '', + "leftId": $(item).data('leftid') ? $(item).data('leftid') : '', + "rightId": $(item).data('rightid') ? $(item).data('rightid') : '', + "route": $(item).data('route') ? $(item).data('route') : '', + "url": $(item).data('url') ? $(item).data('url') : '', + "param": $(item).data('param') ? $(item).data('param') : {}, + "customParam": $(item).data('customparam') ? $(item).data('cutomparam') : {}, + "paging": $(item).data('paging') === true, + "pageSize": $(item).data('pagesize') ? $(item).data('pagesize') : 10, + "search": $(item).data('search') ? $(item).data('search') : true, + "searchParam": $(item).data('searchparam') ? $(item).data('searchparam') : {}, + "leftOnchangeParam": $(item).data('leftonchangeparam') ? $(item).data('leftonchangeparam') : {}, + "leftOnchangeCustomParam": $(item).data('leftonchangecustomparam') ? $(item).data('leftonchangecustomparam') : {}, + "textField": textField, + "subTextField": $(item).data('subtextfield') ? $(item).data('subtextfield') : '', + "iconField": $(item).data('iconfield') ? $(item).data('iconfield') : '', + "valueField": $(item).data('valuefield') ? $(item).data('valuefield') : 'id', + "selected": $(item).data('selected') ? $(item).data('selected').toString() : '', + "onchange": $(item).data('onchange') ? $(item).data('onchange') : '', + "placeholder": $(item).data('placeholder') ? $(item).data('placeholder') : '请选择', + "layVerify": $(item).data('layverify') ? $(item).data('layverify') : '', + "layVerType": $(item).data('layvertype') ? $(item).data('layvertype') : '', + "onNum": 0, + "searchKeyword": '', + direction: $(item).data("direction") ? $(item).data("direction") : "auto", + } + + var jsonTypeAttr = ['param', 'customParam', 'searchParam', 'leftOnchangeParam', 'leftOnchangeCustomParam']; + for (key in jsonTypeAttr) { + if (typeof window.linkageXmSelectData[id][jsonTypeAttr[key]] != "object") { + facade.error("data-id=" + id + "的linkageXmSelect联动下拉框组件,data-" + jsonTypeAttr[key] + "属性值需要是一个正确的json字符串"); + return false; + } + } + + if (window.linkageXmSelectData[id].search && $.isEmptyObject(window.linkageXmSelectData[id].searchParam)) { + window.linkageXmSelectData[id].searchParam[textField] = {"condition": "LIKE"}; + } + + window.linkageXmSelectObj[id] = xmSelect.render({ + el: item, + name: window.linkageXmSelectData[id].name, + //配置搜索 + filterable: window.linkageXmSelectData[id].search, + //配置远程分页 + paging: window.linkageXmSelectData[id].paging, + pageSize: window.linkageXmSelectData[id].pageSize, + pageRemote: true, + prop: { + name: window.linkageXmSelectData[id].textField + , value: window.linkageXmSelectData[id].valueField + }, + model: { + label: { + block: { + showIcon: false + } + }, + icon: "hidden" + }, + direction: window.linkageXmSelectData[id].direction, + layVerify: window.linkageXmSelectData[id].layVerify, + layVerType: window.linkageXmSelectData[id].layVerType, + //template是设置下拉框的模板 + template: function (item) { + let template = item.item[window.linkageXmSelectData[id].textField]; + template = window.linkageXmSelectData[id].iconField ? '' + template : template; + template = window.linkageXmSelectData[id].subTextField ? template + '' + item.item[window.linkageXmSelectData[id].subTextField] + '' : template; + return template; + }, + radio: true, + clickClose: true, + tips: window.linkageXmSelectData[id].placeholder, + toolbar: { + show: true, + list: ['CLEAR'] + }, + theme: { + color: localStorage.getItem("theme-color-color") + }, + filterMethod: function (val, item, index, prop) { + if (val) { + //主标题中包含的大小写都搜索出来 + if (window.linkageXmSelectData[id].textField && item[window.linkageXmSelectData[id].textField].toLowerCase().indexOf(val.toLowerCase()) !== -1) { + return true; + //副标题中包含的大小写都搜索出来 + } else if (window.linkageXmSelectData[id].subTextField && item[window.linkageXmSelectData[id].subTextField].toLowerCase().indexOf(val.toLowerCase()) !== -1) { + return true; + } + return false;//其他的就不要了 + } else { + return true; + } + }, + show: function () { + $('.xm-search-input', window.linkageXmSelectData[id].dom) + .val(linkageXmSelectData[id].searchKeyword) + .focus(); + }, + //数据处理 + remoteMethod: function (val, cb, show, pageIndex) { + window.linkageXmSelectData[id].searchKeyword = val; + if (window.linkageXmSelectData[id].leftId) { + if (!$(window.linkageXmSelectJqueryObj[window.linkageXmSelectData[id].leftId]).data('selected')) { + cb([], 0); + return false; + } + } + var remoteSearchParam = {}; + var ajaxParams = {}; + ajaxParams = { + paging: window.linkageXmSelectData[id].paging ? 1 : 0, + page: pageIndex, + limit: window.linkageXmSelectData[id].pageSize, + selected: window.linkageXmSelectData[id].selected, + selectedField: window.linkageXmSelectData[id].valueField, + }; + remoteSearchParam = window.linkageXmSelectData[id].param; + if (window.linkageXmSelectData[id].searchParam) { + for (key in window.linkageXmSelectData[id].searchParam) { + remoteSearchParam[key] = { + value: val, + condition: window.linkageXmSelectData[id].searchParam[key].condition, + } + } + } + if (window.linkageXmSelectData[id].leftId) { + if ($(window.linkageXmSelectJqueryObj[window.linkageXmSelectData[id].leftId]).data('selected')) { + if (window.linkageXmSelectData[window.linkageXmSelectData[id].leftId].onNum <= 1) { + if (window.linkageXmSelectData[id].leftOnchangeParam) { + for (key in window.linkageXmSelectData[id].leftOnchangeParam) { + remoteSearchParam[key] = { + value: $(window.linkageXmSelectJqueryObj[window.linkageXmSelectData[id].leftId]).data('selected'), + condition: window.linkageXmSelectData[id].leftOnchangeParam[key].condition, + } + } + } + if (window.linkageXmSelectData[id].leftOnchangeCustomParam) { + for (key in window.linkageXmSelectData[id].leftOnchangeCustomParam) { + ajaxParams[key] = window.linkageXmSelectData[id].leftOnchangeCustomParam[key]; + } + } + } + } + } + ajaxParams.search_param = remoteSearchParam; + if (window.linkageXmSelectData[id].customParam) { + for (key in window.linkageXmSelectData[id].customParam) { + ajaxParams[key] = window.linkageXmSelectData[id].customParam[key]; + } + } + //val: 搜索框的内容, 不开启搜索默认为空, cb: 回调函数, show: 当前下拉框是否展开, pageIndex: 当前第几页 + facade.ajax({ + route: window.linkageXmSelectData[id].route, + url: window.linkageXmSelectData[id].url, + data: ajaxParams, + successAlert: false, + }).done(response => { + //这里是success的处理 + var res = response.data; + for (var key in res.data) { + if (res.data[key][window.linkageXmSelectData[id].valueField] == window.linkageXmSelectData[id].selected) { + res.data[key]["selected"] = true; + } else { + res.data[key]["selected"] = false; + } + } + //回调需要两个参数, 第一个: 数据数组, 第二个: 总页码 + window.linkageXmSelectData[id].paging ? cb(res.data, res.last_page) : cb(res); + }).fail(err => { + //这里是error的处理 + cb([], 0); + }); + }, + on: function (params) { + window.linkageXmSelectData[id].onNum++; + if (window.linkageXmSelectData[id].selected > 0 && window.linkageXmSelectData[id].onNum <= 1) { + return true; + } + if (!window.linkageXmSelectData[id].rightId) { + return true; + } + // 下面这个数据说明是点击了分页进行了ajax触发了onChange + if (params.change.length == 0 && params.arr.length > 0) { + return true; + } + if (params.arr.length == 0) { + if (window.linkageXmSelectData[id].rightId) { + window.linkageXmSelectObj[window.linkageXmSelectData[id].rightId].update({ + remoteMethod: function (val, cb, show, pageIndex) { + cb([], 0); + window.linkageXmSelectObj[window.linkageXmSelectData[id].rightId].setValue([]); + } + }); + return true; + } + } + window.linkageXmSelectObj[window.linkageXmSelectData[id].rightId].update({ + // val: 搜索框的内容, 不开启搜索默认为空, cb: 回调函数, show: 当前下拉框是否展开, pageIndex: 当前第几页 + remoteMethod: function (val, cb, show, pageIndex) { + window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].searchKeyword = val; + var rightRemoteSearchParam = {}; + rightRemoteSearchParam = window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].param; + if (window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].searchParam) { + for (key in window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].searchParam) { + rightRemoteSearchParam[key] = { + value: val, + condition: window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].searchParam[key].condition, + } + } + } + if (window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].leftOnchangeParam) { + for (key in window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].leftOnchangeParam) { + rightRemoteSearchParam[key] = { + value: params["arr"][0][window.linkageXmSelectData[id].valueField], + condition: window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].leftOnchangeParam[key].condition, + } + } + } + + facade.ajax({ + route: window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].route, + url: window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].url, + data: { + paging: window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].paging ? 1 : 0, + page: pageIndex, + pageSize: window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].pageSize, + search_param: rightRemoteSearchParam + }, + successAlert: false, + }).done(response => { + //这里是success的处理 + var res = response.data; + //回调需要两个参数, 第一个: 数据数组, 第二个: 总页码 + window.linkageXmSelectData[window.linkageXmSelectData[id].rightId].paging ? cb(res.data, res.last_page) : cb(res); + window.linkageXmSelectObj[window.linkageXmSelectData[id].rightId].setValue([]); + }).fail(err => { + //这里是error的处理 + cb([], 0); + window.linkageXmSelectObj[window.linkageXmSelectData[id].rightId].setValue([]); + }); } - options.data = res.data; - window.xmSelectObj[options.name] = xmSelect.render(options); }); - // let params = $(item).data("params"); - // let ajaxParams = {}; - // if (params) { - // params = eval(params); - // for (key in params) { - // ajaxParams[key] = params[key]; - // } - // } - // let paging = $(item).data("paging") === true; - // if (paging) { - // options.remoteSearch = true; - // options.paging = true; - // options.pageRemote = true; - // options.remoteMethod = function(val, cb, show, pageIndex){ - // ajaxParams['page'] = pageIndex; - // if(typeof ajaxParams['search_param'] === "undefined"){ - // ajaxParams['search_param'] = {}; - // } - // ajaxParams['search_param'][options.textField] = { - // "value" : val, - // "condition" : "LIKE" - // }; - // facade.ajax({ - // method: "GET", - // route: source, - // data: ajaxParams, - // successAlert: false - // }).done(function (res) { - // for(k in options.initValue){ - // for(key in res.data.data){ - // if(res.data.data[key][options.valueField].toString() === options.initValue[k].toString()){ - // res.data.data[key].selected = true; - // }else{ - // res.data.data[key].selected = false; - // } - // } - // } - // // 使用selected及时设置回调需要默认选中的项 - // options.initValue = []; - // cb(res.data.data, res.data.last_page); - // }).fail(function(){ - // cb([], 0); - // }); - // }; - // xmSelect.render(options); - // }else{ - // let params = $(item).data("params"); - // let ajaxParams = {}; - // if (params) { - // params = eval(params); - // for (key in params) { - // ajaxParams[key] = params[key]; - // } - // } - // ajaxParams['all_data'] = 1; - // facade.ajax({ - // method: "GET", - // route: source, - // data: ajaxParams, - // successAlert: false - // }).done(function (res) { - // options.data = res.data; - // xmSelect.render(options); - // }); - // } - } else if (sourceType === "data") { - options.data = eval(source); - window.xmSelectObj[options.name] = xmSelect.render(options); + if (window.linkageXmSelectData[id].onchange) { + if (typeof window[window.linkageXmSelectData[id].onchange] === "function") { + window[window.linkageXmSelectData[id].onchange].call(this, params); + } else { + facade.error(window.linkageXmSelectData[id].onchange + "回调函数未定义"); + } + } } }); }, @@ -396,209 +972,208 @@ layui.define([ * } * > */ - linkageSelect: function (parentElem) { - let obj = (typeof parentElem === "undefined") ? $(".linkageSelect") : $(".linkageSelect", parentElem); - layui.each(obj, function (key, item) { - let id = $(item).attr('id');//id属性,必须 - if (!id) { - facade.error('linkageSelect组件未定义id属性'); - } - let showField = $(item).data('showfield') ? $(item).data('showfield') : 'name';//显示的字段,默认是name - let url = $(item).data('url');//下拉框数据源url地址,对应一个数据表的index - let params = $(item).data('params'); - let searchField = $(item).data('searchfield') ? $(item).data('searchfield') : 'pid';//搜索的字段,默认是pid - let searchCondition = $(item).data('searchcondition') ? $(item).data('searchcondition') : '='; - let searchVal = $(item).data('searchval') ? $(item).data('searchval') : 0;//搜索字段的值,默认0,如果只想选某个省下面的城市和地区可以设置这个值 - let selectedVal = $(item).data('selectedval');//选中的值,非必填 - let leftField = $(item).data('leftfield');//左关联字段,为空或者不设置时,表示第一个下拉框 - let rightField = $(item).data('rightfield');//右关联字段,为空或者不设置时,表示最后一个下拉框 - let onchange = $(item).data("onchange") ? $(item).data("onchange") : "";//onchange回调函数名 - if(!leftField && !rightField){ - facade.error("linkageSelect组件的data-leftField和data-rightField属性不能都为空"); + linkageSelectOne: function (item) { + let id = $(item).attr('id');//id属性,必须 + if (!id) { + facade.error('linkageSelect组件未定义id属性'); + return false; + } + let showField = $(item).data('showfield') ? $(item).data('showfield') : 'name';//显示的字段,默认是name + let url = $(item).data('url');//下拉框数据源url地址,对应一个数据表的index + let params = $(item).data('params'); + let searchField = $(item).data('searchfield') ? $(item).data('searchfield') : 'pid';//搜索的字段,默认是pid + let searchCondition = $(item).data('searchcondition') ? $(item).data('searchcondition') : '='; + let searchVal = $(item).data('searchval') ? $(item).data('searchval') : 0;//搜索字段的值,默认0,如果只想选某个省下面的城市和地区可以设置这个值 + let selectedVal = $(item).data('selectedval');//选中的值,非必填 + let leftField = $(item).data('leftfield');//左关联字段,为空或者不设置时,表示第一个下拉框 + let rightField = $(item).data('rightfield');//右关联字段,为空或者不设置时,表示最后一个下拉框 + let onchange = $(item).data("onchange") ? $(item).data("onchange") : "";//onchange回调函数名 + if (!leftField && !rightField) { + facade.error("linkageSelect组件的data-leftField和data-rightField属性不能都为空"); + } + //填充联动的第一个下拉框数据 + if (leftField === "" || leftField === undefined) { + let searchParam; + if (params) { + searchParam = params; + } else { + searchParam = {}; } - //填充联动的第一个下拉框数据 - if (leftField === "" || leftField === undefined) { - let searchParam; - if(params){ - searchParam = params; - }else{ - searchParam = {}; - } - searchParam[searchField] = {}; - searchParam[searchField].value = searchVal; - searchParam[searchField].condition = searchCondition; - facade.ajax({ - method: "GET", - route: url, - data: {search_param: searchParam, all_data: 1}, - successAlert: false - }).done(function (res) { - let optionTips = $(item).children().first().prop("outerHTML"); - $(item).empty(); - $(item).append(optionTips); - let optionHtml, key; - for (key in res.data) { - if (selectedVal === res.data[key]['id']) { - optionHtml = ''; - } else { - optionHtml = ''; - } - - $(item).append(optionHtml); + searchParam[searchField] = {}; + searchParam[searchField].value = searchVal; + searchParam[searchField].condition = searchCondition; + facade.ajax({ + method: "GET", + route: url, + data: {search_param: searchParam, all_data: 1}, + successAlert: false + }).done(function (res) { + let optionTips = $(item).children().first().prop("outerHTML"); + $(item).empty(); + $(item).append(optionTips); + let optionHtml, key; + for (key in res.data) { + if (selectedVal === res.data[key]['id']) { + optionHtml = ''; + } else { + optionHtml = ''; } - layui.form.render('select'); - // 如果第一个下拉框有onchange,就执行onchange - if(onchange){ - var nowData = {}; - nowData.elem = $("#"+id); - nowData.othis = {}; - nowData.value = selectedVal; - window[onchange].call(this, nowData); + + $(item).append(optionHtml); + } + layui.form.render('select'); + // 如果第一个下拉框有onchange,就执行onchange + if (onchange) { + var nowData = {}; + nowData.elem = $("#" + id); + nowData.othis = {}; + nowData.value = selectedVal; + window[onchange].call(this, nowData); + } + }); + } + //监听所有下拉框onchange事件 + if (rightField) { + layui.form.on('select(' + id + ')', function (data) { + if (data.value) { + let rightSearchUrl = $("#" + rightField).data('url'); + let rightParams = $("#" + rightField).data('params'); + let rightSearchField = $("#" + rightField).data('searchfield') ? $("#" + rightField).data('searchfield') : 'pid';//搜索的字段,默认是pid + let rightSearchParam; + if (rightParams) { + rightSearchParam = rightParams; + } else { + rightSearchParam = {} } - }); - } - //监听所有下拉框onchange事件 - if (rightField) { - layui.form.on('select(' + id + ')', function (data) { - if (data.value) { - let rightSearchUrl = $("#" + rightField, parentElem).data('url'); - let rightParams = $("#" + rightField, parentElem).data('params'); - let rightSearchField = $("#" + rightField, parentElem).data('searchfield') ? $("#" + rightField, parentElem).data('searchfield') : 'pid';//搜索的字段,默认是pid - let rightSearchParam; - if(rightParams){ - rightSearchParam = rightParams; - }else{ - rightSearchParam = {} + rightSearchParam[rightSearchField] = {}; + rightSearchParam[rightSearchField].value = data.value; + rightSearchParam[rightSearchField].condition = $("#" + rightField).data('searchcondition') ? $("#" + rightField).data('searchcondition') : "="; + facade.ajax({ + method: "GET", + route: rightSearchUrl, + data: {search_param: rightSearchParam, all_data: 1}, + successAlert: false + }).done(function (res) { + let rightOptionTips = $("#" + rightField).children().first().prop("outerHTML"); + $("#" + rightField).empty(); + $("#" + rightField).append(rightOptionTips); + let rightOptionHtml, key; + for (key in res.data) { + rightOptionHtml = ''; + $("#" + rightField).append(rightOptionHtml); } - rightSearchParam[rightSearchField] = {}; - rightSearchParam[rightSearchField].value = data.value; - rightSearchParam[rightSearchField].condition = $("#" + rightField, parentElem).data('searchcondition') ? $("#" + rightField, parentElem).data('searchcondition') : "="; - facade.ajax({ - method: "GET", - route: rightSearchUrl, - data: {search_param: rightSearchParam, all_data: 1}, - successAlert: false - }).done(function (res) { - let rightOptionTips = $("#" + rightField, parentElem).children().first().prop("outerHTML"); - $("#" + rightField, parentElem).empty(); - $("#" + rightField, parentElem).append(rightOptionTips); - let rightOptionHtml, key; - for (key in res.data) { - rightOptionHtml = ''; - $("#" + rightField, parentElem).append(rightOptionHtml); - } - let nextRightField = $("#" + rightField, parentElem).data('rightfield'); - let nextOptionTips = ""; - while (nextRightField !== "" && nextRightField !== undefined) { - nextOptionTips = $("#" + nextRightField, parentElem).children().first().prop("outerHTML"); - $("#" + nextRightField, parentElem).empty(); - $("#" + nextRightField, parentElem).append(nextOptionTips); - nextRightField = $("#" + nextRightField, parentElem).data('rightfield'); - } - layui.form.render('select'); - - // 如果有onchange 就执行onchage - if(onchange){ - var nowData = {}; - nowData.elem = $("#"+id); - nowData.othis = {}; - nowData.value = selectedVal; - window[onchange].call(this, nowData); - } - }); - } else { - let rightOptionTips = $("#" + rightField, parentElem).children().first().prop("outerHTML"); - $("#" + rightField, parentElem).empty(); - $("#" + rightField, parentElem).append(rightOptionTips); - let nextRightField = $("#" + rightField, parentElem).data('rightfield'); + let nextRightField = $("#" + rightField).data('rightfield'); let nextOptionTips = ""; while (nextRightField !== "" && nextRightField !== undefined) { - nextOptionTips = $("#" + nextRightField, parentElem).children().first().prop("outerHTML"); - $("#" + nextRightField, parentElem).empty(); - $("#" + nextRightField, parentElem).append(nextOptionTips); - nextRightField = $("#" + nextRightField, parentElem).data('rightfield'); + nextOptionTips = $("#" + nextRightField).children().first().prop("outerHTML"); + $("#" + nextRightField).empty(); + $("#" + nextRightField).append(nextOptionTips); + nextRightField = $("#" + nextRightField).data('rightfield'); } layui.form.render('select'); - // 如果有onchange 就执行onchange - if(onchange){ + // 如果有onchange 就执行onchage + if (onchange) { var nowData = {}; - nowData.elem = $("#"+id); + nowData.elem = $("#" + id); nowData.othis = {}; nowData.value = selectedVal; window[onchange].call(this, nowData); } + }); + } else { + let rightOptionTips = $("#" + rightField).children().first().prop("outerHTML"); + $("#" + rightField).empty(); + $("#" + rightField).append(rightOptionTips); + let nextRightField = $("#" + rightField).data('rightfield'); + let nextOptionTips = ""; + while (nextRightField !== "" && nextRightField !== undefined) { + nextOptionTips = $("#" + nextRightField).children().first().prop("outerHTML"); + $("#" + nextRightField).empty(); + $("#" + nextRightField).append(nextOptionTips); + nextRightField = $("#" + nextRightField).data('rightfield'); } - }); - }else{ - // 如果有onchange 就执行onchage - if(onchange){ - layui.form.on('select(' + id + ')', function (data) { + layui.form.render('select'); + + // 如果有onchange 就执行onchange + if (onchange) { var nowData = {}; - nowData.elem = $("#"+id); + nowData.elem = $("#" + id); nowData.othis = {}; nowData.value = selectedVal; window[onchange].call(this, nowData); - }); + } } + }); + } else { + // 如果有onchange 就执行onchage + if (onchange) { + layui.form.on('select(' + id + ')', function (data) { + var nowData = {}; + nowData.elem = $("#" + id); + nowData.othis = {}; + nowData.value = selectedVal; + window[onchange].call(this, nowData); + }); } - //如果有选中值,就请求渲染右侧下拉框 - if (selectedVal !== "" && selectedVal !== undefined) { - if (rightField !== "" && rightField !== undefined) { - let selectedRightSearchUrl = $("#" + rightField, parentElem).data('url'); - let selectedRightParams = $("#" + rightField, parentElem).data('params'); - let selectedRightSearchField = $("#" + rightField, parentElem).data('searchfield') ? $("#" + rightField, parentElem).data('searchfield') : 'pid';//搜索的字段,默认是pid - let selectedRightSearchParam; - if(selectedRightParams){ - selectedRightSearchParam = selectedRightParams; - }else{ - selectedRightSearchParam = {}; - } - selectedRightSearchParam[selectedRightSearchField] = {}; - selectedRightSearchParam[selectedRightSearchField].value = selectedVal; - selectedRightSearchParam[selectedRightSearchField].condition = $("#" + selectedRightSearchField, parentElem).data('searchcondition') ? $("#" + selectedRightSearchField).data('searchcondition') : "="; - facade.ajax({ - method: "GET", - route: selectedRightSearchUrl, - data: {search_param: selectedRightSearchParam, all_data: 1}, - successAlert: false - }).done(function (res) { - let selectedRightOptionTips = $("#" + rightField, parentElem).children().first().prop("outerHTML"); - $("#" + rightField, parentElem).empty(); - $("#" + rightField, parentElem).append(selectedRightOptionTips); - let rightSelectedVal = $("#" + rightField, parentElem).data('selectedval'); - let selectedOptionHtml, key; - for (key in res.data) { - if (rightSelectedVal === res.data[key]['id']) { - selectedOptionHtml = ''; - } else { - selectedOptionHtml = ''; - } - $("#" + rightField, parentElem).append(selectedOptionHtml); + } + //如果有选中值,就请求渲染右侧下拉框 + if (selectedVal !== "" && selectedVal !== undefined) { + if (rightField !== "" && rightField !== undefined) { + let selectedRightSearchUrl = $("#" + rightField).data('url'); + let selectedRightParams = $("#" + rightField).data('params'); + let selectedRightSearchField = $("#" + rightField).data('searchfield') ? $("#" + rightField).data('searchfield') : 'pid';//搜索的字段,默认是pid + let selectedRightSearchParam; + if (selectedRightParams) { + selectedRightSearchParam = selectedRightParams; + } else { + selectedRightSearchParam = {}; + } + selectedRightSearchParam[selectedRightSearchField] = {}; + selectedRightSearchParam[selectedRightSearchField].value = selectedVal; + selectedRightSearchParam[selectedRightSearchField].condition = $("#" + selectedRightSearchField).data('searchcondition') ? $("#" + selectedRightSearchField).data('searchcondition') : "="; + facade.ajax({ + method: "GET", + route: selectedRightSearchUrl, + data: {search_param: selectedRightSearchParam, all_data: 1}, + successAlert: false + }).done(function (res) { + let selectedRightOptionTips = $("#" + rightField).children().first().prop("outerHTML"); + $("#" + rightField).empty(); + $("#" + rightField).append(selectedRightOptionTips); + let rightSelectedVal = $("#" + rightField).data('selectedval'); + let selectedOptionHtml, key; + for (key in res.data) { + if (rightSelectedVal === res.data[key]['id']) { + selectedOptionHtml = ''; + } else { + selectedOptionHtml = ''; } - layui.form.render('select'); + $("#" + rightField).append(selectedOptionHtml); + } + layui.form.render('select'); - // 如果右侧下拉框有选中值和onchange,就执行右侧下拉框的onchange - var rightOnchange = $("#" + rightField, parentElem).data('onchange'); - if (rightSelectedVal && rightOnchange) { - var rightData = {}; - rightData.elem = $("#"+rightField); - rightData.othis = {}; - rightData.value = rightSelectedVal; - window[rightOnchange].call(this, rightData); - } - }); - } + // 如果右侧下拉框有选中值和onchange,就执行右侧下拉框的onchange + var rightOnchange = $("#" + rightField).data('onchange'); + if (rightSelectedVal && rightOnchange) { + var rightData = {}; + rightData.elem = $("#" + rightField); + rightData.othis = {}; + rightData.value = rightSelectedVal; + window[rightOnchange].call(this, rightData); + } + }); } - }); + } }, /** * 上传组件 *
    */ - upload: function (parentElem) { - let obj = (typeof parentElem === "undefined") ? $(".laytpUpload") : $(".laytpUpload", parentElem); - layui.each(obj, function (key, item) { - let name = $(item).data("name"); - if (!name) facade.error("laytpUpload组件未定义name属性"); - let options = { - parentElem: parentElem - , el: item - , name: name - , type: $(item).data("type") ? $(item).data("type") : "local" - , viaServer: $(item).data("viaserver") ? $(item).data("viaserver") : 'via' - , fileCategoryId: $(item).data("filecategoryid") ? $(item).data("filecategoryid") : 0 - , accept: $(item).data("accept") ? $(item).data("accept") : "image" - , width: $(item).data("width") ? $(item).data("width") : "0" - , height: $(item).data("height") ? $(item).data("height") : "0" - , mime: $(item).data("mime") ? $(item).data("mime") : "" - , size: $(item).data("size") ? $(item).data("size") : "" - , multi: $(item).data("multi") === true - , max: $(item).data("max") - , dir: $(item).data("dir") ? $(item).data("dir") : "" - , showUploadBtn: typeof $(item).data("showuploadbtn") === "undefined" || $(item).data("showuploadbtn") === true - , showChoiceBtn: typeof $(item).data("showchoicebtn") === "undefined" || $(item).data("showchoicebtn") === true - , uploaded: $(item).data("uploaded") && $(item).data("uploaded") !== "undefined" ? $(item).data("uploaded") : "" - , uploadedId: $(item).data("uploadedid") && $(item).data("uploadedid") !== "undefined" ? $(item).data("uploadedid") : "" - , uploadedFilename: $(item).data("uploadedfilename")&& $(item).data("uploadedfilename") !== "undefined" ? $(item).data("uploadedfilename") : "" - , uploadedCallback: $(item).data("uploadedcallback") ? $(item).data("uploadedcallback") : "" - }; - options.layVerify = $(item).data("layverify") ? $(item).data("layverify") : ""; - options.layVerType = $(item).data("layvertype") ? $(item).data("layvertype") : ""; - options.params = { - "accept": options.accept - }; - if (options.dir) options.params.dir = options.dir; - if (options.width) options.params.width = options.width; - if (options.height) options.params.height = options.height; - if (options.mime) options.params.mime = options.mime; - if (options.size) options.params.size = options.size; - if (options.type) options.params.upload_type = options.type; - if (options.fileCategoryId) options.params.file_category_id = options.fileCategoryId; - if (options.viaServer === 'via') { - layui.laytpUpload.render(options); - } else { - if (options.type === 'ali-oss') { - layui.laytpUpload.renderStsOss(options); - } else if (options.type === 'qiniu-kodo') { - layui.laytpUpload.renderTokenKodo(options); - } + uploadOne: function (item) { + let name = $(item).data("name"); + if (!name) { + facade.error("laytpUpload组件未定义name属性"); + return false; + } + let options = { + el: item, + name: name, + type: $(item).data("type") ? $(item).data("type") : "local", + viaServer: $(item).data("viaserver") ? $(item).data("viaserver") : 'via', + fileCategoryId: $(item).data("filecategoryid") ? $(item).data("filecategoryid") : 0, + accept: $(item).data("accept") ? $(item).data("accept") : "image", + width: $(item).data("width") ? $(item).data("width") : "0", + height: $(item).data("height") ? $(item).data("height") : "0", + mime: $(item).data("mime") ? $(item).data("mime") : "", + size: $(item).data("size") ? $(item).data("size") : "", + multi: $(item).data("multi") === true, + max: $(item).data("max"), + dir: $(item).data("dir") ? $(item).data("dir") : "", + showUploadBtn: typeof $(item).data("showuploadbtn") === "undefined" || $(item).data("showuploadbtn") === true, + showChoiceBtn: typeof $(item).data("showchoicebtn") === "undefined" || $(item).data("showchoicebtn") === true, + uploaded: $(item).data("uploaded") && $(item).data("uploaded") !== "undefined" ? $(item).data("uploaded") : "", + uploadedId: $(item).data("uploadedid") && $(item).data("uploadedid") !== "undefined" ? $(item).data("uploadedid") : "", + uploadedFilename: $(item).data("uploadedfilename") && $(item).data("uploadedfilename") !== "undefined" ? $(item).data("uploadedfilename") : "", + uploadedCallback: $(item).data("uploadedcallback") ? $(item).data("uploadedcallback") : "" + }; + options.layVerify = $(item).data("layverify") ? $(item).data("layverify") : ""; + options.layVerType = $(item).data("layvertype") ? $(item).data("layvertype") : ""; + options.params = { + "accept": options.accept + }; + if (options.dir) options.params.dir = options.dir; + if (options.width) options.params.width = options.width; + if (options.height) options.params.height = options.height; + if (options.mime) options.params.mime = options.mime; + if (options.size) options.params.size = options.size; + if (options.type) options.params.upload_type = options.type; + if (options.fileCategoryId) options.params.file_category_id = options.fileCategoryId; + if (options.viaServer === 'via') { + layui.laytpUpload.render(options); + } else { + if (options.type === 'ali-oss') { + layui.laytpUpload.renderStsOss(options); + } else if (options.type === 'qiniu-kodo') { + layui.laytpUpload.renderTokenKodo(options); } - }); + } }, /** @@ -694,31 +1268,51 @@ layui.define([ * data-layVerType="tips"//非必设,与layui的lay-verType相同 * >
    */ - icon: function (parentElem) { - let obj = (typeof parentElem === "undefined") ? $(".laytpIcon") : $(".laytpIcon", parentElem); - layui.each(obj, function (key, item) { - let name = $(item).data("name"); - if (!name) facade.error("laytpIcon组件未定义name属性"); - let options = { - el: item - , parentElem: parentElem - , name: name - , value: $(item).data("value") ? $(item).data("value") : "" - , placeholder: $(item).data("placeholder") ? $(item).data("placeholder") : "请选择" - , layVerify: $(item).data("layverify") ? $(item).data("layverify") : "" - , layVerType: $(item).data("layvertype") ? $(item).data("layvertype") : "" - }; - layui.laytpIcon.render(options); - }); + iconOne: function (item) { + let name = $(item).data("name"); + if (!name) { + facade.error("laytpIcon组件未定义name属性"); + return false; + } + let options = { + el: item + , name: name + , value: $(item).data("value") ? $(item).data("value") : "" + , placeholder: $(item).data("placeholder") ? $(item).data("placeholder") : "请选择" + , layVerify: $(item).data("layverify") ? $(item).data("layverify") : "" + , layVerType: $(item).data("layvertype") ? $(item).data("layvertype") : "" + }; + layui.laytpIcon.render(options); }, /** * 时间选择器 * */ - laydate: function (parentElem) { - // return true; - let obj = (typeof parentElem === "undefined") ? $("input[type='text']").filter(".laydate") : $("input[type='text']", parentElem).filter(".laydate"); - layui.each(obj, function (key, item) { - let elem = item; - let type = $(item).data('type') ? $(item).data('type') : 'datetime'; - let isRange = $(item).data('isrange'); - let doneFun = $(item).data('done'); - layui.laydate.render({ - elem: elem //指定元素 - , type: type - , range: isRange - , done: function(value, date, endDate){ - if(doneFun){ - window[doneFun].call(this, value, date, endDate); - } - // doneFun(value, date, endDate); - // console.log(value); //得到日期生成的值,如:2017-08-18 - // console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0} - // console.log(endDate); //得结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。 + laydateOne: function (item) { + var obj, el; + + if (typeof item == "string") { + el = ($('.laydate[id="' + item + '"]').length == 0) ? '.laydate[name="' + item + '"]' : '.laydate[id="' + item + '"]'; + } else { + el = item; + } + + obj = $(el); + let id = obj.attr('id'); + if(!id){ + facade.error('laydate时间选择器没有定义id属性'); + return false; + } + let type = obj.data('type') ? obj.data('type') : 'datetime'; + let isRange = obj.data('isrange'); + let doneFun = obj.data('done'); + let shortcuts = obj.data('shortcuts'); + if(isRange){ + $('#' + obj.attr('id')).css('width','292px'); + $('#' + obj.attr('id')).parent().removeClass('layui-input-inline').addClass('layui-input-block'); + } + $('#' + obj.attr('id')).attr('autocomplete','off'); + layui.laydate.render({ + elem: '#' + obj.attr('id') //指定元素 + , type: type + , range: isRange + , rangeLinked: true + , shortcuts: layui.react.data[shortcuts] + , done: function (value, date, endDate) { + if (doneFun) { + window[doneFun].call(this, value, date, endDate); } - }); + // doneFun(value, date, endDate); + // console.log(value); //得到日期生成的值,如:2017-08-18 + // console.log(date); //得到日期时间对象:{year: 2017, month: 8, date: 18, hours: 0, minutes: 0, seconds: 0} + // console.log(endDate); //得到结束的日期时间对象,开启范围选择(range: true)才会返回。对象成员同上。 + } }); }, /** - * 颜色选择器 + * 颜色选择器,colorPicker *
    */ - colorPicker: function (parentElem) { - let obj = (typeof parentElem === "undefined") ? $("div").filter(".colorPicker") : $("div", parentElem).filter(".colorPicker"); - layui.each(obj, function (key, item) { - let name = $(item).data("name"); - let id = $(item).data("id") ? $(item).data("id") : name; - let colorPickerTemplate = - '
    ' + - ' ' + - '
    ' + - '
    ' + - '
    ' + - '
    ' - ; - $(item).html(colorPickerTemplate); - - let options = {}; - options.elem = "#color_picker_" + id; - let color = $(item).data("color"); - if (color) { - options.color = color; - $("#" + id).val(color); - } - let format = $(item).data("format"); - if (format) options.format = format; - let alpha = $(item).data("alpha"); - if (alpha) options.alpha = alpha; - let predefine = $(item).data("predefine"); - if (predefine) options.predefine = predefine; - let colors = $(item).data("colors"); - if (colors) options.colors = eval(colors); - options.size = 'xs'; - - options.change = function (color) { - $("#" + id).val(color); - }; + colorPickerOne: function (item) { + var obj, el; - options.done = function (color) { - $("#" + id).val(color); - }; - layui.colorpicker.render(options); - }); - }, + if (typeof item == "string") { + el = ($('.colorPicker[data-id="' + item + '"]').length == 0) ? '.colorPicker[data-name="' + item + '"]' : '.colorPicker[data-id="' + item + '"]'; + } else { + el = item; + } - /** - * 编辑器 - * 此方法已废弃,实现方式变更,使用iframe调用编辑器页面进行展示 - * 原因:多种编辑器在单页面下进行加载展示,会有js、css冲突的情况,改成iframe就不会出现此问题 - */ - // editorRender: function (parentElem) { - // let obj = (typeof parentElem === "undefined") ? $(".editor") : $(".editor", parentElem); - // layui.each(obj, function (key, item) { - // let type = $(item).data('type'); - // let id = $(item).attr('id'); - // layui.use(type, function () { - // layui[type].render(id, parentElem); - // }); - // }); - // }, + obj = $(el); + let name = obj.data("name"); + let id = obj.data("id") ? obj.data("id") : name; + let colorPickerTemplate = + '
    ' + + ' ' + + '
    ' + + '
    ' + + '
    ' + + '
    ' + ; + obj.html(colorPickerTemplate); + + let options = {}; + options.elem = "#color_picker_" + id; + let color = obj.data("color"); + if (color) { + options.color = color; + $("#" + id).val(color); + } + let format = obj.data("format"); + if (format) options.format = format; + let alpha = obj.data("alpha"); + if (alpha) options.alpha = alpha; + let predefine = obj.data("predefine"); + if (predefine) options.predefine = predefine; + let colors = obj.data("colors"); + if (colors) options.colors = eval(colors); + options.size = 'xs'; + + options.change = function (color) { + $("#" + id).val(color); + }; + + options.done = function (color) { + $("#" + id).val(color); + }; + layui.colorpicker.render(options); + }, }; /** * 渲染所有的表单元素 */ - laytpForm.render = function (parentElem, callback) { + laytpForm.render = function (callback) { //执行表单初始化方法 layui.each(laytpForm.initData, function (key, item) { if (typeof item == "function") { - item(parentElem); + item(); } }); @@ -850,6 +1451,445 @@ layui.define([ }); }; + /** + * 渲染某一个具体的表单元素 + * @param item 需要渲染的jquery对象 + * @param formType 表单元素的class标识 + */ + laytpForm.renderOne = function (item, formType) { + var funName = facade.underlineToCamel(formType) + "One"; + if (typeof layui.laytpForm.initDataOne[funName] == "function") { + layui.laytpForm.initData[options.onchange].call(this, item); + } + }; + + /** + * 渲染某一个具体的select + * @param item 需要渲染的jquery对象 + */ + laytpForm.renderSelect = function (item) { + layui.laytpForm.initDataOne['selectOne'].call(this, item); + }; + + /** + * 渲染某一个具体的xmSelect + * @param item 需要渲染的jquery对象 + */ + laytpForm.renderXmSelect = function (item) { + layui.laytpForm.initDataOne['xmSelectOne'].call(this, item); + }; + + /** + * 动态更新某一个具体的xmSelect + * @param id xmSelect的id属性值 + * @param options object,需要更新的值 + */ + laytpForm.updateXmSelect = function (id, options) { + window.xmSelectData[id] = { + id: options.hasOwnProperty('id') ? options.id : window.xmSelectData[id].id, + name: options.hasOwnProperty('name') ? options.name : window.xmSelectData[id].name, + sourceType: options.hasOwnProperty('sourceType') ? options.sourceType : window.xmSelectData[id].sourceType, + source: options.hasOwnProperty('source') ? options.source : window.xmSelectData[id].source, + param: options.hasOwnProperty('param') ? options.param : window.xmSelectData[id].param, + customParam: options.hasOwnProperty('customParam') ? options.customParam : window.xmSelectData[id].customParam, + search: options.hasOwnProperty('search') ? options.search : window.xmSelectData[id].search, + searchParam: options.hasOwnProperty('search') ? options.search : window.xmSelectData[id].search, + searchCustomParam: options.hasOwnProperty('searchCustomParam') ? options.searchCustomParam : window.xmSelectData[id].searchCustomParam, + textField: options.hasOwnProperty('textField') ? options.textField : window.xmSelectData[id].textField, + subTextField: options.hasOwnProperty('subTextField') ? options.subTextField : window.xmSelectData[id].subTextField, + valueField: options.hasOwnProperty('valueField') ? options.valueField : window.xmSelectData[id].valueField, + iconField: options.hasOwnProperty('iconField') ? options.iconField : window.xmSelectData[id].iconField, + sourceTree: options.hasOwnProperty('sourceTree') ? options.sourceTree : window.xmSelectData[id].sourceTree, + treeType: options.hasOwnProperty('treeType') ? options.treeType : window.xmSelectData[id].treeType, + onchange: options.hasOwnProperty('onchange') ? options.onchange : window.xmSelectData[id].onchange, + paging: options.hasOwnProperty('paging') ? options.paging : window.xmSelectData[id].paging, + pageSize: options.hasOwnProperty('pageSize') ? options.pageSize : window.xmSelectData[id].pageSize, + radio: options.hasOwnProperty('radio') ? options.radio : window.xmSelectData[id].radio, + strict: options.hasOwnProperty('strict') ? options.strict : (options.hasOwnProperty('radio') ? !(options.radio === true) : window.xmSelectData[id].strict), + selected: options.hasOwnProperty('selected') ? options.selected : window.xmSelectData[id].selected, + max: options.hasOwnProperty('max') ? options.max : window.xmSelectData[id].max, + direction: options.hasOwnProperty('direction') ? options.direction : window.xmSelectData[id].direction, + layVerify: options.hasOwnProperty('layVerify') ? options.layVerify : window.xmSelectData[id].layVerify, + layVerType: options.hasOwnProperty('layVerType') ? options.layVerType : window.xmSelectData[id].layVerType, + placeholder: options.hasOwnProperty('placeholder') ? options.placeholder : window.xmSelectData[id].placeholder, + searchKeyword: '', + onNum: 0, + } + + if (window.xmSelectData[id].sourceType != 'data') { + var jsonTypeAttr = ['param', 'customParam', 'searchParam', 'searchCustomParam']; + for (key in jsonTypeAttr) { + if (typeof window.xmSelectData[id][jsonTypeAttr[key]] != "object") { + facade.error(id + "在调用updateXmSelect时, " + jsonTypeAttr[key] + "属性值需要是一个对象"); + return false; + } + } + } + + if (window.xmSelectData[id].sourceType == 'data') { + if (typeof window.xmSelectData[id].source != "object") { + facade.error(id + '在调用updateXmSelect时,source属性值需要是一个对象'); + return false; + } + } + + // 定义树形结构渲染参数 + let renderTreeOptions = {}; + // 定义级联模式渲染参数 + let renderCascaderOptions = {}; + // 赋值树形结构渲染参数和级联模式渲染参数 + if (window.xmSelectData[id].sourceTree) { + if (window.xmSelectData[id].treeType === 'tree') { + renderTreeOptions = { + //是否显示树状结构 + show: true, + //是否展示三角图标 + showFolderIcon: true, + //是否显示虚线 + showLine: true, + //间距 + indent: 20, + //默认展开节点的数组, 为 true 时, 展开所有节点 + expandedKeys: true, + //是否严格遵守父子模式 + strict: window.xmSelectData[id].strict, + //是否开启极简模式 + simple: true, + clickExpand: false, + clickCheck: true, + }; + } else if (window.xmSelectData[id].treeType === 'tree-group') { + renderTreeOptions = { + //是否显示树状结构 + show: false, + //是否展示三角图标 + showFolderIcon: true, + //是否显示虚线 + showLine: true, + //间距 + indent: 20, + //默认展开节点的数组, 为 true 时, 展开所有节点 + expandedKeys: true, + //是否严格遵守父子模式 + strict: window.xmSelectData[id].strict, + //是否开启极简模式 + simple: true, + clickExpand: false, + clickCheck: true, + }; + } else { + renderCascaderOptions.cascader = { + show: true, + indent: 200, + //是否严格遵守父子模式 + strict: window.xmSelectData[id].strict, + }; + } + } + // 定义渲染参数 + let renderOptions = { + language: 'zn', + data: [], + filterable: true, + filterMethod: function (val, item, index, prop) { + if (val) { + //主标题中包含的大小写都搜索出来 + if (window.xmSelectData[id].textField && item[window.xmSelectData[id].textField].toLowerCase().indexOf(val.toLowerCase()) !== -1) { + return true; + //副标题中包含的大小写都搜索出来 + } else if (window.xmSelectData[id].subTextField && item[window.xmSelectData[id].subTextField].toLowerCase().indexOf(val.toLowerCase()) !== -1) { + return true; + } + return false;//其他的就不要了 + } else { + return true; + } + }, + radio: window.xmSelectData[id].radio, + searchTips: "输入关键字进行搜索", + maxMethod: function (selectedData) { + facade.error("最多可选" + selectedData.length + "个数据"); + }, + layVerify: window.xmSelectData[id].layVerify, + layVerType: window.xmSelectData[id].layVerType, + clickClose: window.xmSelectData[id].radio, + tips: window.xmSelectData[id].placeholder, + toolbar: { + show: true, + list: !(window.xmSelectData[id].radio === true) ? ['ALL', 'REVERSE', 'CLEAR'] : ['CLEAR'] + }, + theme: { + color: localStorage.getItem("theme-color-color") + }, + direction: window.xmSelectData[id].direction, + textField: window.xmSelectData[id].textField, + subTextField: window.xmSelectData[id].subTextField, + valueField: window.xmSelectData[id].valueField, + iconField: window.xmSelectData[id].iconField, + sourceTree: window.xmSelectData[id].sourceTree, + treeType: window.xmSelectData[id].treeType, + paging: window.xmSelectData[id].paging, + pageSize: window.xmSelectData[id].pageSize, + show: function () { + $('.xm-search-input', xmSelectObj[id].dom) + .val(xmSelectData[id].searchKeyword) + .focus(); + }, + on: function (params) { + window.xmSelectData[id].onNum++; + if (window.xmSelectData[id].onchange) { + if (typeof window[window.xmSelectData[id].onchange] === "function") { + if (!window.xmSelectData[id].selected) { + window[window.xmSelectData[id].onchange].call(this, params); + } else { + if (window.xmSelectData[id].paging) { + if (window.xmSelectData[id].onNum > 1) { + window[window.xmSelectData[id].onchange].call(this, params); + } + } else { + window[window.xmSelectData[id].onchange].call(this, params); + } + } + } else { + facade.error(window.xmSelectData[id].onchange + "回调函数未定义"); + } + } + }, + model: { + label: { + block: { + template: function (item) { + let template = item[window.xmSelectData[id].textField]; + template = window.xmSelectData[id].iconField ? '' + template : template; + return template; + }, + showIcon: !(window.xmSelectData[id].radio === true) + }, + }, + icon: (window.xmSelectData[id].radio === true && !window.xmSelectData[id].sourceTree) ? "hidden" : "show", + }, + template: function (item) { + let template = item.item[window.xmSelectData[id].textField]; + template = window.xmSelectData[id].iconField ? '' + template : template; + if (window.xmSelectData[id].subTextField.indexOf('.') !== -1) { + var subTextFieldArr = window.xmSelectData[id].subTextField.split('.'); + if (item.item[subTextFieldArr[0]]) { + template = template + '' + item.item[subTextFieldArr[0]][subTextFieldArr[1]] + ''; + } + } else { + template = window.xmSelectData[id].subTextField ? template + '' + item.item[window.xmSelectData[id].subTextField] + '' : template; + } + return template; + }, + prop: { + name: window.xmSelectData[id].textField + , value: window.xmSelectData[id].valueField + }, + tree: renderTreeOptions, + cascader: renderCascaderOptions, + autoRow: true, // 如果选中的项目过多,会自动变动输入框的高度 + }; + + // 根据数据来源的不同,进行不同方式的渲染xmSelect组件 + if (window.xmSelectData[id].sourceType === "route") { + // 只要是route方式获取数据进行渲染组件,那么就需要先组合查询条件 + let ajaxParams = {}; + var param, customParam, searchParam, searchCustomParam = {}; + var key; + ajaxParams['search_param'] = {}; + if (window.xmSelectData[id].selected && window.xmSelectData[id].selected !== "undefined") { + ajaxParams.selected = window.xmSelectData[id].selected.split(','); + ajaxParams.selectedField = window.xmSelectData[id].valueField; + } + if (window.xmSelectData[id].param) { + param = window.xmSelectData[id].param; + for (key in param) { + ajaxParams['search_param'][key] = param[key]; + } + } + if (window.xmSelectData[id].customParam) { + customParam = window.xmSelectData[id].customParam; + for (key in customParam) { + ajaxParams[key] = customParam[key]; + } + } + + // 如果是树形结构的数据,是先进行ajax请求,然后渲染组件 + if (window.xmSelectData[id].sourceTree) { + ajaxParams.is_tree = 1; + // 如果开启了search且searchParam或者searchCustomParam有值,就需要开启远程搜索 + if (window.xmSelectData[id].search && (window.xmSelectData[id].searchParam || window.xmSelectData[id].searchCustomParam)) { + renderOptions.remoteSearch = true; + renderOptions.remoteMethod = function (val, cb, show, pageIndex) { + if (window.xmSelectData[id].searchParam) { + searchParam = window.xmSelectData[id].searchParam; + for (var searchParamKey in searchParam) { + ajaxParams['search_param'][searchParamKey] = searchParam[searchParamKey]; + ajaxParams['search_param'][searchParamKey]['value'] = val; + } + } + + if (window.xmSelectData[id].searchCustomParam) { + searchCustomParam = window.xmSelectData[id].searchCustomParam; + for (var searchCustomParamKey in searchCustomParam) { + ajaxParams[searchCustomParamKey] = searchCustomParam[searchCustomParamKey]; + ajaxParams[searchCustomParamKey]['value'] = val; + } + } + + if (val) { + if ($.isEmptyObject(window.xmSelectData[id].searchParam)) { + ajaxParams['search_param'][window.xmSelectData[id].textField] = { + "condition": "LIKE", + "value": val + }; + } + } else { + // 1. 用户在页面上先输入搜索值,后删除搜索值,如果没有如下删除语句,ajaxParams对象不会有改变,还是会用有值时的val进行查询 + // 2. 如果不进行任何判断,仅执行重新定义ajaxParams,会传递like空的查询条件 + + // 所以当没有搜索值时,最好是删除查询条件 + Reflect.deleteProperty(ajaxParams['search_param'], window.xmSelectData[id].textField); + } + } + } + facade.ajax({ + method: "GET", + route: window.xmSelectData[id].source, + data: ajaxParams, + successAlert: false + }).done(function (res) { + renderOptions.paging = 0; // 是否分页的标识使用0和1,否则是一个字符串传递到后台 + renderOptions.data = res.data; + window.xmSelectObj[id].update(renderOptions); + if (window.xmSelectData[id].selected && window.xmSelectData[id].selected !== "undefined") { + window.xmSelectObj[id].setValue(window.xmSelectData[id].selected.split(',')); + } + }); + } else { + // 非树形结构渲染组件,需要开启远程分页进行组件渲染 + renderOptions.pageRemote = true; + renderOptions.remoteMethod = function (val, cb, show, pageIndex) { + window.xmSelectData[id].searchKeyword = val; + //val: 搜索框的内容, 不开启搜索默认为空, cb: 回调函数, show: 当前下拉框是否展开, pageIndex: 当前第几页 + ajaxParams.paging = window.xmSelectData[id].paging ? 1 : 0; + ajaxParams.page = pageIndex; + ajaxParams.limit = window.xmSelectData[id].pageSize; + + if (window.xmSelectData[id].searchParam) { + searchParam = window.xmSelectData[id].searchParam; + for (var searchParamKey in searchParam) { + ajaxParams['search_param'][searchParamKey] = searchParam[searchParamKey]; + ajaxParams['search_param'][searchParamKey]['value'] = val; + } + } + + if (window.xmSelectData[id].searchCustomParam) { + searchCustomParam = window.xmSelectData[id].searchCustomParam; + for (var searchCustomParamKey in searchCustomParam) { + ajaxParams[searchCustomParamKey] = searchCustomParam[searchCustomParamKey]; + ajaxParams[searchCustomParamKey]['value'] = val; + } + } + + if (val) { + if ($.isEmptyObject(window.xmSelectData[id].searchParam)) { + ajaxParams['search_param'][window.xmSelectData[id].textField] = { + "condition": "LIKE", + "value": val + }; + } + } else { + // 1. 用户在页面上先输入搜索值,后删除搜索值,如果没有如下删除语句,ajaxParams对象不会有改变,还是会用有值时的val进行查询 + // 2. 如果不进行任何判断,仅执行重新定义ajaxParams,会传递like空的查询条件 + + // 所以当没有搜索值时,最好是删除查询条件 + Reflect.deleteProperty(ajaxParams['search_param'], window.xmSelectData[id].textField); + } + + facade.ajax({ + route: source, + data: ajaxParams, + successAlert: false, + }).done(response => { + //这里是success的处理 + var res = window.xmSelectData[id].paging ? response.data : response; + if (window.xmSelectData[id].selected && window.xmSelectData[id].selected !== "undefined") { + var selectedArr = window.xmSelectData[id].selected.split(','); + } + for (var key in res.data) { + if (facade.inArray(res.data[key][window.xmSelectData[id].valueField], selectedArr)) { + res.data[key]["selected"] = true; + } else { + res.data[key]["selected"] = false; + } + } + //回调需要两个参数, 第一个: 数据数组, 第二个: 总页码 + window.xmSelectData[id].paging ? cb(res.data, res.last_page) : cb(res.data); + }).fail(err => { + //这里是error的处理 + cb([], 0); + }); + }; + window.xmSelectObj[id].update(renderOptions); + } + } else if (window.xmSelectData[id].sourceType === "data") { + renderOptions.data = window.xmSelectData[id].source; + window.xmSelectObj[id].update(renderOptions); + if (window.xmSelectData[id].selected && window.xmSelectData[id].selected !== "undefined") { + window.xmSelectObj[id].setValue(window.xmSelectData[id].selected.split(',')); + } + } + }; + + /** + * 渲染某一个具体的linkageXmSelect + * @param item 需要渲染的jquery对象 + */ + laytpForm.renderLinkageXmSelect = function (item) { + layui.laytpForm.initDataOne['linkageXmSelectOne'].call(this, item); + }; + + /** + * 渲染某一个具体的linkageSelect + * @param item 需要渲染的jquery对象 + */ + laytpForm.renderLinkageSelect = function (item) { + layui.laytpForm.initDataOne['linkageSelectOne'].call(this, item); + }; + + /** + * 渲染某一个具体的upload + * @param item 需要渲染的jquery对象 + */ + laytpForm.renderUpload = function (item) { + layui.laytpForm.initDataOne['uploadOne'].call(this, item); + }; + + /** + * 渲染某一个具体的icon + * @param item 需要渲染的jquery对象 + */ + laytpForm.renderIcon = function (item) { + layui.laytpForm.initDataOne['iconOne'].call(this, item); + }; + + /** + * 渲染某一个具体的laydate + * @param item 需要渲染的jquery对象 + */ + laytpForm.renderLaydate = function (item) { + layui.laytpForm.initDataOne['laydateOne'].call(this, item); + }; + + /** + * 渲染某一个具体的ColorPicker + * @param item 需要渲染的jquery对象 + */ + laytpForm.renderColorPicker = function (item) { + layui.laytpForm.initDataOne['colorPickerOne'].call(this, item); + }; + /** * 数据表格表单元素的渲染 */ @@ -1051,9 +2091,9 @@ layui.define([ successAlert: true }).done(function (res) { if (res.code === 0) { - if(callback){ + if (callback) { eval(callback + "()"); - }else{ + } else { funController.tableRender(); } } @@ -1124,7 +2164,13 @@ layui.define([ */ laytpSearchFormReset: function () { $(document).off("click", ".laytp-search-form-reset").on("click", ".laytp-search-form-reset", function () { - $(".layui-form").trigger("reset"); + var thisObj = $(this); + var formObj = thisObj.closest("form"); + // 设置这个表单下所有xmSelect的值为空 + $(".xmSelect", formObj).each(function (index, item) { + xmSelectObj[$(item).data('name')].setValue([]); + }); + formObj.trigger("reset"); funController.tableRender(); }); }, @@ -1134,7 +2180,13 @@ layui.define([ */ laytpRecycleSearchFormReset: function () { $(document).off("click", ".laytp-recycle-search-form-reset").on("click", ".laytp-recycle-search-form-reset", function () { - $(".layui-form").trigger("reset"); + var thisObj = $(this); + var formObj = thisObj.closest("form"); + // 设置这个表单下所有xmSelect的值为空 + $(".xmSelect", formObj).each(function (index, item) { + xmSelectObj[$(item).data('name')].setValue([]); + }); + formObj.trigger("reset"); funRecycleController.tableRender(); }); }, diff --git a/public/static/component/laytp/module/menu.js b/public/static/component/laytp/module/laytpMenu.js similarity index 52% rename from public/static/component/laytp/module/menu.js rename to public/static/component/laytp/module/laytpMenu.js index ca32991f271bbb8abe41ac7f2d1fc8215ca1bc47..fbab80756d9f9b89396a6565377002b4fc5f6c65 100644 --- a/public/static/component/laytp/module/menu.js +++ b/public/static/component/laytp/module/laytpMenu.js @@ -1,16 +1,16 @@ -layui.define(['table', 'jquery', 'element','facade'], function(exports) { +layui.define(['table', 'jquery', 'element', 'facade'], function (exports) { "use strict"; - var MOD_NAME = 'menu', + var MOD_NAME = 'laytpMenu', $ = layui.jquery, element = layui.element; - var laytpMenu = function(opt) { + var laytpMenu = function (opt) { this.option = opt; }; - // 供外部调用的,渲染菜单方法 - laytpMenu.prototype.render = function(opt) { + laytpMenu.prototype.render = function (opt) { + var option = { elem: opt.elem, async: opt.async, @@ -25,35 +25,43 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { height: opt.height, theme: opt.theme, data: opt.data ? opt.data : [], - change: opt.change ? opt.change : function() {}, - done: opt.done ? opt.done : function() {} - }; + change: opt.change ? opt.change : function () { }, + done: opt.done ? opt.done : function () { } + } + var tempDone = option.done; + option.done = function(){ + if (option.control) { + rationalizeHeaderControlWidthAuto(option); + } + tempDone(); + } + if (option.async) { if (option.method === "GET") { - getData(option.url).then(function(data) { + getData(option.url).then(function (data) { option.data = data; renderMenu(option); }); } else { - postData(option.url).then(function(data) { + postData(option.url).then(function (data) { option.data = data; renderMenu(option); }); } } else { - //renderMenu中需要调用done事件,done事件中需要menu对象,但是此时还未返回menu对象,做个延时提前返回对象 - window.setTimeout(function() { renderMenu(option);}, 500); + // 延时返回,和 javascript 执行时序关联 + window.setTimeout(function () { renderMenu(option); }, 500); } - + // 处理高度 - $("#"+opt.elem).height(option.height); - return new laytpMenu(opt); - }; + $("#" + opt.elem).height(option.height) + return new laytpMenu(option); + } - // 任意左侧菜单绑定点击事件 - laytpMenu.prototype.click = function(clickEvent) { + // 任意左侧菜单绑定点击事件 + laytpMenu.prototype.click = function (clickEvent) { var _this = this; - $(document).off("click", "#" + _this.option.elem + " .site-demo-active").on("click", "#" + _this.option.elem + " .site-demo-active", function() { + $(document).off("click", "#" + _this.option.elem + " .site-demo-active").on("click", "#" + _this.option.elem + " .site-demo-active", function() { var dom = $(this); var data = { menuId: dom.attr("menu-id"), @@ -71,17 +79,19 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { } if (doms != null) { var domss = hash(doms); - if(domss!=null){ - if (domss.text() != '') { - data['menuPath'] = domss.find("span").text() + " / " + data['menuPath']; - }} + if (domss != null) { + if (domss.text() != '') { + data['menuPath'] = domss.find("span").text() + " / " + data['menuPath']; + } + } } if (domss != null) { var domsss = hash(domss); - if(domsss!=null){ - if (domsss.text() != '') { - data['menuPath'] = domsss.find("span").text() + " / " + data['menuPath']; - }} + if (domsss != null) { + if (domsss.text() != '') { + data['menuPath'] = domsss.find("span").text() + " / " + data['menuPath']; + } + } } if ($("#" + _this.option.elem).is(".laytp-nav-mini")) { if (_this.option.accordion) { @@ -92,7 +102,7 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { } clickEvent(dom, data); }) - }; + } function hash(dom) { var d = dom.parent().parent().prev(); @@ -102,16 +112,16 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { return d; } - // 样式选择 - laytpMenu.prototype.skin = function(skin) { + // 样式选择 + laytpMenu.prototype.skin = function (skin) { var menu = $(".laytp-nav-tree[lay-filter='" + this.option.elem + "']").parent(); menu.removeClass("dark-theme"); menu.removeClass("light-theme"); menu.addClass(skin); - }; + } - // 选择没有子级的菜单节点 - laytpMenu.prototype.selectItem = function(laytpId) { + // 选择没有子级的菜单节点 + laytpMenu.prototype.selectItem = function (laytpId) { if (this.option.control != false) { $("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents(".layui-side-scroll ").find("ul").css({ display: "none" @@ -127,26 +137,59 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { $("#" + this.option.control).find("[menu-id='" + controlId + "']").addClass("layui-this"); } } - if (this.option.accordion === true) { - $("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents(".laytp-nav-tree").find(".layui-nav-itemed").removeClass( - "layui-nav-itemed"); - } + $("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents(".laytp-nav-tree").find(".layui-this").removeClass( "layui-this"); if (!$("#" + this.option.elem).is(".laytp-nav-mini")) { - $("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents(".layui-nav-item").addClass("layui-nav-itemed"); - $("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents("dd").addClass("layui-nav-itemed"); + var openEle = null; + var openEleHeight = 0; + $($("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parents('.layui-nav-child').get().reverse()).each(function () { + if (!$(this).parent().is('.layui-nav-itemed')) { + if (openEleHeight == 0) { + openEle = $(this); + } else { + $(this).parent().addClass('layui-nav-itemed'); + $(this).css({ + height: 'auto', + }); + } + openEleHeight += $(this).children("dd").length * 48; + } + }); + if (this.option.accordion) { + if (openEleHeight > 0) { + var currentDom = openEle.parent().siblings('.layui-nav-itemed').children(".layui-nav-child"); + currentDom.animate({ + height: "0px" + }, 240, function () { + currentDom.css({ + height: "auto" + }); + $(this).parent().removeClass("layui-nav-itemed"); + $(this).find('.layui-nav-itemed').removeClass("layui-nav-itemed"); + }); + } + } + if (openEleHeight > 0) { + openEle.parent().addClass("layui-nav-itemed"); + openEle.height(0); + openEle.animate({ + height: openEleHeight + "px" + }, 240, function () { + $(this).css({ height: 'auto' }); + }); + } } $("#" + this.option.elem + " a[menu-id='" + laytpId + "']").parent().addClass("layui-this"); } var activeMenus; - // 手机模式下,右下角按钮点击展开收缩左侧菜单事件 - laytpMenu.prototype.collaspe = function(time) { + // 手机模式下,右下角按钮点击展开收缩左侧菜单事件 + laytpMenu.prototype.collapse = function (time) { var elem = this.option.elem; var config = this.option; if ($("#" + this.option.elem).is(".laytp-nav-mini")) { - $.each(activeMenus, function(i, item) { + $.each(activeMenus, function (i, item) { $("#" + elem + " a[menu-id='" + $(this).attr("menu-id") + "']").parent().addClass("layui-nav-itemed"); }); $("#" + this.option.elem).removeClass("laytp-nav-mini"); @@ -154,6 +197,14 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { width: "220px" }, 150); isHoverMenu(false, config); + var that = this; + $("#" + this.option.elem) + .promise() + .done(function () { + if (that.option.control) { + rationalizeHeaderControlWidth(that.option); + } + }) } else { activeMenus = $("#" + this.option.elem).find(".layui-nav-itemed>a"); $("#" + this.option.elem).find(".layui-nav-itemed").removeClass("layui-nav-itemed"); @@ -161,38 +212,42 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { $("#" + this.option.elem).animate({ width: "60px" }, 400); - isHoverMenu(true, config); + var that = this; + $("#" + this.option.elem) + .promise() + .done(function () { + isHoverMenu(true, config); + if (that.option.control) { + rationalizeHeaderControlWidth(that.option); + } + }) } - }; - - function getData(route) { - var defer = $.Deferred(); - var contact = (route.indexOf('?') > -1) ? "&" : "?"; - facade.ajax({ - type: 'GET', - route: route + contact + "fresh=" + Math.random(), - successAlert: false - }).done(function(result){ - defer.resolve(result); - }); - // $.get(localStorage.getItem("adminApiDomain") + url + contact + "fresh=" + Math.random(), function(result) { - // defer.resolve(result) - // }); - return defer.promise(); } - function postData(url) { - var defer = $.Deferred(); - $.post(localStorage.getItem("staticDomain") + url + "?fresh=" + Math.random(), function(result) { - defer.resolve(result) - }); - return defer.promise(); - } + function getData(route) { + var defer = $.Deferred(); + var contact = (route.indexOf('?') > -1) ? "&" : "?"; + facade.ajax({ + type: 'GET', + route: route + contact + "fresh=" + Math.random(), + successAlert: false + }).done(function(result){ + defer.resolve(result); + }); + return defer.promise(); + } + + function postData(url) { + var defer = $.Deferred(); + $.post(localStorage.getItem("staticDomain") + url + "?fresh=" + Math.random(), function(result) { + defer.resolve(result) + }); + return defer.promise(); + } - // 内部使用,渲染菜单函数 function renderMenu(option) { if (option.parseData != false) { - option.data = option.parseData(option.data); + option.data = option.parseData(option.data); } if (option.data.length > 0) { if (option.control != false) { @@ -206,16 +261,15 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { option.done(); } - // 创建菜单 function createMenu(option) { var menuHtml = '
      '; - $.each(option.data, function(i, item) { + '" class="layui-nav arrow laytp-menu layui-nav-tree laytp-nav-tree">'; + $.each(option.data, function (i, item) { var content = '
    • '; if (i === option.defaultOpen) { - content = '
    • '; + content = '
    • '; } - var href = "javascript:;"; + var href = "javascript:void(0);"; var target = ""; var className = "site-demo-active"; if (item.openType === "_blank" && item.type === 1) { @@ -246,53 +300,55 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { $("#" + option.elem).html(menuHtml); } - // 创建多系统菜单, 包括渲染静态html和绑定顶部菜单点击事件 + // 创建多系统菜单, 包括渲染静态html和绑定顶部菜单点击事件 function createMenuAndControl(option) { - var control = '
        '; + var control = '
          '; + control+= '
        • '; var controlPe = '
            '; // 声 明 头 部 - var menu = '
            '; + var menu = '
            ' // 开 启 同 步 操 作 var index = 0; var controlItemPe = '
            '; - var config = layui.admin.readConfig(); - $.each(option.data, function(i, item) { + var config = layui.admin.readConfig(); + $.each(option.data, function (i, item) { var menuItem = ''; var controlItem = ''; - if(index < config.menu['maxTopMenuNum']){ + if(index < config.menu['maxTopMenuNum']){ if (i === option.defaultMenu) { - controlItem = '
          • ' + item.title + '
          • '; - menuItem = '
              '; - // 兼容移动端 - controlPe += '
            • ' + item.title + ''; - controlItemPe += '
              '; + + controlPe += '
            • ' + item.title + ''; + + controlItemPe += '
              ' + item.title + '
              '; } else { - controlItem = '
            • ' + item.title + '
            • '; + menuItem = '
          '; + } - controlItemPe += "
        "; + controlItemPe += "
      " controlPe += controlItemPe; - $("#" + option.control).html(control); + $("#" + option.control).html(control + "
    "); $("#" + option.control).append(controlPe); $("#" + option.elem).html(menu); - // 绑定顶部菜单点击事件 - $(document).off("click", "#" + option.control + " .laytp-nav-control [menu-id]").on("click", "#" + option.control + " .laytp-nav-control [menu-id]", function() { - // $("#" + option.control + " .laytp-nav-control").on("click", "[menu-id]", function() { + // 绑定顶部菜单点击事件 + $(document).off("click", "#" + option.control + " .laytp-nav-control [menu-id]").on("click", "#" + option.control + " .laytp-nav-control [menu-id]", function() { + // $("#" + option.control + " .laytp-nav-control").on("click", "[menu-id]", function () { $("#" + option.elem).find(".laytp-nav-tree").css({ display: 'none' }); @@ -353,27 +409,27 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { display: 'block' }); $("#" + option.control).find(".pe-title").html($(this).attr("menu-title")); - $("#" + option.control).find(""); - option.change($(this).attr("menu-id"), $(this).attr("menu-title"), $(this).attr("menu-href")); - // 自动点击左侧的第一个菜单 - var s = $("a:first",$("#" + option.elem).find("ul[style='display: block;']")).parent(); - if(s.hasClass("layui-nav-itemed")){ - recursionFindA(s); - }else{ - $("a:first",$("#" + option.elem).find("ul[style='display: block;']")).click(); - } - }); + $("#" + option.control).find("") + option.change($(this).attr("menu-id"), $(this).attr("menu-title"), $(this).attr("menu-href")) + // 自动点击左侧的第一个菜单 + var s = $("a:first",$("#" + option.elem).find("ul[style='display: block;']")).parent(); + if(s.hasClass("layui-nav-itemed")){ + recursionFindA(s); + }else{ + $("a:first",$("#" + option.elem).find("ul[style='display: block;']")).click(); + } + }); } - // 点击顶部菜单,自动点击左侧菜单,当菜单已经是展开状态时,要递归找到最低级别的A标签进行点击 - function recursionFindA(obj){ - var dlObj = $("dl:first", obj); - if(dlObj.length === 0){ - $("a:first", obj).click(); - }else{ - recursionFindA($("dd:first",dlObj)); - } - } + // 点击顶部菜单,自动点击左侧菜单,当菜单已经是展开状态时,要递归找到最低级别的A标签进行点击 + function recursionFindA(obj){ + var dlObj = $("dl:first", obj); + if(dlObj.length === 0){ + $("a:first", obj).click(); + }else{ + recursionFindA($("dd:first",dlObj)); + } + } /** 加载子菜单 (递归)*/ function loadchild(obj) { @@ -386,10 +442,10 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { // 如 果 嵌 套 不 等 于 空 if (obj.children != null && obj.children.length > 0) { // 遍 历 子 项 目 - $.each(obj.children, function(i, note) { + $.each(obj.children, function (i, note) { // 创 建 子 项 结 构 content += '
    '; - var href = "javascript:;"; + var href = "javascript:void(0);"; var target = ""; var className = "site-demo-active"; if (note.openType == "_blank" && note.type == 1) { @@ -415,28 +471,39 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { }); // 封 装 } else { - content += '
    无 内 容
    '; + content += '
    目录为空
    '; } content += ''; return content; } - // 左侧菜单点击事件 function downShow(option) { - $(document).off("click", "#" + option.elem + " a[menu-type='0']").on("click", "#" + option.elem + " a[menu-type='0']", function() { - // $("body #" + option.elem).on("click", "a[menu-type='0']", function() { + $(document).off("click", "#" + option.elem + " a[menu-type='0']").on("click", "#" + option.elem + " a[menu-type='0']", function() { + // $("body #" + option.elem).on("click", "a[menu-type='0']", function () { if (!$("#" + option.elem).is(".laytp-nav-mini")) { var superEle = $(this).parent(); var ele = $(this).next('.layui-nav-child'); var heights = ele.children("dd").length * 48; if (superEle.is(".layui-nav-itemed")) { - if (option.accordion) { - superEle.parent().find(".layui-nav-itemed").removeClass("layui-nav-itemed"); - superEle.addClass("layui-nav-itemed"); - //自动点击第一个子菜单 - $("a:first",ele).click(); - } + // if (option.accordion) { + // var currentDom = $(this).parent().siblings('.layui-nav-itemed').children('.layui-nav-child'); + // currentDom.animate({ + // height: '0px' + // }, 240, function () { + // currentDom.css({ + // height: "auto", + // }); + // $(this).parent().removeClass("layui-nav-itemed"); + // $(this).find('.layui-nav-itemed').removeClass("layui-nav-itemed"); + // }); + // } + if (option.accordion) { + superEle.parent().find(".layui-nav-itemed").removeClass("layui-nav-itemed"); + superEle.addClass("layui-nav-itemed"); + //自动点击第一个子菜单 + $("a:first",ele).click(); + } ele.height(0); ele.animate({ height: heights + "px" @@ -446,7 +513,7 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { }); }); } else { - superEle.addClass("layui-nav-itemed"); + // superEle.addClass("layui-nav-itemed"); ele.animate({ height: "0px" }, 200, function() { @@ -463,8 +530,11 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { /** 二 级 悬 浮 菜 单*/ function isHoverMenu(b, option) { if (b) { - $("#" + option.elem + ".laytp-nav-mini .layui-nav-item,#" + option.elem + ".laytp-nav-mini dd").hover(function(e) { - e.stopPropagation(); + var navItem = "#" + option.elem + ".laytp-nav-mini .layui-nav-item"; + var navChildDl = navItem + " .layui-nav-child>dl"; + var navChildDd = navItem + " .layui-nav-child>dd"; + + $(navItem + "," + navChildDd).mouseenter(function () { var _this = $(this); _this.siblings().find(".layui-nav-child") .removeClass("layui-nav-hover").css({ @@ -472,7 +542,6 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { top: 0 }); _this.children(".layui-nav-child").addClass("layui-nav-hover"); - _this.closest('.layui-nav-item').data('time') && clearTimeout(_this.closest('.layui-nav-item').data('time')); var height = $(window).height(); var topLength = _this.offset().top; var thisHeight = _this.children(".layui-nav-child").height(); @@ -485,26 +554,99 @@ layui.define(['table', 'jquery', 'element','facade'], function(exports) { } _this.children(".layui-nav-child").offset({ top: topLength, - left: left + 3 + left: left }); - }, function(e) { - e.stopPropagation(); + }); + + $(navItem + "," + navChildDl).mouseleave(function () { var _this = $(this); - _this.closest('.layui-nav-item').data('time', setTimeout(function() { - _this.closest('.layui-nav-item') - .find(".layui-nav-child") - .removeClass("layui-nav-hover") - .css({ - left: 0, - top: 0 - }); - }, 50)); - }) + _this.closest('.layui-nav-item') + .find(".layui-nav-child") + .removeClass("layui-nav-hover") + .css({ + left: 0, + top: 0 + }); + }); + } else { $("#" + option.elem + " .layui-nav-item").off('mouseenter').unbind('mouseleave'); $("#" + option.elem + " dd").off('mouseenter').unbind('mouseleave'); } } + function rationalizeHeaderControlWidth(option) { + var $headerControl = $("#" + option.control); + var $nextEl = $headerControl.next(); + var rationalizeWidth; + if ($nextEl.length) { + rationalizeWidth = $nextEl.position().left - $headerControl.position().left; + } else { + rationalizeWidth = $headerControl.parent().innerWidth() - $headerControl.position().left; + } + + $("#" + option.control + " .control").css({"width": rationalizeWidth}); + + var navobj = $("#" + option.control+' ul.laytp-nav-control.pc'); + var dropdown = $(".tabdrop", navobj); + + var collection = 0; + var maxwidth = rationalizeWidth - 60; + + var liwidth = 0; + //检查超过一行的标签页 + $('.tabdrop').find('dd').each(function(){ + var newLI = $('
  • ').html($(this).html()); + newLI.addClass('layui-nav-item'); + newLI.attr('laytp-href', $(this).attr('laytp-href')); + newLI.attr('laytp-title', $(this).attr('laytp-title')); + newLI.attr('menu-id', $(this).attr('menu-id')); + navobj.append(newLI); + $(this).remove(); + + }) + var litabs = navobj.find('>li').not('.tabdrop'); + + var totalwidth = 0; + litabs.each(function () { + totalwidth += $(this).outerWidth(true); + }); + + if (rationalizeWidth < totalwidth) { + litabs.each(function () { + liwidth += $(this).outerWidth(true); + if (liwidth > maxwidth) { + var newDD = $('
    ').html($(this).html()); + newDD.attr('laytp-href', $(this).attr('laytp-href')); + newDD.attr('laytp-title', $(this).attr('laytp-title')); + newDD.attr('menu-id', $(this).attr('menu-id')); + dropdown.find('dl').append(newDD); + collection++; + $(this).remove(); + } + }); + if (collection > 0) { + dropdown.removeClass('layui-hide'); + if (dropdown.find('.active').length === 1) { + dropdown.addClass('active'); + } else { + dropdown.removeClass('active'); + } + } + }else { + dropdown.addClass('layui-hide'); + } + } + + function rationalizeHeaderControlWidthAuto(option){ + $(window).on('resize', function () { + rationalizeHeaderControlWidth(option); + }) + + $(document).ready(function () { + rationalizeHeaderControlWidth(option); + }); + } + exports(MOD_NAME, new laytpMenu()); -}); +}) diff --git a/public/static/component/laytp/module/laytpTab.js b/public/static/component/laytp/module/laytpTab.js index 26e12706505a6d4e23cd255e8618a9d089711f10..0ddfa0a07e67f28b2127c34c2768fd8e6df5502b 100644 --- a/public/static/component/laytp/module/laytpTab.js +++ b/public/static/component/laytp/module/laytpTab.js @@ -149,7 +149,7 @@ layui.define(['jquery', 'element'], function(exports) { laytpTab.prototype.addTab = function(opt) { var title = ''; if (opt.close) { - title += '' + opt.title + + title += '' + opt.title + ''; } else { title += '' + opt.title + @@ -180,6 +180,18 @@ layui.define(['jquery', 'element'], function(exports) { } }; + // 关闭所有选项卡 + laytpTab.prototype.delAllTabByElem = function(elem, callback) { + var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr( + "lay-id"); + var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li"); + $.each(tabtitle, function(i) { + if ($(this).find("span").is(".able-close")) { + tabDelete(elem, $(this).attr("lay-id"), callback); + } + }) + } + // 根据过滤 filter 标识, 删除当前选项卡 laytpTab.prototype.delCurrentTabByElem = function(elem, callback) { var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this"); @@ -189,11 +201,32 @@ layui.define(['jquery', 'element'], function(exports) { } }; + // 关闭其他选项卡 + laytpTab.prototype.delOtherTabByElem = function(elem, callback) { + var currentId = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title .layui-this").attr( + "lay-id"); + var tabtitle = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title li"); + $.each(tabtitle, function(i) { + if ($(this).attr("lay-id") != currentId) { + if ($(this).find("span").is(".able-close")) { + tabDelete(elem, $(this).attr("lay-id"), callback); + } + } + }) + } + + // 修改标题 + laytpTab.prototype.changeTabTitleById = function(elem, id, title) { + var currentTab = $(".layui-tab[lay-filter='" + elem + "'] .layui-tab-title [lay-id='" + id + + "'] .title"); + currentTab.html(title); + } + // 通过过滤 filter 标识, 新增标签页 laytpTab.prototype.addTabOnlyByElem = function(elem, opt, time) { var title = ''; if (opt.close) { - title += '' + opt.title + + title += '' + opt.title + '' } else { title += '' + opt.title + @@ -277,7 +310,7 @@ layui.define(['jquery', 'element'], function(exports) { laytpTab.prototype.addTabOnly = function(opt, time) { var title = ''; if (opt.close) { - title += '' + opt.title + + title += '' + opt.title + ''; } else { title += '' + opt.title + @@ -373,7 +406,7 @@ layui.define(['jquery', 'element'], function(exports) { // 3.现在样式也放在js里面加载所以,document元素优先于css加载了,于是会造成页面跳动 // index.html的加载方式是在head部分加载了需要的css样式,所以index.html的css样式是优于document加载的 // 而tab页面的css样式使用的是js统一加载的,所以需要延迟200毫秒,让js把样式都加载完毕之后再渲染展示document元素 - time = 200; + // time = 200; // 刷 新 指 定 的 选 项 卡 if (time != false && time != 0) { var load = '
    ' + @@ -483,7 +516,7 @@ layui.define(['jquery', 'element'], function(exports) { if (item.close) { // 当 前 选 项 卡 可 以 关 闭 - TitleItem += '' + item.title + ''; + TitleItem += '' + item.title + ''; } else { // 当 前 选 项 卡 不 允 许 关 闭 TitleItem += '' + item.title + ''; diff --git a/public/static/component/laytp/module/laytpTable.js b/public/static/component/laytp/module/laytpTable.js index 05ba6723ad258eb7b620614b5c514f8e5dc469cd..144f57ac4acb490e7b90727cd5540a770b00fbcb 100644 --- a/public/static/component/laytp/module/laytpTable.js +++ b/public/static/component/laytp/module/laytpTable.js @@ -19,18 +19,58 @@ layui.define([ * 增加参数reduceHeight的设置,是当底部有浮动的层时,需要把底部浮动层的高度也减去 * 弹窗展示数据表格时,底部可能需要加上操作按钮,reduceHeight的值设置上浮动层高度即可 * @param reduceHeight int 减少的高度,单位px + * @param tableId string 表格的ID */ - done : function(reduceHeight){ + done : function(reduceHeight, tableId){ if(!reduceHeight){ reduceHeight = 0; } // 获取屏幕可见高度 var windowHeight = $(window).height(); - var maxHeight = parseInt(windowHeight) - (190 + reduceHeight); + var maxHeight = parseInt(windowHeight) - (172 + reduceHeight); // 设置.layui-table-body的最大高度和y轴滚动条自动出现 // 为了防止fixed="left" 固定层也出现滚动条,增加上.layui-table-main类的限制 - $(".layui-table-body.layui-table-main").css("max-height", maxHeight + 'px'); - $(".layui-table-body.layui-table-main").css("overflow-y", "auto"); + if(!tableId){ + $(".layui-table-body.layui-table-main").css("height", maxHeight + 'px'); + $(".layui-table-body.layui-table-main").css("max-height", maxHeight + 'px'); + $(".layui-table-body.layui-table-main").css("overflow-y", "auto"); + }else{ + $("div[lay-id='"+tableId+"'] .layui-table-body.layui-table-main").css("height", maxHeight + 'px'); + $("div[lay-id='"+tableId+"'] .layui-table-body.layui-table-main").css("max-height", maxHeight + 'px'); + $("div[lay-id='"+tableId+"'] .layui-table-body.layui-table-main").css("overflow-y", "auto"); + } + }, + + /** + * 树形数据表格渲染完成调用的方法 + * 主要工作,让layui-table-body的最大高度最多就是当前可见屏幕,超过了当前可见高度,就出现滚动条 + * 增加参数reduceHeight的设置,是当底部有浮动的层时,需要把底部浮动层的高度也减去 + * 弹窗展示数据表格时,底部可能需要加上操作按钮,reduceHeight的值设置上浮动层高度即可 + * @param reduceHeight int 减少的高度,单位px + * @param tableId string 表格的ID + */ + treeDone : function(reduceHeight, tableId){ + if(!reduceHeight){ + reduceHeight = 0; + } + // 获取屏幕可见高度 + var windowHeight = $(window).height(); + var maxHeight = parseInt(windowHeight) - (130 + reduceHeight); + // 设置.layui-table-body的最大高度和y轴滚动条自动出现 + // 为了防止fixed="left" 固定层也出现滚动条,增加上.layui-table-main类的限制 + if(!tableId){ + $(".layui-table-body.layui-table-main").css("height", maxHeight + 'px'); + $(".layui-table-body.layui-table-main").css("max-height", maxHeight + 'px'); + $(".layui-table-body.layui-table-main").css("overflow-y", "auto"); + }else{ + $("div[lay-id="+tableId+"] .layui-table-body.layui-table-main").css("height", maxHeight + 'px'); + $("div[lay-id="+tableId+"] .layui-table-body.layui-table-main").css("max-height", maxHeight + 'px'); + $("div[lay-id="+tableId+"] .layui-table-body.layui-table-main").css("overflow-y", "auto"); + } + }, + + setLimit: function(key, limit){ + facade.setLimit(key, limit); } }; diff --git a/public/static/component/laytp/module/laytpUpload.js b/public/static/component/laytp/module/laytpUpload.js index e38ed62d8354c5491586670c9855707d66f96da1..bec0a497cad715074e72c1d5a9b4f8d874b30149 100644 --- a/public/static/component/laytp/module/laytpUpload.js +++ b/public/static/component/laytp/module/laytpUpload.js @@ -20,7 +20,7 @@ layui.define(["jquery", "element"], function (exports) { var laytpUpload = { pathSplitStr: ", ", - idSplitStr: ",", + idSplitStr: ", ", uploadType: { "image": "图片", "video": "视频", @@ -82,7 +82,7 @@ layui.define(["jquery", "element"], function (exports) { "
    " + "
    " + " {{# } }}" + - " {{d.previewHtml}}" + + " {{- d.previewHtml}}" + "
    "; return layui.laytpl(html).render(options); }, @@ -307,7 +307,7 @@ layui.define(["jquery", "element"], function (exports) { layui.upload.render({ headers: ajaxHeaders, elem: $("#laytpUploadBtn_" + options.name, options.parentElem), - url: facade.url("/admin.common/upload"), + url: options.route ? facade.url(options.route) : facade.url("/admin.common/upload"), accept: options.accept, multiple: options.multi, data: options.params, @@ -434,7 +434,7 @@ layui.define(["jquery", "element"], function (exports) { $(options.el).after(laytpUpload.uploadHtml(options)); var uploadInst = layui.upload.render({ elem: $("#laytpUploadBtn_" + options.name, options.parentElem), - url: options.url, + url: options.route ? facade.url(options.route) : facade.url("/admin.common/upload"), accept: options.accept, multiple: options.multi, data: options.params, @@ -629,7 +629,7 @@ layui.define(["jquery", "element"], function (exports) { $(options.el).after(laytpUpload.uploadHtml(options)); var uploadInst = layui.upload.render({ elem: $("#laytpUploadBtn_" + options.name, options.parentElem), - url: options.url, + url: options.route ? facade.url(options.route) : facade.url("/admin.common/upload"), accept: options.accept, multiple: options.multi, data: options.params, @@ -824,13 +824,14 @@ layui.define(["jquery", "element"], function (exports) { title : "选择附件", path : facade.compatibleHtmlPath("/admin/files/choice.html?checked_ids="+checkedIds+"&name=" + options.name + "&multi=" + options.multi + "&file_type=" + options.accept + "&category_id=" + options.fileCategoryId), width : '95%', - height : '95%' + height : '100%' }); }); }, // 弹窗选择文件,选择完后,关闭弹窗执行此函数进行界面预览 choiceAfter: function(name, multi, accept, checkedItems){ + console.log(name, multi, accept, checkedItems); $("#id_" + name, window.parent.document).val(''); $("#input_" + name, window.parent.document).val(''); $("li", $("#preview_" + name, window.parent.document)).remove(); diff --git a/public/static/component/laytp/module/loading.js b/public/static/component/laytp/module/loading.js index abac267fd93b5eb6af6f24bff281e92d5e209533..6785aa9e39e60bc37750feec36dba34ea9f23c26 100644 --- a/public/static/component/laytp/module/loading.js +++ b/public/static/component/laytp/module/loading.js @@ -4,15 +4,11 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var MOD_NAME = 'loading', $ = layui.jquery, element = layui.element; - var laytpOper = new function () { - this.blockRemove = function(dom,time){ Notiflix.Block.Remove(dom, time); } - this.block = function(option){ - if(option.type==1){ Notiflix.Block.Standard( option.elem @@ -29,7 +25,6 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ,option.msg); } else if(option.type==4){ - Notiflix.Block.Arrows( option.elem ,option.msg); @@ -45,46 +40,45 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ,option.msg); } } - this.report = function(option){ if(option.type=="success"){ Notiflix.Report.Success( option.title, - option.message,'确认'); + option.message,'确认'); }else if(option.type=="failure"){ Notiflix.Report.Failure( option.title, - option.message,'确认'); + option.message,'确认'); }else if(option.type=="warning"){ Notiflix.Report.Warning( option.title, - option.message,'确认'); + option.message,'确认'); }else if(option.type=="info"){ Notiflix.Report.Info( option.title, - option.message,'确认'); + option.message,'确认'); } } - + this.notice = function(option){ Notiflix.Notify.Init({ position:option.position?"right-top":option.position, }); if(option.type=="success"){ - + Notiflix.Notify.Success(option.title); }else if(option.type=="failure"){ - + Notiflix.Notify.Failure(option.title); }else if(option.type=="warning"){ - - Notiflix.Notify.Warning(option.title); + + Notiflix.Notify.Warning(option.title); }else if(option.type=="info"){ - - Notiflix.Notify.Info(option.title); + + Notiflix.Notify.Info(option.title); } } - + this.confirm = function(option){ Notiflix.Confirm.Show( option.title, @@ -95,7 +89,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { option.cancle ); } - + this.drawer = function(position,dom,distance){ var _right = new mSlider({ dom: dom, @@ -104,11 +98,11 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }); _right.open(); } - + this.loadRemove = function(time){ Notiflix.Loading.Remove(time); } - + this.Load = function(type,message){ if(type==1){ Notiflix.Loading.Standard(message); @@ -122,27 +116,27 @@ layui.define(['table', 'jquery', 'element'], function (exports) { Notiflix.Loading.Pulse(message); } } - + this.msg = function(option){ if(option.type=="success"){ - + layer.msg(option.title,{icon:1,time:option.time},option.callback); - + }else if(option.type=="failure"){ - + layer.msg(option.title,{icon:2,time:option.time},option.callback); - + }else if(option.type=="warning"){ - + layer.msg(option.title,{icon:3,time:option.time},option.callback); - + }else if(option.type=="info"){ - + layer.msg(option.title,{icon:4,time:option.time},option.callback); } } }; - + // Notiflix: Notify Default Settings on var notifySettings = { wrapID: 'NotiflixNotifyWrap', // can not customizable @@ -159,7 +153,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { plainText: true, showOnlyTheLastOne: false, clickToClose: false, - + ID: 'NotiflixNotify', className: 'notiflix-notify', zindex: 4001, @@ -174,7 +168,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { useFontAwesome: false, fontAwesomeIconStyle: 'basic', // 'basic' - 'shadow' fontAwesomeIconSize: '34px', - + success: { background: '#32c682', textColor: '#fff', @@ -183,7 +177,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { fontAwesomeClassName: 'fas fa-check-circle', fontAwesomeIconColor: 'rgba(0,0,0,0.2)', }, - + failure: { background: '#ff5549', textColor: '#fff', @@ -192,7 +186,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { fontAwesomeClassName: 'fas fa-times-circle', fontAwesomeIconColor: 'rgba(0,0,0,0.2)', }, - + warning: { background: '#eebf31', textColor: '#fff', @@ -201,7 +195,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { fontAwesomeClassName: 'fas fa-exclamation-circle', fontAwesomeIconColor: 'rgba(0,0,0,0.2)', }, - + info: { background: '#26c0d3', textColor: '#fff', @@ -212,7 +206,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }, }; // Notiflix: Notify Default Settings off - + // Notiflix: Report Default Settings on var reportSettings = { ID: 'NotiflixReportWrap', // can not customizable @@ -237,7 +231,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { cssAnimation: true, cssAnimationDuration: 360, cssAnimationStyle: 'fade', // 'fade' - 'zoom' - + success: { svgColor: '#32c682', titleColor: '#1e1e1e', @@ -245,7 +239,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { buttonBackground: '#32c682', buttonColor: '#fff', }, - + failure: { svgColor: '#ff5549', titleColor: '#1e1e1e', @@ -253,7 +247,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { buttonBackground: '#ff5549', buttonColor: '#fff', }, - + warning: { svgColor: '#eebf31', titleColor: '#1e1e1e', @@ -261,7 +255,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { buttonBackground: '#eebf31', buttonColor: '#fff', }, - + info: { svgColor: '#26c0d3', titleColor: '#1e1e1e', @@ -271,7 +265,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }, }; // Notiflix: Report Default Settings off - + // Notiflix: Confirm Default Settings on var confirmSettings = { ID: 'NotiflixConfirmWrap', // can not customizable @@ -291,15 +285,15 @@ layui.define(['table', 'jquery', 'element'], function (exports) { cssAnimationStyle: 'fade', // 'zoom' - 'fade' cssAnimationDuration: 300, plainText: true, - + titleColor: '#32c682', titleFontSize: '16px', titleMaxLength: 34, - + messageColor: '#1e1e1e', messageFontSize: '14px', messageMaxLength: 110, - + buttonsFontSize: '15px', buttonsMaxLength: 34, okButtonColor: '#f8f8f8', @@ -308,7 +302,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { cancelButtonBackground: '#a9a9a9', }; // Notiflix: Confirm Default Settings off - + // Notiflix: Loading Default Settings on var loadingSettings = { ID: 'NotiflixLoadingWrap', // can not customizable @@ -330,7 +324,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { messageColor: '#dcdcdc', }; // Notiflix: Loading Default Settings off - + // Notiflix: Block Default Settings on var blockSettings = { ID: 'NotiflixBlockWrap', // can not customizable @@ -351,7 +345,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { messageColor: '#383838', }; // Notiflix: Block Default Settings off - + // Notiflix: Extend on var extendNotiflix = function () { // variables @@ -383,7 +377,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return extended; }; // Notiflix: Extend off - + // Notiflix: Plaintext on var notiflixPlaintext = function (html) { var htmlPool = document.createElement('div'); @@ -391,7 +385,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return htmlPool.textContent || htmlPool.innerText || ''; }; // Notiflix: Plaintext off - + // Notiflix: GoogleFont on var notiflixGoogleFont = function (use, family) { if (!document.getElementById('NotiflixQuicksand') && use && (family && typeof family === 'string' && family.toLowerCase() === 'quicksand')) { @@ -402,7 +396,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var dnsFragment = dnsRange.createContextualFragment(dns); document.head.appendChild(dnsFragment); // google fonts dns prefetch off - + // google fonts style on var font = ''; var fontRange = document.createRange(); @@ -413,19 +407,19 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } }; // Notiflix: GoogleFont off - + // Notiflix: Console Error on var notiflixConsoleError = function (title, message) { return console.error('%c ' + title + ' ', 'padding:2px;border-radius:20px;color:#fff;background:#ff5549', '\n' + message + '\nVisit documentation page to learn more: https://www.notiflix.com/documentation'); }; // Notiflix: Console Error off - + // Notiflix: Console Log on var notiflixConsoleLog = function (title, message) { return console.log('%c ' + title + ' ', 'padding:2px;border-radius:20px;color:#fff;background:#26c0d3', '\n' + message + '\nVisit documentation page to learn more: https://www.notiflix.com/documentation'); }; // Notiflix: Console Log off - + // Notiflix: Main on var newNotifySettings; var newReportSettings; @@ -435,7 +429,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var Notiflix = { // Notify on Notify: { - + // Init Init: function (userNotifyOpt) { // extend options @@ -443,7 +437,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // use GoogleFonts if "Quicksand" notiflixGoogleFont(newNotifySettings.useGoogleFont, newNotifySettings.fontFamily); }, - + // Merge First Init Merge: function (userNotifyExtend) { // if initialized already @@ -456,7 +450,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return false; } }, - + // Display Notification: Success Success: function (message, callback) { // if not initialized pretend like init @@ -466,7 +460,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var theType = newNotifySettings.success; NotiflixNotify(message, callback, theType, 'Success'); }, - + // Display Notification: Failure Failure: function (message, callback) { // if not initialized pretend like init @@ -476,7 +470,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var theType = newNotifySettings.failure; NotiflixNotify(message, callback, theType, 'Failure'); }, - + // Display Notification: Warning Warning: function (message, callback) { // if not initialized pretend like init @@ -486,7 +480,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var theType = newNotifySettings.warning; NotiflixNotify(message, callback, theType, 'Warning'); }, - + // Display Notification: Info Info: function (message, callback) { // if not initialized pretend like init @@ -498,10 +492,10 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }, }, // Notify off - + // Report on Report: { - + // Init Init: function (userReportOpt) { // extend options @@ -509,7 +503,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // use GoogleFonts if "Quicksand" notiflixGoogleFont(newReportSettings.useGoogleFont, newReportSettings.fontFamily); }, - + // Merge First Init Merge: function (userReportExtend) { // if initialized already @@ -522,7 +516,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return false; } }, - + // Display Report: Success Success: function (title, message, buttonText, buttonCallback) { // if not initialized pretend like init @@ -532,7 +526,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var theType = newReportSettings.success; NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Success'); }, - + // Display Report: Failure Failure: function (title, message, buttonText, buttonCallback) { // if not initialized pretend like init @@ -542,7 +536,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var theType = newReportSettings.failure; NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Failure'); }, - + // Display Report: Warning Warning: function (title, message, buttonText, buttonCallback) { // if not initialized pretend like init @@ -552,7 +546,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var theType = newReportSettings.warning; NotiflixReport(title, message, buttonText, buttonCallback, theType, 'Warning'); }, - + // Display Report: Info Info: function (title, message, buttonText, buttonCallback) { // if not initialized pretend like init @@ -564,10 +558,10 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }, }, // Report off - + // Confirm on Confirm: { - + // Init Init: function (userConfirmOpt) { // extend options @@ -575,7 +569,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // use GoogleFonts if "Quicksand" notiflixGoogleFont(newConfirmSettings.useGoogleFont, newConfirmSettings.fontFamily); }, - + // Merge First Init Merge: function (userConfirmExtend) { // if initialized already @@ -588,7 +582,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return false; } }, - + // Display Confirm: Show Show: function (title, message, okText, cancelText, okCallback, cancelCallback) { if (!title) { title = 'Notiflix Confirm'; } @@ -601,10 +595,10 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }, }, // Confirm off - + // Loading on Loading: { - + // Init Init: function (userLoadingOpt) { // extend options @@ -612,7 +606,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // use GoogleFonts if "Quicksand" notiflixGoogleFont(newLoadingSettings.useGoogleFont, newLoadingSettings.fontFamily); }, - + // Merge First Init Merge: function (userLoadingExtend) { // if initialized already @@ -625,63 +619,63 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return false; } }, - + // Display Loading: Standard Standard: function (message) { NotiflixLoading(message, 'standard', true, 0); // true => display || 0 => delay }, - + // Display Loading: Hourglass Hourglass: function (message) { NotiflixLoading(message, 'hourglass', true, 0); // true => display || 0 => delay }, - + // Display Loading: Circle Circle: function (message) { NotiflixLoading(message, 'circle', true, 0); // true => display || 0 => delay }, - + // Display Loading: Arrows Arrows: function (message) { NotiflixLoading(message, 'arrows', true, 0); // true => display || 0 => delay }, - + // Display Loading: Dots Dots: function (message) { NotiflixLoading(message, 'dots', true, 0); // true => display || 0 => delay }, - + // Display Loading: Pulse Pulse: function (message) { NotiflixLoading(message, 'pulse', true, 0); // true => display || 0 => delay }, - + // Display Loading: Custom Custom: function (message) { NotiflixLoading(message, 'custom', true, 0); // true => display || 0 => delay }, - + // Display Loading: Notiflix Notiflix: function (message) { NotiflixLoading(message, 'notiflix', true, 0); // true => display || 0 => delay }, - + // Remove Loading Remove: function (theDelay) { if (!theDelay) { theDelay = 0; } NotiflixLoading(false, false, false, theDelay); // false = Remove }, - + // Change The Message Change: function (newMessage) { NotiflixLoadingChange(newMessage); }, }, // Loading off - + // Block on Block: { - + // Initialize Init: function (userBlockOpt) { // extend options @@ -689,7 +683,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // use GoogleFonts if "Quicksand" notiflixGoogleFont(newBlockSettings.useGoogleFont, newBlockSettings.fontFamily); }, - + // Merge First Initialize Merge: function (userBlockExtend) { // if initialized already @@ -702,49 +696,49 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return false; } }, - + // Display Block: Standard Standard: function (selector, message) { var block = true; var theIcon = 'standard'; NotiflixBlockUnblockElement(block, selector, theIcon, message); }, - + // Display Block: Hourglass Hourglass: function (selector, message) { var block = true; var theIcon = 'hourglass'; NotiflixBlockUnblockElement(block, selector, theIcon, message); }, - + // Display Block: Circle Circle: function (selector, message) { var block = true; var theIcon = 'circle'; NotiflixBlockUnblockElement(block, selector, theIcon, message); }, - + // Display Block: Arrows Arrows: function (selector, message) { var block = true; var theIcon = 'arrows'; NotiflixBlockUnblockElement(block, selector, theIcon, message); }, - + // Display Block: Dots Dots: function (selector, message) { var block = true; var theIcon = 'dots'; NotiflixBlockUnblockElement(block, selector, theIcon, message); }, - + // Display Block: Pulse Pulse: function (selector, message) { var block = true; var theIcon = 'pulse'; NotiflixBlockUnblockElement(block, selector, theIcon, message); }, - + // Remove Block Remove: function (selector, delay) { var block = false; @@ -756,54 +750,54 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // Block off }; // Notiflix: Main off - - + + // Notiflix: Notify Single on var notiflixNotifyCount = 0; var NotiflixNotify = function (message, callback, theType, staticType) { if (arguments && arguments.length === 4) { - + // notify counter on notiflixNotifyCount++; // notify counter off - + // if no message on if (!message) { message = 'Notiflix ' + staticType; } // if no message off - - // if plainText true = HTML tags not allowed on + + // if plainText true = HTML tags not allowed on if (newNotifySettings.plainText) { message = notiflixPlaintext(message); // message plain text } // if plainText true = HTML tags not allowed off - + // if plainText false but the message length more than messageMaxLength = HTML tags error on if (!newNotifySettings.plainText && message.length > newNotifySettings.messageMaxLength) { Notiflix.Notify.Merge({ closeButton: true, plainText: false, }); message = 'HTML Tags Error: Your content length is more than "messageMaxLength" option.'; // message html error } // if plainText false but the message length more than messageMaxLength = HTML tags error off - + // message max length substring on if (message.length > newNotifySettings.messageMaxLength) { message = message.substring(0, newNotifySettings.messageMaxLength) + '...'; } // message max length substring off - + // font awesome icon style on if (newNotifySettings.fontAwesomeIconStyle === 'shadow') { theType.fontAwesomeIconColor = theType.background; } // font awesome icon style off - + // if cssAnimaion false -> duration on if (!newNotifySettings.cssAnimation) { newNotifySettings.cssAnimationDuration = 0; } // if cssAnimaion false -> duration off - + // notify wrap on var docBody = document.body; var ntflxNotifyWrap = document.createElement('div'); @@ -811,7 +805,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ntflxNotifyWrap.style.width = newNotifySettings.width; ntflxNotifyWrap.style.zIndex = newNotifySettings.zindex; ntflxNotifyWrap.style.opacity = newNotifySettings.opacity; - + // wrap position on if (newNotifySettings.position === 'right-bottom') { ntflxNotifyWrap.style.right = newNotifySettings.distance; @@ -835,7 +829,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ntflxNotifyWrap.style.bottom = 'auto'; } // wrap position off - + // if background overlay true on var notifyOverlay; if (newNotifySettings.backOverlay) { @@ -857,12 +851,12 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } } // if background overlay true off - + if (!document.getElementById(ntflxNotifyWrap.id)) { docBody.appendChild(ntflxNotifyWrap); } // notify wrap off - + // notify content on var ntflxNotify = document.createElement('div'); ntflxNotify.id = newNotifySettings.ID + '-' + notiflixNotifyCount; @@ -871,31 +865,31 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ntflxNotify.style.color = theType.textColor; ntflxNotify.style.background = theType.background; ntflxNotify.style.borderRadius = newNotifySettings.borderRadius; - + // rtl on if (newNotifySettings.rtl) { ntflxNotify.setAttribute('dir', 'rtl'); ntflxNotify.classList.add('rtl-on'); } // rtl off - + // font-family on ntflxNotify.style.fontFamily = '"' + newNotifySettings.fontFamily + '"' + ', sans-serif'; // font-family off - + // use css animation on if (newNotifySettings.cssAnimation) { ntflxNotify.style.animationDuration = newNotifySettings.cssAnimationDuration + 'ms'; } // use css animation off - + // close button element on var closeButtonHTML = ''; if (newNotifySettings.closeButton && !callback) { closeButtonHTML = ''; } // close buttpon element off - + // use icon on if (newNotifySettings.useIcon) { // use font awesome @@ -925,7 +919,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } // use icon off // notify content off - + // notify append or prepend on if (newNotifySettings.position === 'left-bottom' || newNotifySettings.position === 'right-bottom') { // the new one will be first var notifyWrap = document.getElementById(ntflxNotifyWrap.id); @@ -933,7 +927,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } else { document.getElementById(ntflxNotifyWrap.id).appendChild(ntflxNotify); } - + if (newNotifySettings.useIcon) { // if useIcon, dynamically vertical align the contents var messageIcon = document.getElementById(ntflxNotify.id).querySelectorAll('.nmi')[0]; var messageIconH = 40; @@ -954,7 +948,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } } // notify append or prepend off - + // remove by timeout or click on if (document.getElementById(ntflxNotify.id)) { // set elements on @@ -965,12 +959,12 @@ layui.define(['table', 'jquery', 'element'], function (exports) { removeOverlay = document.getElementById(notifyOverlay.id); } // set elements on - + // timeout vars on var timeoutHide; var timeoutRemove; // timeout vars off - + // hide notify elm and hide overlay on var hideNotifyElementsAndOverlay = function () { removeDiv.classList.add('remove'); @@ -980,7 +974,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { clearTimeout(timeoutHide); }; // hide notify elm and hide overlay off - + // remove notify elm and wrapper on var removeNotifyElmentsAndWrapper = function () { var notifyExist = document.getElementById(ntflxNotify.id); @@ -996,8 +990,8 @@ layui.define(['table', 'jquery', 'element'], function (exports) { clearTimeout(timeoutRemove); }; // remove notify elm and wrapper off - - // if close button and callback undefined on + + // if close button and callback undefined on if (newNotifySettings.closeButton && !callback) { var closeButtonElm = document.getElementById(ntflxNotify.id).querySelectorAll('span.notify-close-button')[0]; closeButtonElm.addEventListener('click', function () { @@ -1009,7 +1003,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }); } // if close button and callback undefined off - + // if callback or click to close on if ((callback && typeof callback === 'function') || newNotifySettings.clickToClose) { removeDiv.addEventListener('click', function (e) { @@ -1024,7 +1018,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }); } // if callback or click to close off - + // else auto remove on if (!newNotifySettings.closeButton && !callback) { timeoutHide = setTimeout(function () { @@ -1037,7 +1031,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // else auto remove off } // remove by timeout or click off - + // notify - show only the last one on if (newNotifySettings.showOnlyTheLastOne && notiflixNotifyCount > 0) { var allNotifyElmNotTheLastOne = document.querySelectorAll('[id^=' + newNotifySettings.ID + '-]:not([id=' + newNotifySettings.ID + '-' + notiflixNotifyCount + '])'); @@ -1049,17 +1043,17 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } } // notify - show only the last one off - + } else { notiflixConsoleError('Notiflix Error', 'Where is the arguments?'); } }; // Notiflix: Notify Single off - - + + // Notiflix: Report Single on var NotiflixReport = function (title, message, buttonText, buttonCallback, theType, staticType) { - + // check the arguments on if (!title) { title = 'Notiflix ' + staticType; } if (!message) { @@ -1079,7 +1073,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { if (!buttonText) { buttonText = 'Okay'; } if (!buttonCallback) { buttonCallback = undefined; } // check the arguments off - + // if plainText true = HTML tags not allowed on if (newReportSettings.plainText) { title = notiflixPlaintext(title); @@ -1087,7 +1081,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { buttonText = notiflixPlaintext(buttonText); } // if plainText true = HTML tags not allowed off - + // if plainText false but the contents length more than *MaxLength = HTML tags error on if (!newReportSettings.plainText) { if (title.length > newReportSettings.titleMaxLength) { @@ -1107,7 +1101,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } } // if plainText false but the contents length more than *MaxLength = HTML tags error off - + // max length on if (title.length > newReportSettings.titleMaxLength) { title = title.substring(0, newReportSettings.titleMaxLength) + '...'; @@ -1119,13 +1113,13 @@ layui.define(['table', 'jquery', 'element'], function (exports) { buttonText = buttonText.substring(0, newReportSettings.buttonMaxLength) + '...'; } // max length off - + // if cssAnimaion false -> duration on if (!newReportSettings.cssAnimation) { newReportSettings.cssAnimationDuration = 0; } // if cssAnimaion false -> duration off - + // report wrap on var docBody = document.body; var ntflxReportWrap = document.createElement('div'); @@ -1135,21 +1129,21 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ntflxReportWrap.style.zIndex = newReportSettings.zindex; ntflxReportWrap.style.borderRadius = newReportSettings.borderRadius; ntflxReportWrap.style.fontFamily = '"' + newReportSettings.fontFamily + '"' + ', sans-serif'; - + // rtl on if (newReportSettings.rtl) { ntflxReportWrap.setAttribute('dir', 'rtl'); ntflxReportWrap.classList.add('rtl-on'); } // rtl off - + // overlay on var reportOverlay = ''; if (newReportSettings.backOverlay) { reportOverlay = '
    '; } // overlay off - + // svg icon on var svgIcon = ''; if (staticType === 'Success') { @@ -1162,25 +1156,25 @@ layui.define(['table', 'jquery', 'element'], function (exports) { svgIcon = notiflixReportSvgInfo(newReportSettings.svgSize, theType.svgColor); } // svg icon off - + ntflxReportWrap.innerHTML = reportOverlay + '
    ' + '
    ' + svgIcon + '
    ' + '
    ' + title + '
    ' + '

    ' + message + '

    ' + '' + buttonText + '' + '
    '; - + // if there is no report element if (!document.getElementById(ntflxReportWrap.id)) { // append docBody.appendChild(ntflxReportWrap); - - // vertical align on + + // vertical align on var windowH = Math.round(window.innerHeight); var reportH = Math.round(document.getElementById(ntflxReportWrap.id).offsetHeight); ntflxReportWrap.style.top = (windowH - reportH) / 2 + 'px'; // vertical align off - + // callback on var getReportWrap = document.getElementById(ntflxReportWrap.id); var reportButton = document.getElementById('NXReportButton'); @@ -1190,7 +1184,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { buttonCallback(); } // if callback off - + // remove element on getReportWrap.classList.add('remove'); var timeout = setTimeout(function () { @@ -1202,21 +1196,21 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // remove element off }); // callback off - + } // report wrap off - + }; // Notiflix: Report Single off - - + + // Notiflix: Confirm Single on var NotiflixConfirm = function (title, message, okButtonText, cancelButtonText, okButtonCallback, cancelButtonCallback) { // if not initialized pretend like init if (!newConfirmSettings) { Notiflix.Confirm.Init({}); } - + // if plainText true => HTML tags not allowed on if (newConfirmSettings.plainText) { title = notiflixPlaintext(title); @@ -1225,7 +1219,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { cancelButtonText = notiflixPlaintext(cancelButtonText); } // if plainText true => HTML tags not allowed off - + // if plainText false but the contents length more than *MaxLength = HTML tags error on if (!newConfirmSettings.plainText) { if (title.length > newConfirmSettings.titleMaxLength) { @@ -1248,7 +1242,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } } // if plainText false but the contents length more than *MaxLength = HTML tags error off - + // max length on if (title.length > newConfirmSettings.titleMaxLength) { title = title.substring(0, newConfirmSettings.titleMaxLength) + '...'; @@ -1263,13 +1257,13 @@ layui.define(['table', 'jquery', 'element'], function (exports) { cancelButtonText = cancelButtonText.substring(0, newConfirmSettings.buttonsMaxLength) + '...'; } // max length off - + // if cssAnimaion false -> duration on if (!newConfirmSettings.cssAnimation) { newConfirmSettings.cssAnimationDuration = 0; } // if cssAnimaion false -> duration off - + // confirm wrap on var docBody = document.body; var ntflxConfirmWrap = document.createElement('div'); @@ -1277,32 +1271,32 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ntflxConfirmWrap.className = newConfirmSettings.className + (newConfirmSettings.cssAnimation ? ' with-animation nx-' + newConfirmSettings.cssAnimationStyle : ''); ntflxConfirmWrap.style.width = newConfirmSettings.width; ntflxConfirmWrap.style.zIndex = newConfirmSettings.zindex; - + // rtl on if (newConfirmSettings.rtl) { ntflxConfirmWrap.setAttribute('dir', 'rtl'); ntflxConfirmWrap.classList.add('rtl-on'); } // rtl off - + // font-family on ntflxConfirmWrap.style.fontFamily = '"' + newConfirmSettings.fontFamily + '"' + ', sans-serif'; // font-family off - + // if background overlay true on var confirmOverlay = ''; if (newConfirmSettings.backOverlay) { confirmOverlay = '
    '; } // if background overlay true off - + // if have a callback => add cancel button on var cancelButtonHTML = ''; if (okButtonCallback) { cancelButtonHTML = '' + cancelButtonText + ''; } // if have a callback => add cancel button off - + ntflxConfirmWrap.innerHTML = confirmOverlay + '
    ' + '
    ' + @@ -1315,12 +1309,12 @@ layui.define(['table', 'jquery', 'element'], function (exports) { '
    ' + '
    '; // confirm wrap off - + // if there is no confirm box on if (!document.getElementById(ntflxConfirmWrap.id)) { docBody.appendChild(ntflxConfirmWrap); - - // position on + + // position on if (newConfirmSettings.position === 'center') { // if center-center var windowH = Math.round(window.innerHeight); var confirmH = Math.round(document.getElementById(ntflxConfirmWrap.id).offsetHeight); @@ -1361,11 +1355,11 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ntflxConfirmWrap.style.margin = 'auto'; } // position off - + // buttons listener on var confirmCloseWrap = document.getElementById(ntflxConfirmWrap.id); var okButton = document.getElementById('NXConfirmButtonOk'); - + // ok button listener on okButton.addEventListener('click', function () { // if ok callback && if ok callback is a function @@ -1373,7 +1367,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { okButtonCallback(); } confirmCloseWrap.classList.add('remove'); - + var timeout = setTimeout(function () { if (confirmCloseWrap.parentNode !== null) { confirmCloseWrap.parentNode.removeChild(confirmCloseWrap); @@ -1382,7 +1376,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { }, newConfirmSettings.cssAnimationDuration); }); // ok button listener off - + // if ok callback && if ok callback a function => add Cancel Button listener on if (okButtonCallback && typeof okButtonCallback === 'function') { // cancel button listener on @@ -1393,7 +1387,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { cancelButtonCallback(); } confirmCloseWrap.classList.add('remove'); - + var timeout = setTimeout(function () { if (confirmCloseWrap.parentNode !== null) { confirmCloseWrap.parentNode.removeChild(confirmCloseWrap); @@ -1409,8 +1403,8 @@ layui.define(['table', 'jquery', 'element'], function (exports) { // if there is no confirm box off }; // Notiflix: Confirm Single off - - + + // Notiflix: Loading Single on var NotiflixLoading = function (message, iconType, display, theDelay) { // if not initialized pretend like init @@ -1423,7 +1417,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } // show loading if (display) { - + // if message settings on if (message.toString().length > newLoadingSettings.messageMaxLength) { message = notiflixPlaintext(message).toString().substring(0, newLoadingSettings.messageMaxLength) + '...'; @@ -1438,13 +1432,13 @@ layui.define(['table', 'jquery', 'element'], function (exports) { messageHTML = '

    ' + message + '

    '; } // if message settings off - + // if cssAnimaion false -> duration on if (!newLoadingSettings.cssAnimation) { newLoadingSettings.cssAnimationDuration = 0; } // if cssAnimaion false -> duration off - + // svgIcon on var svgIcon = ''; if (iconType === 'standard') { @@ -1473,7 +1467,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } var svgIconHTML = '
    ' + svgIcon + '
    '; // svgIcon off - + // loading wrap on var docBody = document.body; var ntflxLoadingWrap = document.createElement('div'); @@ -1483,23 +1477,23 @@ layui.define(['table', 'jquery', 'element'], function (exports) { ntflxLoadingWrap.style.background = newLoadingSettings.backgroundColor; ntflxLoadingWrap.style.animationDuration = newLoadingSettings.cssAnimationDuration + 'ms'; ntflxLoadingWrap.style.fontFamily = '"' + newLoadingSettings.fontFamily + '"' + ', sans-serif'; - + // rtl on if (newLoadingSettings.rtl) { ntflxLoadingWrap.setAttribute('dir', 'rtl'); ntflxLoadingWrap.classList.add('rtl-on'); } // rtl off - + // append on ntflxLoadingWrap.innerHTML = svgIconHTML + messageHTML; - + // if there is no loading element if (!document.getElementById(ntflxLoadingWrap.id)) { // append docBody.appendChild(ntflxLoadingWrap); - - // if click to close + + // if click to close if (newLoadingSettings.clickToClose) { var loadingWrapElm = document.getElementById(ntflxLoadingWrap.id); loadingWrapElm.addEventListener('click', function () { @@ -1514,7 +1508,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } } // append off - + } // remove loading else { @@ -1535,7 +1529,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } }; // Notiflix: Loading Single off - + // Notiflix: Loading Change Message on var NotiflixLoadingChange = function (newMessage) { // check the new message @@ -1553,7 +1547,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { newMessage = notiflixPlaintext(newMessage).toString(); } // max length off - + // there is a message element var oldMessageElm = document.getElementById(loadingSettings.ID).getElementsByTagName('p')[0]; if (oldMessageElm) { @@ -1576,7 +1570,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var messageWrap = document.getElementById(loadingSettings.ID); messageWrap.appendChild(newMessageHTML); // create a new message element off - + // vertical align svg on var svgDivElm = document.getElementById(loadingSettings.ID).getElementsByTagName('div')[0]; var svgNewPosTop = '-' + Math.round(intSvgSize - (intSvgSize / 4)).toString() + 'px'; @@ -1591,76 +1585,76 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } }; // Notiflix: Loading Change Message off - - + + // Notiflix: Block or Unblock Element on var notiflixBlockElementCounter = 0; var NotiflixBlockUnblockElement = function (block, selector, iconType, message, theDelay) { - + // check typeof selector on if (typeof selector !== 'string') { notiflixConsoleError('Notiflix Error', 'The selector must be a String.'); return false; } // check typeof selector off - + // check the delay on if (typeof theDelay !== 'number') { theDelay = 0; } // check the delay off - + // check the selector on var getSelector = document.querySelectorAll(selector); if (getSelector.length > 0) { - + // if not initialized pretend like init on if (!newBlockSettings) { Notiflix.Block.Init({}); } // if not initialized pretend like init off - + // check the message on if (!message || (message && typeof message !== 'string')) { message = undefined; } // check the message off - + } else { notiflixConsoleError('Notiflix Error', 'You called the "Notiflix.Block..." function with "' + selector + '" selector, but there is no such element(s) on the document.'); return false; } // check the selector off - + // if cssAnimaion false => duration on if (!newBlockSettings.cssAnimation) { newBlockSettings.cssAnimationDuration = 0; } // if cssAnimaion false => duration off - + // check the class name on var blockClassName = 'notiflix-block'; if (newBlockSettings.className && typeof newBlockSettings.className === 'string') { blockClassName = newBlockSettings.className.trim(); } // check the class name off - + // check query limit on var getQueryLimit = (typeof newBlockSettings.querySelectorLimit === 'number' ? newBlockSettings.querySelectorLimit : 200); var checkQueryLimit = (getSelector.length >= getQueryLimit ? getQueryLimit : getSelector.length); // check query limit off - + // block if (block) { - + // add element(s) and style on for (var i = 0; i < checkQueryLimit; i++) { var eachSelector = getSelector[i]; - + // check block element exist on var eachBlockElement = eachSelector.querySelectorAll('[id^=' + blockSettings.ID + ']'); if (eachBlockElement.length < 1) { - + // check the icon on var icon = ''; if (iconType) { @@ -1683,7 +1677,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { var svgPosTop = (message && message.length > 0 ? '-' + posRatio : 0); var iconElement = '' + icon + ''; // check the icon off - + // check the message on var messageElement = ''; var messageHeight = 0; @@ -1697,7 +1691,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { messageElement = '' + message + ''; } // check the message off - + // block element on notiflixBlockElementCounter++; var notiflixBlockWrap = document.createElement('div'); @@ -1709,22 +1703,22 @@ layui.define(['table', 'jquery', 'element'], function (exports) { notiflixBlockWrap.style.animationDuration = newBlockSettings.cssAnimationDuration + 'ms'; notiflixBlockWrap.style.fontFamily = '"' + newBlockSettings.fontFamily + '"' + ', sans-serif'; // block element off - + // block element rtl on if (newBlockSettings.rtl) { notiflixBlockWrap.setAttribute('dir', 'rtl'); notiflixBlockWrap.classList.add('rtl-on'); } // block element rtl off - + // block element data on notiflixBlockWrap.innerHTML = iconElement + messageElement; // block element data off - + // append block element on var eachSelectorPos = getComputedStyle(eachSelector).getPropertyValue('position'); eachSelectorPos = eachSelectorPos && typeof eachSelectorPos === 'string' ? eachSelectorPos.toLowerCase() : 'relative'; - + // selector internal style on var eachSelectorIdOrClass = ''; if (eachSelector.getAttribute('id')) { @@ -1732,7 +1726,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } else if (eachSelector.classList[0]) { eachSelectorIdOrClass = '.' + eachSelector.classList[0]; } - + var positions = ['absolute', 'relative', 'fixed', 'sticky']; if (positions.indexOf(eachSelectorPos) <= -1) { var minHeight = Math.round((parseInt(messageHeight) + intSvgSize) * 1.5).toString() + 'px'; @@ -1746,7 +1740,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { eachSelector.classList.add(blockClassName + '-position'); } // selector internal style off - + // append eachSelector.appendChild(notiflixBlockWrap); // append block element off @@ -1757,26 +1751,26 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } // unblock/remove else { - + // Step 3 => Remove each block element on var removeBlockElements = function (eachOne) { var timeout = setTimeout(function () { // remove element eachOne.remove(); - + // remove this selector internal style var eachOneId = eachOne.getAttribute('id'); var eachOneStyle = document.getElementById('Style-' + eachOneId); if (eachOneStyle) { eachOneStyle.remove(); } - + // clear timeout clearTimeout(timeout); }, newBlockSettings.cssAnimationDuration); } // Step 3 => Remove each block element off - + // Step 2A => Remove each block element on var removeClassBlockElements = function (eachBlockElement) { // if elements exist @@ -1797,28 +1791,28 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } } // Step 2A => Remove each block element on - + // Step 2B => Remove each selector class name on var removeEachSelectorClassName = function (eachSelector) { var timeout = setTimeout(function () { // remove class name var positionClass = blockClassName + '-position'; eachSelector.classList.remove(positionClass); - + // clear timeout clearTimeout(timeout); }, newBlockSettings.cssAnimationDuration + 300); } // Step 2B => Remove each selector class name off - + // Step 1 => Remove selector class name on var selectorTimeout = setTimeout(function () { for (var i = 0; i < checkQueryLimit; i++) { var eachSelector = getSelector[i]; - + // remove each selector class name removeEachSelectorClassName(eachSelector); - + // remove each block element eachBlockElement = eachSelector.querySelectorAll('[id^=' + blockSettings.ID + ']'); removeClassBlockElements(eachBlockElement); @@ -1830,8 +1824,8 @@ layui.define(['table', 'jquery', 'element'], function (exports) { } }; // Notiflix: Block or Unblock Element off - - + + // Notiflix: Report SVG Success on var notiflixReportSvgSuccess = function (width, color) { if (!width) { width = '110px'; } @@ -1840,7 +1834,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return reportSvgSuccess; }; // Notiflix: Report SVG Success off - + // Notiflix: Report SVG Failure on var notiflixReportSvgFailure = function (width, color) { if (!width) { width = '110px'; } @@ -1849,7 +1843,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return reportSvgFailure; }; // Notiflix: Report SVG Failure off - + // Notiflix: Report SVG Warning on var notiflixReportSvgWarning = function (width, color) { if (!width) { width = '110px'; } @@ -1858,7 +1852,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return reportSvgWarning; }; // Notiflix: Report SVG Warning off - + // Notiflix: Report SVG Info on var notiflixReportSvgInfo = function (width, color) { if (!width) { width = '110px'; } @@ -1867,8 +1861,8 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return reportSvgInfo; }; // Notiflix: Report SVG Info off - - + + // Notiflix: Indicator SVG standard on var notiflixIndicatorSvgStandard = function (width, color) { if (!width) { width = '60px'; } @@ -1877,7 +1871,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return standard; }; // Notiflix: Indicator SVG standard off - + // Notiflix: Indicator SVG hourglass on var notiflixIndicatorSvgHourglass = function (width, color) { if (!width) { width = '60px'; } @@ -1886,7 +1880,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return hourglass; }; // Notiflix: Indicator SVG hourglass off - + // Notiflix: Indicator SVG circle on var notiflixIndicatorSvgCircle = function (width, color) { if (!width) { width = '60px'; } @@ -1895,7 +1889,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return circle; }; // Notiflix: Indicator SVG circle off - + // Notiflix: Indicator SVG arrows on var notiflixIndicatorSvgArrows = function (width, color) { if (!width) { width = '60px'; } @@ -1904,7 +1898,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return arrows; }; // Notiflix: Indicator SVG arrows off - + // Notiflix: Indicator SVG dots on var notiflixIndicatorSvgDots = function (width, color) { if (!width) { width = '60px'; } @@ -1913,7 +1907,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return dots; }; // Notiflix: Indicator SVG dots off - + // Notiflix: Indicator SVG pulse on var notiflixIndicatorSvgPulse = function (width, color) { if (!width) { width = '60px'; } @@ -1922,7 +1916,7 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return pulse; }; // Notiflix: Indicator SVG pulse off - + // Notiflix: Indicator SVG notiflix on var notiflixIndicatorSvgNotiflix = function (width, white, green) { if (!width) { width = '60px'; } @@ -1932,166 +1926,166 @@ layui.define(['table', 'jquery', 'element'], function (exports) { return notiflixIcon; }; // Notiflix: Indicator SVG notiflix off - - + + /* * 侧边滑出弹层插件 mSlider.js * DH (https://denghao.me) * 2018-07 */ - (function(b, c) { - function a(d) { - this.opts = { - "direction": d.direction || "left", - "distance": d.distance || "60%", - "dom": this.Q(d.dom), - "time": d.time || "", - "maskClose": (d.maskClose + "").toString() !== "false" ? true : false, - "callback": d.callback || "" - }; - this.rnd = this.rnd(); - this.dom = this.opts.dom[0]; - this.wrap = ""; - this.inner = ""; - this.mask = ""; - this.init() - } - a.prototype = { - Q: function(d) { - return document.querySelectorAll(d) - }, - isMobile: function() { - return navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i) ? true : false - }, - addEvent: function(f, e, d) { - if (f.attachEvent) { - f.attachEvent("on" + e, d) - } else { - f.addEventListener(e, d, false) - } - }, - rnd: function() { - return Math.random().toString(36).substr(2, 6) - }, - init: function() { - var g = this; - if (!g.dom) { - console.log("未正确绑定弹窗容器"); - return - } - var d = document.createElement("div"); - var e = document.createElement("div"); - var f = document.createElement("div"); - d.setAttribute("class", "mSlider-main ms-" + g.rnd); - e.setAttribute("class", "mSlider-inner"); - f.setAttribute("class", "mSlider-mask"); - g.Q("body")[0].appendChild(d); - g.Q(".ms-" + g.rnd)[0].appendChild(e); - g.Q(".ms-" + g.rnd)[0].appendChild(f); - g.wrap = g.Q(".ms-" + g.rnd)[0]; - g.inner = g.Q(".ms-" + g.rnd + " .mSlider-inner")[0]; - g.mask = g.Q(".ms-" + g.rnd + " .mSlider-mask")[0]; - g.inner.appendChild(g.dom); - switch (g.opts.direction) { - case "top": - g.top = "0"; - g.left = "0"; - g.width = "100%"; - g.height = g.opts.distance; - g.translate = "0,-100%,0"; - break; - case "bottom": - g.bottom = "0"; - g.left = "0"; - g.width = "100%"; - g.height = g.opts.distance; - g.translate = "0,100%,0"; - break; - case "right": - g.top = "0"; - g.right = "0"; - g.width = g.opts.distance; - g.height = document.documentElement.clientHeight + "px"; - g.translate = "100%,0,0"; - break; - default: - g.top = "0"; - g.left = "0"; - g.width = g.opts.distance; - g.height = document.documentElement.clientHeight + "px"; - g.translate = "-100%,0,0" - } - g.wrap.style.display = "none"; - g.wrap.style.position = "fixed"; - g.wrap.style.top = "0"; - g.wrap.style.left = "0"; - g.wrap.style.width = "100%"; - g.wrap.style.height = "100%"; - g.wrap.style.zIndex = 99; - g.inner.style.position = "absolute"; - g.inner.style.top = g.top; - g.inner.style.bottom = g.bottom; - g.inner.style.left = g.left; - g.inner.style.right = g.right; - g.inner.style.width = g.width; - g.inner.style.height = g.height; - g.inner.style.backgroundColor = "#fff"; - g.inner.style.transform = "translate3d(" + g.translate + ")"; - g.inner.style.webkitTransition = "all .2s ease-out"; - g.inner.style.transition = "all .2s ease-out"; - g.inner.style.zIndex = 100; - g.mask.style.width = "100%"; - g.mask.style.height = "100%"; - g.mask.style.opacity = "0"; - g.mask.style.backgroundColor = "black"; - g.mask.style.zIndex = "98"; - g.mask.style.webkitTransition = "all .2s ease-out"; - g.mask.style.transition = "all .2s ease-out"; - g.mask.style.webkitBackfaceVisibility = "hidden"; - g.events() - }, - open: function() { - var d = this; - d.wrap.style.display = "block"; - - setTimeout(function() { - d.inner.style.transform = "translate3d(0,0,0)"; - d.inner.style.webkitTransform = "translate3d(0,0,0)"; - d.mask.style.opacity = 0.5 - }, 30); - if (d.opts.time) { - d.timer = setTimeout(function() { - d.close() - }, d.opts.time) - } - }, - close: function() { - var d = this; - d.timer && clearTimeout(d.timer); - d.inner.style.webkitTransform = "translate3d(" + d.translate + ")"; - d.inner.style.transform = "translate3d(" + d.translate + ")"; - d.mask.style.opacity = 0; - setTimeout(function() { - d.wrap.style.display = "none"; - d.timer = null; - d.opts.callback && d.opts.callback() - }, 300) - }, - events: function() { - var d = this; - d.addEvent(d.mask, "touchmove", function(f) { - f.preventDefault() - }); - d.addEvent(d.mask, (d.isMobile() ? "touchend" : "click"), function(f) { - if (d.opts.maskClose) { - d.close() - } - }) - } - }; - b.mSlider = a - })(window); - + // (function(b, c) { + // function a(d) { + // this.opts = { + // "direction": d.direction || "left", + // "distance": d.distance || "60%", + // "dom": this.Q(d.dom), + // "time": d.time || "", + // "maskClose": (d.maskClose + "").toString() !== "false" ? true : false, + // "callback": d.callback || "" + // }; + // this.rnd = this.rnd(); + // this.dom = this.opts.dom[0]; + // this.wrap = ""; + // this.inner = ""; + // this.mask = ""; + // this.init() + // } + // a.prototype = { + // Q: function(d) { + // return document.querySelectorAll(d) + // }, + // isMobile: function() { + // return navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i) ? true : false + // }, + // addEvent: function(f, e, d) { + // if (f.attachEvent) { + // f.attachEvent("on" + e, d) + // } else { + // f.addEventListener(e, d, false) + // } + // }, + // rnd: function() { + // return Math.random().toString(36).substr(2, 6) + // }, + // init: function() { + // var g = this; + // if (!g.dom) { + // console.log("未正确绑定弹窗容器"); + // return + // } + // var d = document.createElement("div"); + // var e = document.createElement("div"); + // var f = document.createElement("div"); + // d.setAttribute("class", "mSlider-main ms-" + g.rnd); + // e.setAttribute("class", "mSlider-inner"); + // f.setAttribute("class", "mSlider-mask"); + // g.Q("body")[0].appendChild(d); + // g.Q(".ms-" + g.rnd)[0].appendChild(e); + // g.Q(".ms-" + g.rnd)[0].appendChild(f); + // g.wrap = g.Q(".ms-" + g.rnd)[0]; + // g.inner = g.Q(".ms-" + g.rnd + " .mSlider-inner")[0]; + // g.mask = g.Q(".ms-" + g.rnd + " .mSlider-mask")[0]; + // g.inner.appendChild(g.dom); + // switch (g.opts.direction) { + // case "top": + // g.top = "0"; + // g.left = "0"; + // g.width = "100%"; + // g.height = g.opts.distance; + // g.translate = "0,-100%,0"; + // break; + // case "bottom": + // g.bottom = "0"; + // g.left = "0"; + // g.width = "100%"; + // g.height = g.opts.distance; + // g.translate = "0,100%,0"; + // break; + // case "right": + // g.top = "0"; + // g.right = "0"; + // g.width = g.opts.distance; + // g.height = document.documentElement.clientHeight + "px"; + // g.translate = "100%,0,0"; + // break; + // default: + // g.top = "0"; + // g.left = "0"; + // g.width = g.opts.distance; + // g.height = document.documentElement.clientHeight + "px"; + // g.translate = "-100%,0,0" + // } + // g.wrap.style.display = "none"; + // g.wrap.style.position = "fixed"; + // g.wrap.style.top = "0"; + // g.wrap.style.left = "0"; + // g.wrap.style.width = "100%"; + // g.wrap.style.height = "100%"; + // g.wrap.style.zIndex = 99; + // g.inner.style.position = "absolute"; + // g.inner.style.top = g.top; + // g.inner.style.bottom = g.bottom; + // g.inner.style.left = g.left; + // g.inner.style.right = g.right; + // g.inner.style.width = g.width; + // g.inner.style.height = g.height; + // g.inner.style.backgroundColor = "#fff"; + // g.inner.style.transform = "translate3d(" + g.translate + ")"; + // g.inner.style.webkitTransition = "all .2s ease-out"; + // g.inner.style.transition = "all .2s ease-out"; + // g.inner.style.zIndex = 100; + // g.mask.style.width = "100%"; + // g.mask.style.height = "100%"; + // g.mask.style.opacity = "0"; + // g.mask.style.backgroundColor = "black"; + // g.mask.style.zIndex = "98"; + // g.mask.style.webkitTransition = "all .2s ease-out"; + // g.mask.style.transition = "all .2s ease-out"; + // g.mask.style.webkitBackfaceVisibility = "hidden"; + // g.events() + // }, + // open: function() { + // var d = this; + // d.wrap.style.display = "block"; + + // setTimeout(function() { + // d.inner.style.transform = "translate3d(0,0,0)"; + // d.inner.style.webkitTransform = "translate3d(0,0,0)"; + // d.mask.style.opacity = 0.5 + // }, 30); + // if (d.opts.time) { + // d.timer = setTimeout(function() { + // d.close() + // }, d.opts.time) + // } + // }, + // close: function() { + // var d = this; + // d.timer && clearTimeout(d.timer); + // d.inner.style.webkitTransform = "translate3d(" + d.translate + ")"; + // d.inner.style.transform = "translate3d(" + d.translate + ")"; + // d.mask.style.opacity = 0; + // setTimeout(function() { + // d.wrap.style.display = "none"; + // d.timer = null; + // d.opts.callback && d.opts.callback() + // }, 300) + // }, + // events: function() { + // var d = this; + // d.addEvent(d.mask, "touchmove", function(f) { + // f.preventDefault() + // }); + // d.addEvent(d.mask, (d.isMobile() ? "touchend" : "click"), function(f) { + // if (d.opts.maskClose) { + // d.close() + // } + // }) + // } + // }; + // b.mSlider = a + // })(window); + exports(MOD_NAME,laytpOper); }) diff --git a/public/static/component/laytp/module/message.js b/public/static/component/laytp/module/message.js index 51bf1694e6daa2214e43c0c2dce1f67a82f4c59e..08665f8dc186c2f757a2f2d52fcf593d8609a718 100644 --- a/public/static/component/laytp/module/message.js +++ b/public/static/component/laytp/module/message.js @@ -1,15 +1,15 @@ -layui.define(['table', 'jquery', 'element'], function(exports) { +layui.define(['table', 'jquery', 'element'], function (exports) { "use strict"; var MOD_NAME = 'message', $ = layui.jquery, element = layui.element; - var message = function(opt) { + var message = function (opt) { this.option = opt; }; - message.prototype.render = function(opt) { + message.prototype.render = function (opt) { //默认配置值 var option = { elem: opt.elem, @@ -21,15 +21,39 @@ layui.define(['table', 'jquery', 'element'], function(exports) { option.data = getData(option.url); var notice = createHtml(option); $(option.elem).html(notice); + var targetNode = document.querySelector(option.elem + ' .laytp-notice') + var mutationObserver = new MutationObserver(function (mutationsList, observer) { + if (getComputedStyle(targetNode).display !== 'none') { + var rect = targetNode.getBoundingClientRect(); + //是否超出右侧屏幕 + if (rect.right > $(window).width()) { + var elemRight = document.querySelector(option.elem).getBoundingClientRect().right; + var offsetRight = 20; + targetNode.style.right = elemRight - $(window).width() + offsetRight + 'px'; + targetNode.style.left = 'unset'; + } + } + }); + mutationObserver.observe(targetNode, { + attributes: true, + childList: false, + subtree: false, + attributeOldValue: false, + attributeFilter: ['class'] + }); } - setTimeout(function(){ + setTimeout(function () { element.init(); - },300); + $(opt.elem + " li").click(function (e) { + $(this).siblings().removeClass('laytp-this'); + $(this).addClass('laytp-this'); + }) + }, 300); return new message(option); } - - message.prototype.click = function(callback){ - $("*[notice-id]").click(function(event) { + + message.prototype.click = function (callback) { + $("*[notice-id]").click(function (event) { event.preventDefault(); var id = $(this).attr("notice-id"); var title = $(this).attr("notice-title"); @@ -38,58 +62,72 @@ layui.define(['table', 'jquery', 'element'], function(exports) { callback(id, title, context, form); }) } - + + /** 刷 新 消 息 */ + message.prototype.reload = function () { + + } + /** 同 步 请 求 获 取 数 据 */ function getData(url) { $.ajaxSettings.async = false; var data = null; - $.ajax({ - url: localStorage.getItem("staticDomain") + url, - type:"GET", - dataType:"JSONP", - success:function(result){ - data = result; - }, + $.get(url, function (result) { + data = result; }); - // $.get(localStorage.getItem("staticDomain") + url, function(result) { - // data = result; - // }); $.ajaxSettings.async = true; return data; } function createHtml(option) { - var notice = '
  • ' + - '' + - '
    '; - + var count = 0; var noticeTitle = '
      '; - var noticeContent = '
      '; + var noticeContent = '
      '; + // 根据 data 便利数据 - $.each(option.data, function(i, item) { + $.each(option.data, function (i, item) { if (i === 0) { - noticeTitle += '
    • ' + item.title + '
    • '; + noticeTitle += '
    • ' + item.title + '
    • '; noticeContent += '
      '; } else { noticeTitle += '
    • ' + item.title + '
    • '; noticeContent += '
      '; } - $.each(item.children, function(i, note) { + $.each(item.children, function (i, note) { + count++; noticeContent += '
      ' + - '' + - '' + note.title + '' + - '' + note.time + '' + - '
      '; + '" notice-title="' + note.title + '" notice-id="' + note.id + '">' ; + + if (note.avatar) + noticeContent +=''; + noticeContent +='
      ' + note.title + '
      ' + + '
      ' + note.time + '
      ' + + '
      '; }) + + // 空内容 + if(item.children.length==0){ + noticeContent +='

      暂无数据

      '; + } noticeContent += '
      '; }) + var notice; + if (count > 0){ + notice = '
    • ' + + '' + + '
      '; + }else { + notice = '
    • ' + + '' + + '
      '; + } + noticeTitle += '
    '; noticeContent += '
    '; notice += noticeTitle; diff --git a/public/static/component/laytp/module/notice.js b/public/static/component/laytp/module/notice.js index 4ea67ec8b3e784abd5b28d103042bd3499bdaf2d..87da8450be4bfc00a246a6d02815978ca2e3f3e7 100644 --- a/public/static/component/laytp/module/notice.js +++ b/public/static/component/laytp/module/notice.js @@ -13,7 +13,7 @@ }; var cssStyle = $( - '' + '' ); $("body").append(cssStyle); diff --git a/public/static/component/laytp/module/nprogress.js b/public/static/component/laytp/module/nprogress.js new file mode 100644 index 0000000000000000000000000000000000000000..882039a763a3087e66f7bf2e9945fd84fc524e92 --- /dev/null +++ b/public/static/component/laytp/module/nprogress.js @@ -0,0 +1,503 @@ +/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress + * @license MIT */ + +;(function(root, factory) { + + if (typeof define === 'function' && define.amd) { + define(factory); + } else if (typeof exports === 'object') { + module.exports = factory(); + } else { + root.NProgress = factory(); + } + +})(this, function() { + var NProgress = {}; + + NProgress.version = '0.2.0'; + + var Settings = NProgress.settings = { + minimum: 0.08, + easing: 'linear', + positionUsing: '', + speed: 200, + trickle: true, + trickleSpeed: 200, + showSpinner: true, + barSelector: '[role="bar"]', + spinnerSelector: '[role="spinner"]', + parent: 'body', + template: '
    ' + }; + + /** + * Updates configuration. + * + * NProgress.configure({ + * minimum: 0.1 + * }); + */ + NProgress.configure = function(options) { + var key, value; + for (key in options) { + value = options[key]; + if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value; + } + + return this; + }; + + /** + * Last number. + */ + + NProgress.status = null; + + /** + * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`. + * + * NProgress.set(0.4); + * NProgress.set(1.0); + */ + + NProgress.set = function(n) { + var started = NProgress.isStarted(); + + n = clamp(n, Settings.minimum, 1); + NProgress.status = (n === 1 ? null : n); + + var progress = NProgress.render(!started), + bar = progress.querySelector(Settings.barSelector), + speed = Settings.speed, + ease = Settings.easing; + + progress.offsetWidth; /* Repaint */ + + queue(function(next) { + // Set positionUsing if it hasn't already been set + if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS(); + + // Add transition + css(bar, barPositionCSS(n, speed, ease)); + + if (n === 1) { + // Fade out + css(progress, { + transition: 'none', + opacity: 1 + }); + progress.offsetWidth; /* Repaint */ + + setTimeout(function() { + css(progress, { + transition: 'all ' + speed + 'ms linear', + opacity: 0 + }); + setTimeout(function() { + NProgress.remove(); + next(); + }, speed); + }, speed); + } else { + setTimeout(next, speed); + } + }); + + return this; + }; + + NProgress.isStarted = function() { + return typeof NProgress.status === 'number'; + }; + + /** + * Shows the progress bar. + * This is the same as setting the status to 0%, except that it doesn't go backwards. + * + * NProgress.start(); + * + */ + NProgress.start = function() { + if (!NProgress.status) NProgress.set(0); + + var work = function() { + setTimeout(function() { + if (!NProgress.status) return; + NProgress.trickle(); + work(); + }, Settings.trickleSpeed); + }; + + if (Settings.trickle) work(); + + return this; + }; + + /** + * Hides the progress bar. + * This is the *sort of* the same as setting the status to 100%, with the + * difference being `done()` makes some placebo effect of some realistic motion. + * + * NProgress.done(); + * + * If `true` is passed, it will show the progress bar even if its hidden. + * + * NProgress.done(true); + */ + + NProgress.done = function(force) { + if (!force && !NProgress.status) return this; + + return NProgress.inc(0.3 + 0.5 * Math.random()).set(1); + }; + + /** + * Increments by a random amount. + */ + + NProgress.inc = function(amount) { + var n = NProgress.status; + + if (!n) { + return NProgress.start(); + } else if(n > 1) { + return; + } else { + if (typeof amount !== 'number') { + if (n >= 0 && n < 0.2) { amount = 0.1; } + else if (n >= 0.2 && n < 0.5) { amount = 0.04; } + else if (n >= 0.5 && n < 0.8) { amount = 0.02; } + else if (n >= 0.8 && n < 0.99) { amount = 0.005; } + else { amount = 0; } + } + + n = clamp(n + amount, 0, 0.994); + return NProgress.set(n); + } + }; + + NProgress.trickle = function() { + return NProgress.inc(); + }; + + /** + * Waits for all supplied jQuery promises and + * increases the progress as the promises resolve. + * + * @param $promise jQUery Promise + */ + (function() { + var initial = 0, current = 0; + + NProgress.promise = function($promise) { + if (!$promise || $promise.state() === "resolved") { + return this; + } + + if (current === 0) { + NProgress.start(); + } + + initial++; + current++; + + $promise.always(function() { + current--; + if (current === 0) { + initial = 0; + NProgress.done(); + } else { + NProgress.set((initial - current) / initial); + } + }); + + return this; + }; + + })(); + + /** + * (Internal) renders the progress bar markup based on the `template` + * setting. + */ + + NProgress.render = function(fromStart) { + if (NProgress.isRendered()) return document.getElementById('nprogress'); + + addClass(document.documentElement, 'nprogress-busy'); + + var progress = document.createElement('div'); + progress.id = 'nprogress'; + progress.innerHTML = Settings.template; + + + + var bar = progress.querySelector(Settings.barSelector), + perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0), + parent = isDOM(Settings.parent) + ? Settings.parent + : document.querySelector(Settings.parent), + spinner + + css(bar, { + transition: 'all 0 linear', + transform: 'translate3d(' + perc + '%,0,0)' + }); + + if (!Settings.showSpinner) { + spinner = progress.querySelector(Settings.spinnerSelector); + spinner && removeElement(spinner); + } + + if (parent != document.body) { + addClass(parent, 'nprogress-custom-parent'); + } + + parent.appendChild(progress); + return progress; + }; + + /** + * Removes the element. Opposite of render(). + */ + + NProgress.remove = function() { + removeClass(document.documentElement, 'nprogress-busy'); + var parent = isDOM(Settings.parent) + ? Settings.parent + : document.querySelector(Settings.parent) + removeClass(parent, 'nprogress-custom-parent') + var progress = document.getElementById('nprogress'); + progress && removeElement(progress); + }; + + /** + * Checks if the progress bar is rendered. + */ + + NProgress.isRendered = function() { + return !!document.getElementById('nprogress'); + }; + + /** + * Determine which positioning CSS rule to use. + */ + + NProgress.getPositioningCSS = function() { + // Sniff on document.body.style + var bodyStyle = document.body.style; + + // Sniff prefixes + var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' : + ('MozTransform' in bodyStyle) ? 'Moz' : + ('msTransform' in bodyStyle) ? 'ms' : + ('OTransform' in bodyStyle) ? 'O' : ''; + + if (vendorPrefix + 'Perspective' in bodyStyle) { + // Modern browsers with 3D support, e.g. Webkit, IE10 + return 'translate3d'; + } else if (vendorPrefix + 'Transform' in bodyStyle) { + // Browsers without 3D support, e.g. IE9 + return 'translate'; + } else { + // Browsers without translate() support, e.g. IE7-8 + return 'margin'; + } + }; + + /** + * Helpers + */ + + function isDOM (obj) { + if (typeof HTMLElement === 'object') { + return obj instanceof HTMLElement + } + return ( + obj && + typeof obj === 'object' && + obj.nodeType === 1 && + typeof obj.nodeName === 'string' + ) + } + + function clamp(n, min, max) { + if (n < min) return min; + if (n > max) return max; + return n; + } + + /** + * (Internal) converts a percentage (`0..1`) to a bar translateX + * percentage (`-100%..0%`). + */ + + function toBarPerc(n) { + return (-1 + n) * 100; + } + + + /** + * (Internal) returns the correct CSS for changing the bar's + * position given an n percentage, and speed and ease from Settings + */ + + function barPositionCSS(n, speed, ease) { + var barCSS; + + if (Settings.positionUsing === 'translate3d') { + barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' }; + } else if (Settings.positionUsing === 'translate') { + barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' }; + } else { + barCSS = { 'margin-left': toBarPerc(n)+'%' }; + } + + barCSS.transition = 'all '+speed+'ms '+ease; + + return barCSS; + } + + /** + * (Internal) Queues a function to be executed. + */ + + var queue = (function() { + var pending = []; + + function next() { + var fn = pending.shift(); + if (fn) { + fn(next); + } + } + + return function(fn) { + pending.push(fn); + if (pending.length == 1) next(); + }; + })(); + + /** + * (Internal) Applies css properties to an element, similar to the jQuery + * css method. + * + * While this helper does assist with vendor prefixed property names, it + * does not perform any manipulation of values prior to setting styles. + */ + + var css = (function() { + var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ], + cssProps = {}; + + function camelCase(string) { + return string.replace(/^-ms-/, 'ms-').replace(/-([\da-z])/gi, function(match, letter) { + return letter.toUpperCase(); + }); + } + + function getVendorProp(name) { + var style = document.body.style; + if (name in style) return name; + + var i = cssPrefixes.length, + capName = name.charAt(0).toUpperCase() + name.slice(1), + vendorName; + while (i--) { + vendorName = cssPrefixes[i] + capName; + if (vendorName in style) return vendorName; + } + + return name; + } + + function getStyleProp(name) { + name = camelCase(name); + return cssProps[name] || (cssProps[name] = getVendorProp(name)); + } + + function applyCss(element, prop, value) { + prop = getStyleProp(prop); + element.style[prop] = value; + } + + return function(element, properties) { + var args = arguments, + prop, + value; + + if (args.length == 2) { + for (prop in properties) { + value = properties[prop]; + if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value); + } + } else { + applyCss(element, args[1], args[2]); + } + } + })(); + + /** + * (Internal) Determines if an element or space separated list of class names contains a class name. + */ + + function hasClass(element, name) { + var list = typeof element == 'string' ? element : classList(element); + return list.indexOf(' ' + name + ' ') >= 0; + } + + /** + * (Internal) Adds a class to an element. + */ + + function addClass(element, name) { + var oldList = classList(element), + newList = oldList + name; + + if (hasClass(oldList, name)) return; + + // Trim the opening space. + element.className = newList.substring(1); + } + + /** + * (Internal) Removes a class from an element. + */ + + function removeClass(element, name) { + var oldList = classList(element), + newList; + + if (!hasClass(element, name)) return; + + // Replace the class name. + newList = oldList.replace(' ' + name + ' ', ' '); + + // Trim the opening and closing spaces. + element.className = newList.substring(1, newList.length - 1); + } + + /** + * (Internal) Gets a space separated list of the class names on the element. + * The list is wrapped with a single space on each end to facilitate finding + * matches within the list. + */ + + function classList(element) { + return (' ' + (element && element.className || '') + ' ').replace(/\s+/gi, ' '); + } + + /** + * (Internal) Removes an element from the DOM. + */ + + function removeElement(element) { + element && element.parentNode && element.parentNode.removeChild(element); + } + + return NProgress; +}); + +layui.define([], function(exports) { + exports('nprogress', NProgress); +}); \ No newline at end of file diff --git a/public/static/component/laytp/module/operationDropdown.js b/public/static/component/laytp/module/operationDropdown.js index 0f3876ec8b22731b8f4a143a80468adb39ae0405..d5c5a1aaccb6a24e18259e6125e0da479527803b 100644 --- a/public/static/component/laytp/module/operationDropdown.js +++ b/public/static/component/laytp/module/operationDropdown.js @@ -121,6 +121,7 @@ layui.define(['jquery'], function(exports) { '
    ' + '

    ' + '' + option.title + diff --git a/public/static/component/laytp/module/popover/popover.js b/public/static/component/laytp/module/popover/popover.js new file mode 100644 index 0000000000000000000000000000000000000000..7f2e9bd7dfd019eb88f5933890c2aab33a637d29 --- /dev/null +++ b/public/static/component/laytp/module/popover/popover.js @@ -0,0 +1,1219 @@ +/* + * webui popover plugin - v1.2.17 + * A lightWeight popover plugin with jquery ,enchance the popover plugin of bootstrap with some awesome new features. It works well with bootstrap ,but bootstrap is not necessary! + * https://github.com/sandywalker/webui-popover + * + * Made by Sandy Duan + * Under MIT License + */ + +layui.define(['jquery', 'element'], function(exports) { + var $=layui.$; + // Create the defaults once + var pluginName = 'webuiPopover'; + var pluginClass = 'webui-popover'; + var pluginType = 'webui.popover'; + var defaults = { + placement: 'auto', + container: null, + width: 'auto', + height: 'auto', + trigger: 'click', //hover,click,sticky,manual + style: '', + opacity:null, + selector: false, // jQuery selector, if a selector is provided, popover objects will be delegated to the specified. + delay: { + show: null, + hide: 300 + }, + async: { + type: 'GET', + before: null, //function(that, xhr, settings){} + success: null, //function(that, xhr){} + error: null //function(that, xhr, data){} + }, + cache: true, + multi: false, + arrow: true, + title: '', + content: '', + closeable: false, + padding: true, + url: '', + type: 'html', + direction: '', // ltr,rtl + animation: null, + template: '

    ' + + '
    ' + + '
    ' + + '' + + '

    ' + + '

     

    ' + + '
    ' + + '
    ', + backdrop: false, + dismissible: true, + onShow: null, + onHide: null, + abortXHR: true, + autoHide: false, + offsetTop: 0, + offsetLeft: 0, + iframeOptions: { + frameborder: '0', + allowtransparency: 'true', + id: '', + name: '', + scrolling: '', + onload: '', + height: '', + width: '' + }, + hideEmpty: false + }; + + var rtlClass = pluginClass + '-rtl'; + var _srcElements = []; + var backdrop = $('
    '); + var _globalIdSeed = 0; + var _isBodyEventHandled = false; + var _offsetOut = -2000; // the value offset out of the screen + var $document = $(document); + + var toNumber = function (numeric, fallback) { + return isNaN(numeric) ? (fallback || 0) : Number(numeric); + }; + + var getPopFromElement = function ($element) { + return $element.data('plugin_' + pluginName); + }; + + var hideAllPop = function () { + var pop = null; + for (var i = 0; i < _srcElements.length; i++) { + pop = getPopFromElement(_srcElements[i]); + if (pop) { + pop.hide(true); + } + } + $document.trigger('hiddenAll.' + pluginType); + }; + + var hideOtherPops = function (currentPop) { + var pop = null; + for (var i = 0; i < _srcElements.length; i++) { + pop = getPopFromElement(_srcElements[i]); + if (pop && pop.id !== currentPop.id) { + pop.hide(true); + } + } + $document.trigger('hiddenAll.' + pluginType); + }; + + var isMobile = ('ontouchstart' in document.documentElement) && (/Mobi/.test(navigator.userAgent)); + + var pointerEventToXY = function (e) { + var out = { + x: 0, + y: 0 + }; + if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend' || e.type === 'touchcancel') { + var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; + out.x = touch.pageX; + out.y = touch.pageY; + } else if (e.type === 'mousedown' || e.type === 'mouseup' || e.type === 'click') { + out.x = e.pageX; + out.y = e.pageY; + } + return out; + }; + + + // The actual plugin constructor + function WebuiPopover(element, options) { + this.$element = $(element); + if (options) { + if ($.type(options.delay) === 'string' || $.type(options.delay) === 'number') { + options.delay = { + show: options.delay, + hide: options.delay + }; // bc break fix + } + } + this.options = $.extend({}, defaults, options); + this._defaults = defaults; + this._name = pluginName; + this._targetclick = false; + this.init(); + _srcElements.push(this.$element); + return this; + + } + + WebuiPopover.prototype = { + //init webui popover + init: function () { + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!'); + } + + if (this.getTrigger() !== 'manual') { + //init the event handlers + if (isMobile) { + this.$element.off('touchend', this.options.selector).on('touchend', this.options.selector, $.proxy(this.toggle, this)); + } else if (this.getTrigger() === 'click') { + this.$element.off('click', this.options.selector).on('click', this.options.selector, $.proxy(this.toggle, this)); + } else if (this.getTrigger() === 'hover') { + this.$element + .off('mouseenter mouseleave click', this.options.selector) + .on('mouseenter', this.options.selector, $.proxy(this.mouseenterHandler, this)) + .on('mouseleave', this.options.selector, $.proxy(this.mouseleaveHandler, this)); + } + } + this._poped = false; + this._inited = true; + this._opened = false; + this._idSeed = _globalIdSeed; + this.id = pluginName + this._idSeed; + // normalize container + this.options.container = $(this.options.container || document.body).first(); + + if (this.options.backdrop) { + backdrop.appendTo(this.options.container).hide(); + } + _globalIdSeed++; + if (this.getTrigger() === 'sticky') { + this.show(); + } + + if (this.options.selector) { + this._options = $.extend({}, this.options, { + selector: '' + }); + } + + }, + /* api methods and actions */ + destroy: function () { + var index = -1; + + for (var i = 0; i < _srcElements.length; i++) { + if (_srcElements[i] === this.$element) { + index = i; + break; + } + } + + _srcElements.splice(index, 1); + + + this.hide(); + this.$element.data('plugin_' + pluginName, null); + if (this.getTrigger() === 'click') { + this.$element.off('click'); + } else if (this.getTrigger() === 'hover') { + this.$element.off('mouseenter mouseleave'); + } + if (this.$target) { + this.$target.remove(); + } + }, + getDelegateOptions: function () { + var options = {}; + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] !== value) { + options[key] = value; + } + }); + return options; + }, + /* + param: force boolean value, if value is true then force hide the popover + param: event dom event, + */ + hide: function (force, event) { + + if (!force && this.getTrigger() === 'sticky') { + return; + } + if (!this._opened) { + return; + } + if (event) { + event.preventDefault(); + event.stopPropagation(); + } + + if (this.xhr && this.options.abortXHR === true) { + this.xhr.abort(); + this.xhr = null; + } + + + var e = $.Event('hide.' + pluginType); + this.$element.trigger(e, [this.$target]); + if (this.$target) { + this.$target.removeClass('in').addClass(this.getHideAnimation()); + var that = this; + setTimeout(function () { + that.$target.hide(); + if (!that.getCache()) { + that.$target.remove(); + //that.getTriggerElement.removeAttr('data-target'); + } + }, that.getHideDelay()); + } + if (this.options.backdrop) { + backdrop.hide(); + } + this._opened = false; + this.$element.trigger('hidden.' + pluginType, [this.$target]); + + if (this.options.onHide) { + this.options.onHide(this.$target); + } + + }, + resetAutoHide: function () { + var that = this; + var autoHide = that.getAutoHide(); + if (autoHide) { + if (that.autoHideHandler) { + clearTimeout(that.autoHideHandler); + } + that.autoHideHandler = setTimeout(function () { + that.hide(); + }, autoHide); + } + }, + delegate: function (eventTarget) { + var self = $(eventTarget).data('plugin_' + pluginName); + if (!self) { + self = new WebuiPopover(eventTarget, this.getDelegateOptions()); + $(eventTarget).data('plugin_' + pluginName, self); + } + return self; + }, + toggle: function (e) { + var self = this; + if (e) { + e.preventDefault(); + e.stopPropagation(); + if (this.options.selector) { + self = this.delegate(e.currentTarget); + } + } + self[self.getTarget().hasClass('in') ? 'hide' : 'show'](); + }, + hideAll: function () { + hideAllPop(); + }, + hideOthers: function () { + hideOtherPops(this); + }, + /*core method ,show popover */ + show: function () { + if (this._opened) { + return; + } + //removeAllTargets(); + var + $target = this.getTarget().removeClass().addClass(pluginClass).addClass(this._customTargetClass); + if (!this.options.multi) { + this.hideOthers(); + } + + // use cache by default, if not cache setted , reInit the contents + if (!this.getCache() || !this._poped || this.content === '') { + this.content = ''; + this.setTitle(this.getTitle()); + if (!this.options.closeable) { + $target.find('.close').off('click').remove(); + } + if (!this.isAsync()) { + this.setContent(this.getContent()); + } else { + this.setContentASync(this.options.content); + } + + if (this.canEmptyHide() && this.content === '') { + return; + } + $target.show(); + } + + this.displayContent(); + + if (this.options.onShow) { + this.options.onShow($target); + } + + this.bindBodyEvents(); + if (this.options.backdrop) { + backdrop.show(); + } + this._opened = true; + this.resetAutoHide(); + }, + displayContent: function () { + var + //element postion + elementPos = this.getElementPosition(), + //target postion + $target = this.getTarget().removeClass().addClass(pluginClass).addClass(this._customTargetClass), + //target content + $targetContent = this.getContentElement(), + //target Width + targetWidth = $target[0].offsetWidth, + //target Height + targetHeight = $target[0].offsetHeight, + //placement + placement = 'bottom', + e = $.Event('show.' + pluginType); + + if (this.canEmptyHide()) { + + var content = $targetContent.children().html(); + if (content !== null && content.trim().length === 0) { + return; + } + } + + //if (this.hasContent()){ + this.$element.trigger(e, [$target]); + //} + // support width as data attribute + var optWidth = this.$element.data('width') || this.options.width; + if (optWidth === '') { + optWidth = this._defaults.width; + } + + if (optWidth !== 'auto') { + $target.width(optWidth); + } + + // support height as data attribute + var optHeight = this.$element.data('height') || this.options.height; + if (optHeight === '') { + optHeight = this._defaults.height; + } + + if (optHeight !== 'auto') { + $targetContent.height(optHeight); + } + + if (this.options.style) { + this.$target.addClass(pluginClass + '-' + this.options.style); + } + + //check rtl + if (this.options.direction === 'rtl' && !$targetContent.hasClass(rtlClass)) { + $targetContent.addClass(rtlClass); + } + + //init the popover and insert into the document body + if (!this.options.arrow) { + $target.find('.webui-arrow').remove(); + } + $target.detach().css({ + top: _offsetOut, + left: _offsetOut, + display: 'block', + opacity:this.options.opacity || 1 + }); + + if (this.getAnimation()) { + $target.addClass(this.getAnimation()); + } + $target.appendTo(this.options.container); + + + placement = this.getPlacement(elementPos); + + //This line is just for compatible with knockout custom binding + this.$element.trigger('added.' + pluginType); + + this.initTargetEvents(); + + if (!this.options.padding) { + if (this.options.height !== 'auto') { + $targetContent.css('height', $targetContent.outerHeight()); + } + this.$target.addClass('webui-no-padding'); + } + + // add maxHeight and maxWidth support by limodou@gmail.com 2016/10/1 + if (this.options.maxHeight) { + $targetContent.css('maxHeight', this.options.maxHeight); + } + + if (this.options.maxWidth) { + $targetContent.css('maxWidth', this.options.maxWidth); + } + // end + + targetWidth = $target[0].offsetWidth; + targetHeight = $target[0].offsetHeight; + + var postionInfo = this.getTargetPositin(elementPos, placement, targetWidth, targetHeight); + + this.$target.css(postionInfo.position).addClass(placement).addClass('in'); + + if (this.options.type === 'iframe') { + var $iframe = $target.find('iframe'); + var iframeWidth = $target.width(); + var iframeHeight = $iframe.parent().height(); + + if (this.options.iframeOptions.width !== '' && this.options.iframeOptions.width !== 'auto') { + iframeWidth = this.options.iframeOptions.width; + } + + if (this.options.iframeOptions.height !== '' && this.options.iframeOptions.height !== 'auto') { + iframeHeight = this.options.iframeOptions.height; + } + + $iframe.width(iframeWidth).height(iframeHeight); + } + + if (!this.options.arrow) { + this.$target.css({ + 'margin': 0 + }); + } + if (this.options.arrow) { + var $arrow = this.$target.find('.webui-arrow'); + $arrow.removeAttr('style'); + + //prevent arrow change by content size + if (placement === 'left' || placement === 'right') { + $arrow.css({ + top: this.$target.height() / 2 + }); + } else if (placement === 'top' || placement === 'bottom') { + $arrow.css({ + left: this.$target.width() / 2 + }); + } + + if (postionInfo.arrowOffset) { + //hide the arrow if offset is negative + if (postionInfo.arrowOffset.left === -1 || postionInfo.arrowOffset.top === -1) { + $arrow.hide(); + } else { + $arrow.css(postionInfo.arrowOffset); + } + } + + } + this._poped = true; + this.$element.trigger('shown.' + pluginType, [this.$target]); + }, + + isTargetLoaded: function () { + return this.getTarget().find('i.glyphicon-refresh').length === 0; + }, + + /*getter setters */ + getTriggerElement: function () { + return this.$element; + }, + getTarget: function () { + if (!this.$target) { + var id = pluginName + this._idSeed; + this.$target = $(this.options.template) + .attr('id', id); + this._customTargetClass = this.$target.attr('class') !== pluginClass ? this.$target.attr('class') : null; + this.getTriggerElement().attr('data-target', id); + } + if (!this.$target.data('trigger-element')) { + this.$target.data('trigger-element', this.getTriggerElement()); + } + return this.$target; + }, + removeTarget: function () { + this.$target.remove(); + this.$target = null; + this.$contentElement = null; + }, + getTitleElement: function () { + return this.getTarget().find('.' + pluginClass + '-title'); + }, + getContentElement: function () { + if (!this.$contentElement) { + this.$contentElement = this.getTarget().find('.' + pluginClass + '-content'); + } + return this.$contentElement; + }, + getTitle: function () { + return this.$element.attr('data-title') || this.options.title || this.$element.attr('title'); + }, + getUrl: function () { + return this.$element.attr('data-url') || this.options.url; + }, + getAutoHide: function () { + return this.$element.attr('data-auto-hide') || this.options.autoHide; + }, + getOffsetTop: function () { + return toNumber(this.$element.attr('data-offset-top')) || this.options.offsetTop; + }, + getOffsetLeft: function () { + return toNumber(this.$element.attr('data-offset-left')) || this.options.offsetLeft; + }, + getCache: function () { + var dataAttr = this.$element.attr('data-cache'); + if (typeof (dataAttr) !== 'undefined') { + switch (dataAttr.toLowerCase()) { + case 'true': + case 'yes': + case '1': + return true; + case 'false': + case 'no': + case '0': + return false; + } + } + return this.options.cache; + }, + getTrigger: function () { + return this.$element.attr('data-trigger') || this.options.trigger; + }, + getDelayShow: function () { + var dataAttr = this.$element.attr('data-delay-show'); + if (typeof (dataAttr) !== 'undefined') { + return dataAttr; + } + return this.options.delay.show === 0 ? 0 : this.options.delay.show || 100; + }, + getHideDelay: function () { + var dataAttr = this.$element.attr('data-delay-hide'); + if (typeof (dataAttr) !== 'undefined') { + return dataAttr; + } + return this.options.delay.hide === 0 ? 0 : this.options.delay.hide || 100; + }, + getAnimation: function () { + var dataAttr = this.$element.attr('data-animation'); + return dataAttr || this.options.animation; + }, + getHideAnimation: function () { + var ani = this.getAnimation(); + return ani ? ani + '-out' : 'out'; + }, + setTitle: function (title) { + var $titleEl = this.getTitleElement(); + if (title) { + //check rtl + if (this.options.direction === 'rtl' && !$titleEl.hasClass(rtlClass)) { + $titleEl.addClass(rtlClass); + } + $titleEl.html(title); + } else { + $titleEl.remove(); + } + }, + hasContent: function () { + return this.getContent(); + }, + canEmptyHide: function () { + return this.options.hideEmpty && this.options.type === 'html'; + }, + getIframe: function () { + var $iframe = $('').attr('src', this.getUrl()); + var self = this; + $.each(this._defaults.iframeOptions, function (opt) { + if (typeof self.options.iframeOptions[opt] !== 'undefined') { + $iframe.attr(opt, self.options.iframeOptions[opt]); + } + }); + + return $iframe; + }, + getContent: function () { + if (this.getUrl()) { + switch (this.options.type) { + case 'iframe': + this.content = this.getIframe(); + break; + case 'html': + try { + this.content = $(this.getUrl()); + if (!this.content.is(':visible')) { + this.content.show(); + } + } catch (error) { + throw new Error('Unable to get popover content. Invalid selector specified.'); + } + break; + } + } else if (!this.content) { + var content = ''; + if ($.isFunction(this.options.content)) { + content = this.options.content.apply(this.$element[0], [this]); + } else { + content = this.options.content; + } + this.content = this.$element.attr('data-content') || content; + if (!this.content) { + var $next = this.$element.next(); + + if ($next && $next.hasClass(pluginClass + '-content')) { + this.content = $next; + } + } + } + return this.content; + }, + setContent: function (content) { + var $target = this.getTarget(); + var $ct = this.getContentElement(); + if (typeof content === 'string') { + $ct.html(content); + } else if (content instanceof $) { + $ct.html(''); + //Don't want to clone too many times. + if (!this.options.cache) { + content.clone(true, true).removeClass(pluginClass + '-content').appendTo($ct); + } else { + content.removeClass(pluginClass + '-content').appendTo($ct); + } + } + this.$target = $target; + }, + isAsync: function () { + return this.options.type === 'async'; + }, + setContentASync: function (content) { + var that = this; + if (this.xhr) { + return; + } + this.xhr = $.ajax({ + url: this.getUrl(), + type: this.options.async.type, + cache: this.getCache(), + beforeSend: function (xhr, settings) { + if (that.options.async.before) { + that.options.async.before(that, xhr, settings); + } + }, + success: function (data) { + that.bindBodyEvents(); + if (content && $.isFunction(content)) { + that.content = content.apply(that.$element[0], [data]); + } else { + that.content = data; + } + that.setContent(that.content); + var $targetContent = that.getContentElement(); + $targetContent.removeAttr('style'); + that.displayContent(); + if (that.options.async.success) { + that.options.async.success(that, data); + } + }, + complete: function () { + that.xhr = null; + }, + error: function (xhr, data) { + if (that.options.async.error) { + that.options.async.error(that, xhr, data); + } + } + }); + }, + + bindBodyEvents: function () { + if (_isBodyEventHandled) { + return; + } + if (this.options.dismissible && this.getTrigger() === 'click') { + if (isMobile) { + $document.off('touchstart.webui-popover').on('touchstart.webui-popover', $.proxy(this.bodyTouchStartHandler, this)); + } else { + $document.off('keyup.webui-popover').on('keyup.webui-popover', $.proxy(this.escapeHandler, this)); + $document.off('click.webui-popover').on('click.webui-popover', $.proxy(this.bodyClickHandler, this)); + } + } else if (this.getTrigger() === 'hover') { + $document.off('touchend.webui-popover') + .on('touchend.webui-popover', $.proxy(this.bodyClickHandler, this)); + } + }, + + /* event handlers */ + mouseenterHandler: function (e) { + var self = this; + + if (e && this.options.selector) { + self = this.delegate(e.currentTarget); + } + + if (self._timeout) { + clearTimeout(self._timeout); + } + self._enterTimeout = setTimeout(function () { + if (!self.getTarget().is(':visible')) { + self.show(); + } + }, this.getDelayShow()); + }, + mouseleaveHandler: function () { + var self = this; + clearTimeout(self._enterTimeout); + //key point, set the _timeout then use clearTimeout when mouse leave + self._timeout = setTimeout(function () { + self.hide(); + }, this.getHideDelay()); + }, + escapeHandler: function (e) { + if (e.keyCode === 27) { + this.hideAll(); + } + }, + bodyTouchStartHandler: function (e) { + var self = this; + var $eventEl = $(e.currentTarget); + $eventEl.on('touchend', function (e) { + self.bodyClickHandler(e); + $eventEl.off('touchend'); + }); + $eventEl.on('touchmove', function () { + $eventEl.off('touchend'); + }); + }, + bodyClickHandler: function (e) { + _isBodyEventHandled = true; + var canHide = true; + for (var i = 0; i < _srcElements.length; i++) { + var pop = getPopFromElement(_srcElements[i]); + if (pop && pop._opened) { + var offset = pop.getTarget().offset(); + var popX1 = offset.left; + var popY1 = offset.top; + var popX2 = offset.left + pop.getTarget().width(); + var popY2 = offset.top + pop.getTarget().height(); + var pt = pointerEventToXY(e); + var inPop = pt.x >= popX1 && pt.x <= popX2 && pt.y >= popY1 && pt.y <= popY2; + if (inPop) { + canHide = false; + break; + } + } + } + if (canHide) { + hideAllPop(); + } + }, + + /* + targetClickHandler: function() { + this._targetclick = true; + }, + */ + + //reset and init the target events; + initTargetEvents: function () { + if (this.getTrigger() === 'hover') { + this.$target + .off('mouseenter mouseleave') + .on('mouseenter', $.proxy(this.mouseenterHandler, this)) + .on('mouseleave', $.proxy(this.mouseleaveHandler, this)); + } + this.$target.find('.close').off('click').on('click', $.proxy(this.hide, this, true)); + //this.$target.off('click.webui-popover').on('click.webui-popover', $.proxy(this.targetClickHandler, this)); + }, + /* utils methods */ + //caculate placement of the popover + getPlacement: function (pos) { + var + placement, + container = this.options.container, + clientWidth = container.innerWidth(), + clientHeight = container.innerHeight(), + scrollTop = container.scrollTop(), + scrollLeft = container.scrollLeft(), + pageX = Math.max(0, pos.left - scrollLeft), + pageY = Math.max(0, pos.top - scrollTop); + //arrowSize = 20; + + //if placement equals auto,caculate the placement by element information; + if (typeof (this.options.placement) === 'function') { + placement = this.options.placement.call(this, this.getTarget()[0], this.$element[0]); + } else { + placement = this.$element.data('placement') || this.options.placement; + } + + var isH = placement === 'horizontal'; + var isV = placement === 'vertical'; + var detect = placement === 'auto' || isH || isV; + + if (detect) { + if (pageX < clientWidth / 3) { + if (pageY < clientHeight / 3) { + placement = isH ? 'right-bottom' : 'bottom-right'; + } else if (pageY < clientHeight * 2 / 3) { + if (isV) { + placement = pageY <= clientHeight / 2 ? 'bottom-right' : 'top-right'; + } else { + placement = 'right'; + } + } else { + placement = isH ? 'right-top' : 'top-right'; + } + //placement= pageY>targetHeight+arrowSize?'top-right':'bottom-right'; + } else if (pageX < clientWidth * 2 / 3) { + if (pageY < clientHeight / 3) { + if (isH) { + placement = pageX <= clientWidth / 2 ? 'right-bottom' : 'left-bottom'; + } else { + placement = 'bottom'; + } + } else if (pageY < clientHeight * 2 / 3) { + if (isH) { + placement = pageX <= clientWidth / 2 ? 'right' : 'left'; + } else { + placement = pageY <= clientHeight / 2 ? 'bottom' : 'top'; + } + } else { + if (isH) { + placement = pageX <= clientWidth / 2 ? 'right-top' : 'left-top'; + } else { + placement = 'top'; + } + } + } else { + //placement = pageY>targetHeight+arrowSize?'top-left':'bottom-left'; + if (pageY < clientHeight / 3) { + placement = isH ? 'left-bottom' : 'bottom-left'; + } else if (pageY < clientHeight * 2 / 3) { + if (isV) { + placement = pageY <= clientHeight / 2 ? 'bottom-left' : 'top-left'; + } else { + placement = 'left'; + } + } else { + placement = isH ? 'left-top' : 'top-left'; + } + } + } else if (placement === 'auto-top') { + if (pageX < clientWidth / 3) { + placement = 'top-right'; + } else if (pageX < clientWidth * 2 / 3) { + placement = 'top'; + } else { + placement = 'top-left'; + } + } else if (placement === 'auto-bottom') { + if (pageX < clientWidth / 3) { + placement = 'bottom-right'; + } else if (pageX < clientWidth * 2 / 3) { + placement = 'bottom'; + } else { + placement = 'bottom-left'; + } + } else if (placement === 'auto-left') { + if (pageY < clientHeight / 3) { + placement = 'left-top'; + } else if (pageY < clientHeight * 2 / 3) { + placement = 'left'; + } else { + placement = 'left-bottom'; + } + } else if (placement === 'auto-right') { + if (pageY < clientHeight / 3) { + placement = 'right-bottom'; + } else if (pageY < clientHeight * 2 / 3) { + placement = 'right'; + } else { + placement = 'right-top'; + } + } + return placement; + }, + getElementPosition: function () { + // If the container is the body or normal conatiner, just use $element.offset() + var elRect = this.$element[0].getBoundingClientRect(); + var container = this.options.container; + var cssPos = container.css('position'); + + if (container.is(document.body) || cssPos === 'static') { + return $.extend({}, this.$element.offset(), { + width: this.$element[0].offsetWidth || elRect.width, + height: this.$element[0].offsetHeight || elRect.height + }); + // Else fixed container need recalculate the position + } else if (cssPos === 'fixed') { + var containerRect = container[0].getBoundingClientRect(); + return { + top: elRect.top - containerRect.top + container.scrollTop(), + left: elRect.left - containerRect.left + container.scrollLeft(), + width: elRect.width, + height: elRect.height + }; + } else if (cssPos === 'relative') { + return { + top: this.$element.offset().top - container.offset().top, + left: this.$element.offset().left - container.offset().left, + width: this.$element[0].offsetWidth || elRect.width, + height: this.$element[0].offsetHeight || elRect.height + }; + } + }, + + getTargetPositin: function (elementPos, placement, targetWidth, targetHeight) { + var pos = elementPos, + container = this.options.container, + //clientWidth = container.innerWidth(), + //clientHeight = container.innerHeight(), + elementW = this.$element.outerWidth(), + elementH = this.$element.outerHeight(), + scrollTop = document.documentElement.scrollTop + container.scrollTop(), + scrollLeft = document.documentElement.scrollLeft + container.scrollLeft(), + position = {}, + arrowOffset = null, + arrowSize = this.options.arrow ? 20 : 0, + padding = 10, + fixedW = elementW < arrowSize + padding ? arrowSize : 0, + fixedH = elementH < arrowSize + padding ? arrowSize : 0, + refix = 0, + pageH = document.documentElement.clientHeight + scrollTop, + pageW = document.documentElement.clientWidth + scrollLeft; + + var validLeft = pos.left + pos.width / 2 - fixedW > 0; + var validRight = pos.left + pos.width / 2 + fixedW < pageW; + var validTop = pos.top + pos.height / 2 - fixedH > 0; + var validBottom = pos.top + pos.height / 2 + fixedH < pageH; + + + switch (placement) { + case 'bottom': + position = { + top: pos.top + pos.height, + left: pos.left + pos.width / 2 - targetWidth / 2 + }; + break; + case 'top': + position = { + top: pos.top - targetHeight, + left: pos.left + pos.width / 2 - targetWidth / 2 + }; + break; + case 'left': + position = { + top: pos.top + pos.height / 2 - targetHeight / 2, + left: pos.left - targetWidth + }; + break; + case 'right': + position = { + top: pos.top + pos.height / 2 - targetHeight / 2, + left: pos.left + pos.width + }; + break; + case 'top-right': + position = { + top: pos.top - targetHeight, + left: validLeft ? pos.left - fixedW : padding + }; + arrowOffset = { + left: validLeft ? Math.min(elementW, targetWidth) / 2 + fixedW : _offsetOut + }; + break; + case 'top-left': + refix = validRight ? fixedW : -padding; + position = { + top: pos.top - targetHeight, + left: pos.left - targetWidth + pos.width + refix + }; + arrowOffset = { + left: validRight ? targetWidth - Math.min(elementW, targetWidth) / 2 - fixedW : _offsetOut + }; + break; + case 'bottom-right': + position = { + top: pos.top + pos.height, + left: validLeft ? pos.left - fixedW : padding + }; + arrowOffset = { + left: validLeft ? Math.min(elementW, targetWidth) / 2 + fixedW : _offsetOut + }; + break; + case 'bottom-left': + refix = validRight ? fixedW : -padding; + position = { + top: pos.top + pos.height, + left: pos.left - targetWidth + pos.width + refix + }; + arrowOffset = { + left: validRight ? targetWidth - Math.min(elementW, targetWidth) / 2 - fixedW : _offsetOut + }; + break; + case 'right-top': + refix = validBottom ? fixedH : -padding; + position = { + top: pos.top - targetHeight + pos.height + refix, + left: pos.left + pos.width + }; + arrowOffset = { + top: validBottom ? targetHeight - Math.min(elementH, targetHeight) / 2 - fixedH : _offsetOut + }; + break; + case 'right-bottom': + position = { + top: validTop ? pos.top - fixedH : padding, + left: pos.left + pos.width + }; + arrowOffset = { + top: validTop ? Math.min(elementH, targetHeight) / 2 + fixedH : _offsetOut + }; + break; + case 'left-top': + refix = validBottom ? fixedH : -padding; + position = { + top: pos.top - targetHeight + pos.height + refix, + left: pos.left - targetWidth + }; + arrowOffset = { + top: validBottom ? targetHeight - Math.min(elementH, targetHeight) / 2 - fixedH : _offsetOut + }; + break; + case 'left-bottom': + position = { + top: validTop ? pos.top - fixedH : padding, + left: pos.left - targetWidth + }; + arrowOffset = { + top: validTop ? Math.min(elementH, targetHeight) / 2 + fixedH : _offsetOut + }; + break; + + } + position.top += this.getOffsetTop(); + position.left += this.getOffsetLeft(); + + return { + position: position, + arrowOffset: arrowOffset + }; + } + }; + $.fn[pluginName] = function (options, noInit) { + var results = []; + var $result = this.each(function () { + + var webuiPopover = $.data(this, 'plugin_' + pluginName); + if (!webuiPopover) { + if (!options) { + webuiPopover = new WebuiPopover(this, null); + } else if (typeof options === 'string') { + if (options !== 'destroy') { + if (!noInit) { + webuiPopover = new WebuiPopover(this, null); + results.push(webuiPopover[options]()); + } + } + } else if (typeof options === 'object') { + webuiPopover = new WebuiPopover(this, options); + } + $.data(this, 'plugin_' + pluginName, webuiPopover); + } else { + if (options === 'destroy') { + webuiPopover.destroy(); + } else if (typeof options === 'string') { + results.push(webuiPopover[options]()); + } + } + }); + return (results.length) ? results : $result; + }; + + //Global object exposes to window. + var webuiPopovers = (function () { + var _hideAll = function () { + hideAllPop(); + }; + var _create = function (selector, options) { + options = options || {}; + $(selector).webuiPopover(options); + }; + var _isCreated = function (selector) { + var created = true; + $(selector).each(function (i, item) { + created = created && $(item).data('plugin_' + pluginName) !== undefined; + }); + return created; + }; + var _show = function (selector, options) { + if (options) { + $(selector).webuiPopover(options).webuiPopover('show'); + } else { + $(selector).webuiPopover('show'); + } + }; + var _hide = function (selector) { + $(selector).webuiPopover('hide'); + }; + + var _setDefaultOptions = function (options) { + defaults = $.extend({}, defaults, options); + }; + + var _updateContent = function (selector, content) { + var pop = $(selector).data('plugin_' + pluginName); + if (pop) { + var cache = pop.getCache(); + pop.options.cache = false; + pop.options.content = content; + if (pop._opened) { + pop._opened = false; + pop.show(); + } else { + if (pop.isAsync()) { + pop.setContentASync(content); + } else { + pop.setContent(content); + } + } + pop.options.cache = cache; + } + }; + + var _updateContentAsync = function (selector, url) { + var pop = $(selector).data('plugin_' + pluginName); + if (pop) { + var cache = pop.getCache(); + var type = pop.options.type; + pop.options.cache = false; + pop.options.url = url; + + if (pop._opened) { + pop._opened = false; + pop.show(); + } else { + pop.options.type = 'async'; + pop.setContentASync(pop.content); + } + pop.options.cache = cache; + pop.options.type = type; + } + }; + + return { + show: _show, + hide: _hide, + create: _create, + isCreated: _isCreated, + hideAll: _hideAll, + updateContent: _updateContent, + updateContentAsync: _updateContentAsync, + setDefaultOptions: _setDefaultOptions + }; + })(); + window.WebuiPopovers = webuiPopovers; + exports("popover",WebuiPopovers); +}) + + + + diff --git a/public/static/component/laytp/module/popup.js b/public/static/component/laytp/module/popup.js index 9503407b1175f15b69312fa437393684061c59af..1e8e9521828716d4195caedf9fc57859185a10ea 100644 --- a/public/static/component/laytp/module/popup.js +++ b/public/static/component/laytp/module/popup.js @@ -20,7 +20,7 @@ layui.define(['layer', 'jquery', 'element'], function(exports) { time: 1000 }) }, - this.warming = function(msg) { + this.warning = function(msg) { layer.msg(msg, { icon: 3, time: 1000 @@ -38,7 +38,7 @@ layui.define(['layer', 'jquery', 'element'], function(exports) { time: 1000 }, callback); }, - this.warning = function(msg, callback) { + this.warming = function(msg, callback) { layer.msg(msg, { icon: 3, time: 1000 diff --git a/public/static/component/laytp/module/react.js b/public/static/component/laytp/module/react.js new file mode 100644 index 0000000000000000000000000000000000000000..86f4f8aa9f45153dd421e6ed28e23ff00c71308b --- /dev/null +++ b/public/static/component/laytp/module/react.js @@ -0,0 +1,335 @@ +layui.define([], function (exports) { + const MOD_NAME = "react"; + + // 监听数据,后面可以用一个WeakMap + 存放key的数组替换 + let proxyData = { + data: [], // 数据 + methods: [], // 方法 + hooks: [], // 钩子 + }; + + let react = { + /** + * @abstract 通知并执行钩子函数 + * + * @param {String} hook 监听的变量名 + * @param {'pre'|'post'} type 类型 + * @param {...any} args + */ + notifyHooks: (hook, type = 'pre', ...args) => { + for (const f of proxyData.hooks.filter(v => { + return v.target === hook && v.type === type; + })) { + f.handler(args); + } + }, + /** + * @abstract 注册一些钩子,当托管变量发生改变时触发 + * + * 注册钩子: + * @example + * ```javascript + * // 注册托管变量 + * laytp.react.regData({ + * hello: 0, + * world: 2 + * }); + * + * // 注册钩子 + * laytp.react.regHooks({ + * // 监听名为hello的变量改变 + * hello: () => { + * console.log('Here!'); + * }, + * + * world: { + * type: 'post', // 默认都为'pre',为变量修改前回调,'post'为变量修改后回调 + * handler: (target, prop, data) => { + * data.value = 50; + * } + * } + * }); + * ``` + * + * 调用: + * @example + * ```javascript + * laytp.data.hello = 10; + * // laytp.data.hello -> 10 + * + * laytp.data.world = 20; + * // laytp.data.world -> 50 + * ``` + * + * @param {Object} obj 需注册的钩子的Object + * @returns + */ + regHooks: function (obj) { + if (typeof obj !== 'function' && typeof obj !== 'object') { + console.error('请传入钩子对象或一个具名函数'); + return; + } + + if (typeof obj === 'function') { + if (obj.name === '') { + console.error('不支持传入闭包'); + return; + } + + proxyData.hooks.push({ + target: obj.name, + type: 'pre', + handler: obj + }); + + return; + } + + for (const key in obj) { + if (Object.hasOwnProperty.call(obj, key)) { + const func = obj[key]; + + if (typeof func === 'object' && typeof func.type === 'string' && typeof func.handler === 'function') + proxyData.hooks.push({ + target: key, + type: func.type, + handler: func.handler + }); + else if (typeof func === 'function') + proxyData.hooks.push({ + target: key, + type: 'pre', + handler: func + }); + else + console.warn(`${key} 不是一个合法的钩子`); + } + } + }, + /** + * @abstract 注册一些托管方法 + * + * 注册: + * @example + * ```javascript + * laytp.react.regMethods({ + * alert() { + * alert('warning'); + * } + * }); + * ``` + * + * 调用: + * @example + * ```javascript + * laytp.methods.alert(); + * ``` + * + * @param {Object} obj 需注册的方法的Object + * @returns + */ + regMethods: function (obj) { + if (typeof obj === 'function') { + if (obj.name === '') { + console.error('不支持传入闭包'); + return; + } + + if (proxyData.methods.findIndex(v => { return v.key === key; }) > -1) { + proxyData.methods.find(v => { return v.key === key }).handler = func; + return; + } + + proxyData.methods.push({ + key: obj.name, + handler: func + }); + + Object.defineProperty(laytp.methods, `${obj.name}`, { + get() { + let q = proxyData.methods.find(v => { + return v.key === obj.name; + }); + return q === undefined ? undefined : q.handler; + } + }); + return; + } + + for (const key in obj) { + if (Object.hasOwnProperty.call(obj, key)) { + const func = obj[key]; + + if (typeof func !== 'function') { + console.warn(`${key} 不是一个合法的函数`); + continue; + } + + if (proxyData.methods.findIndex(v => { return v.key === key; }) > -1) { + proxyData.methods.find(v => { return v.key === key }).handler = func; + continue; + } + + proxyData.methods.push({ + key, + handler: func + }); + + Object.defineProperty(react.methods, `${key}`, { + get() { + let q = proxyData.methods.find(v => { + return v.key === key; + }); + return q === undefined ? undefined : q.handler; + } + }); + } + } + }, + + /** + * @abstract 注册一些托管数据,当托管数据发生变化时调用同名钩子函数,暂不支持深度监听 + * + * 注册: + * @example + * ```javascript + * laytp.react.regData({ + * some: 1, + * other: 10, + * meow: "I'm hungry" + * }); + * ``` + * + * 调用: + * @example + * ```javascript + * laytp.data.some = 10; + * laytp.data.other = 'Ok'; + * ``` + * + * @param {Object} obj 需注册的数据的Object + * @returns + */ + regData: function (obj) { + if (typeof obj !== 'object') { + console.error('请传入数据对象'); + return; + } + + const handler = { + setByOutside(hooks, target, prop, value) { + for (const h of hooks) { + let data = { + get value() { + return value; + }, + + set value(v) { + value = v; + } + }; + + h.handler(target, prop, data); + target[prop] = value; + } + }, + + set(target, prop, value) { + // 写入前钩子 + try { + handler.setByOutside(proxyData.hooks.filter(o => { + return o.target === target.key && o.type === 'pre'; + }), target, prop, value); + } catch (error) { + console.error(error); + return; + } + + // 写入 + target[prop] = value; + + // 写入后钩子 + try { + handler.setByOutside(proxyData.hooks.filter(o => { + return o.target === target.key && o.type === 'post'; + }), target, prop, value); + } catch (error) { + console.error(error); + } + }, + + get(target, prop) { + return target[prop]; + } + }; + + for (const key in obj) { + if (Object.hasOwnProperty.call(obj, key)) { + const element = obj[key]; + + if (proxyData.data.findIndex(v => { return v.key === key }) > -1) { + proxyData.data.find(v => { return v.key === key }).value = element; + continue; + } + + proxyData.data.push(new Proxy({ + key, + value: element + }, handler)); + + Object.defineProperty(react.data, `${key}`, { + get() { + let q = proxyData.data.find(v => { + return v.key === key; + }); + return q === undefined ? undefined : q.value; + }, + + set(v) { + let q = proxyData.data.find(v => { + return v.key === key; + }); + (q) && (q.value = v); + } + }); + } + } + }, + data: new Proxy({}, { + set(target, p, newVal) { + react.regData({ + [p]: newVal + }); + }, + + get(target, p) { + return target[p]; + } + }), + methods: new Proxy({}, { + set(target, p, newVal) { + react.regMethods({ + [p]: newVal + }); + }, + + get(target, p) { + return target[p]; + } + }), + hooks: new Proxy({}, { + set(target, p, newVal) { + react.regHooks({ + [p]: newVal + }); + }, + + get(target, p) { + return target[p]; + } + }) + }; + + //输出模块 + exports(MOD_NAME, react); +}); \ No newline at end of file diff --git a/public/static/component/laytp/module/select.js b/public/static/component/laytp/module/select.js new file mode 100644 index 0000000000000000000000000000000000000000..3b095f72cdfea386ca6adcf4ae1ac7c1b14128c2 --- /dev/null +++ b/public/static/component/laytp/module/select.js @@ -0,0 +1,1740 @@ +/** + * name: formSelects + * 基于Layui Select多选 + * version: 4.0.0.0910 + * http://sun.faysunshine.com/layui/formSelects-v4/dist/formSelects-v4.js + */ +(function(layui, window, factory) { + if(typeof exports === 'object') { // 支持 CommonJS + module.exports = factory(); + } else if(typeof define === 'function' && define.amd) { // 支持 AMD + define(factory); + } else if(window.layui && layui.define) { //layui加载 + layui.define(['jquery'], function(exports) { + exports('select', factory()); + }); + } else { + window.formSelects = factory(); + } +})(typeof layui == 'undefined' ? null : layui, window, function() { + let v = '4.0.0.0910', + NAME = 'xm-select', + PNAME = 'xm-select-parent', + INPUT = 'xm-select-input', + TDIV = 'xm-select--suffix', + THIS = 'xm-select-this', + LABEL = 'xm-select-label', + SEARCH = 'xm-select-search', + SEARCH_TYPE = 'xm-select-search-type', + SHOW_COUNT = 'xm-select-show-count', + CREATE = 'xm-select-create', + CREATE_LONG = 'xm-select-create-long', + MAX = 'xm-select-max', + SKIN = 'xm-select-skin', + DIRECTION = "xm-select-direction", + HEIGHT = 'xm-select-height', + DISABLED = 'xm-dis-disabled', + DIS = 'xm-select-dis', + TEMP = 'xm-select-temp', + RADIO = 'xm-select-radio', + LINKAGE= 'xm-select-linkage', + DL = 'xm-select-dl', + DD_HIDE = 'xm-select-hide', + HIDE_INPUT = 'xm-hide-input', + SANJIAO = 'xm-select-sj', + ICON_CLOSE = 'xm-icon-close', + FORM_TITLE = 'xm-select-title', + FORM_SELECT = 'xm-form-select', + FORM_SELECTED = 'xm-form-selected', + FORM_NONE = 'xm-select-none', + FORM_EMPTY = 'xm-select-empty', + FORM_INPUT = 'xm-input', + FORM_DL_INPUT = 'xm-dl-input', + FORM_SELECT_TIPS = 'xm-select-tips', + CHECKBOX_YES = 'xm-iconfont', + FORM_TEAM_PID = 'XM_PID_VALUE', + CZ = 'xm-cz', + CZ_GROUP = 'xm-cz-group', + TIPS = '请选择', + data = {}, + events = { + on: {}, + endOn: {}, + filter: {}, + maxTips: {}, + opened: {}, + closed: {} + }, + ajax = { + type: 'get', + header: { + + }, + first: true, + data: {}, + searchUrl: '', + searchName: 'keyword', + searchVal: null, + keyName: 'name', + keyVal: 'value', + keySel: 'selected', + keyDis: 'disabled', + keyChildren: 'children', + dataType: '', + delay: 500, + beforeSuccess: null, + success: null, + error: null, + beforeSearch: null, + response: { + statusCode: 0, + statusName: 'code', + msgName: 'msg', + dataName: 'data' + }, + tree: { + nextClick: function(id, item, callback){ + callback([]); + }, + folderChoose: true, + lazy: true + } + }, + quickBtns = [ + {icon: 'xm-iconfont icon-quanxuan', name: '全选', click: function(id, cm){ + cm.selectAll(id, true, true); + }}, + {icon: 'xm-iconfont icon-qingkong', name: '清空', click: function(id, cm){ + cm.removeAll(id, true, true); + }}, + {icon: 'xm-iconfont icon-fanxuan', name: '反选', click: function(id, cm){ + cm.reverse(id, true, true); + }}, + {icon: 'xm-iconfont icon-pifu', name: '换肤', click: function(id, cm){ + cm.skin(id); + }} + ], + $ = window.$ || (window.layui && window.layui.jquery), + $win = $(window), + ajaxs = {}, + fsConfig = {}, + fsConfigs = {}, + FormSelects = function(options) { + this.config = { + name: null, //xm-select="xxx" + max: null, + maxTips: (id, vals, val, max) => { + let ipt = $(`[xid="${this.config.name}"]`).prev().find(`.${NAME}`); + if(ipt.parents('.layui-form-item[pane]').length) { + ipt = ipt.parents('.layui-form-item[pane]'); + } + ipt.attr('style', 'border-color: red !important'); + setTimeout(() => { + ipt.removeAttr('style'); + }, 300); + }, + init: null, //初始化的选择值, + on: null, //select值发生变化 + opened: null, + closed: null, + filter: (id, inputVal, val, isDisabled) => { + return val.name.indexOf(inputVal) == -1; + }, + clearid: -1, + direction: 'auto', + height: null, + isEmpty: false, + btns: [quickBtns[0], quickBtns[1], quickBtns[2]], + searchType: 0, + create: (id, name) => { + return Date.now(); + }, + template: (id, item) => { + return item.name; + }, + showCount: 0, + isCreate: false, + placeholder: TIPS, + clearInput: false, + }; + this.select = null; + this.values = []; + $.extend(this.config, options, { + searchUrl: options.isSearch ? options.searchUrl : null, + placeholder: options.optionsFirst ? ( + options.optionsFirst.value ? TIPS : (options.optionsFirst.innerHTML || TIPS) + ) : TIPS, + btns: options.radio ? [quickBtns[1]] : [quickBtns[0], quickBtns[1], quickBtns[2]], + }, fsConfigs[options.name] || fsConfig); + if(isNaN(this.config.showCount) || this.config.showCount <= 0) { + this.config.showCount = 19921012; + } + }; + + //一些简单的处理方法 + let Common = function(){ + this.appender(); + this.on(); + this.onreset(); + }; + + Common.prototype.appender = function(){//针对IE做的一些拓展 + //拓展Array map方法 + if(!Array.prototype.map){Array.prototype.map=function(i,h){var b,a,c,e=Object(this),f=e.length>>>0;if(h){b=h}a=new Array(f);c=0;while(c>>0;if(typeof g!=="function"){throw new TypeError(g+" is not a function")}if(arguments.length>1){d=b}c=0;while(c>>0;if(typeof b!=="function"){throw new TypeError()}var e=[];var d=arguments[1];for(var c=0;c { + let othis = $(select), + id = othis.attr(NAME), + hasLayuiRender = othis.next(`.layui-form-select`), + hasRender = othis.next(`.${PNAME}`), + options = { + name: id, + disabled: select.disabled, + max: othis.attr(MAX) - 0, + isSearch: othis.attr(SEARCH) != undefined, + searchUrl: othis.attr(SEARCH), + isCreate: othis.attr(CREATE) != undefined, + radio: othis.attr(RADIO) != undefined, + skin: othis.attr(SKIN), + direction: othis.attr(DIRECTION), + optionsFirst: select.options[0], + height: othis.attr(HEIGHT), + formname: othis.attr('name') || othis.attr('_name'), + layverify: othis.attr('lay-verify') || othis.attr('_lay-verify'), + layverType: othis.attr('lay-verType'), + searchType: othis.attr(SEARCH_TYPE) == 'dl' ? 1 : 0, + showCount: othis.attr(SHOW_COUNT) - 0, + }, + value = othis.find('option[selected]').toArray().map((option) => {//获取已选中的数据 + return { + name: option.innerHTML, + value: option.value, + } + }), + fs = new FormSelects(options); + + fs.values = value; + + if(fs.config.init) { + fs.values = fs.config.init.map(item => { + if(typeof item == 'object') { + return item; + } + return { + name: othis.find(`option[value="${item}"]`).text(), + value: item + } + }).filter(item => { + return item.name; + }); + fs.config.init = fs.values.concat([]); + }else{ + fs.config.init = value.concat([]); + } + + !fs.values && (fs.values = []); + + data[id] = fs; + + //先取消layui对select的渲染 + hasLayuiRender[0] && hasLayuiRender.remove(); + hasRender[0] && hasRender.remove(); + + //构造渲染div + let dinfo = this.renderSelect(id, fs.config.placeholder, select); + let heightStyle = !fs.config.height || fs.config.height == 'auto' ? '' : `xm-hg style="height: 34px;"`; + let inputHtml = [ + `
    `, + ``, + `
    ` + ]; + let reElem = + $(`
    + +
    +
    + ${inputHtml.join('')} + +
    +
    + +
    +
    +
    +
    ${dinfo}
    +
    `); + + var $parent = $(`
    `); + $parent.append(reElem) + othis.after($parent); + othis.attr('lay-ignore', ''); + othis.removeAttr('name') && othis.attr('_name', fs.config.formname); + othis.removeAttr('lay-verify') && othis.attr('_lay-verify', fs.config.layverify); + + //如果可搜索, 加上事件 + if(fs.config.isSearch){ + ajaxs[id] = $.extend({}, ajax, {searchUrl: fs.config.searchUrl}, ajaxs[id]); + $(document).on('input', `div.${PNAME}[FS_ID="${id}"] .${INPUT}`, (e) => { + this.search(id, e, fs.config.searchUrl); + }); + if(fs.config.searchUrl){//触发第一次请求事件 + this.triggerSearch(reElem, true); + } + }else{//隐藏第二个dl + reElem.find(`dl dd.${FORM_DL_INPUT}`).css('display', 'none'); + } + }); + } + + Common.prototype.search = function(id, e, searchUrl, call){ + let input; + if(call){ + input = call; + }else{ + input = e.target; + let keyCode = e.keyCode; + if(keyCode === 9 || keyCode === 13 || keyCode === 37 || keyCode === 38 || keyCode === 39 || keyCode === 40) { + return false; + } + } + let inputValue = $.trim(input.value); + //过滤一下tips + this.changePlaceHolder($(input)); + + let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + searchUrl = ajaxConfig.searchUrl || searchUrl; + let fs = data[id], + isCreate = fs.config.isCreate, + reElem = $(`dl[xid="${id}"]`).parents(`.${FORM_SELECT}`); + //如果开启了远程搜索 + if(searchUrl){ + if(ajaxConfig.searchVal){ + inputValue = ajaxConfig.searchVal; + ajaxConfig.searchVal = ''; + } + if(!ajaxConfig.beforeSearch || (ajaxConfig.beforeSearch && ajaxConfig.beforeSearch instanceof Function && ajaxConfig.beforeSearch(id, searchUrl, inputValue))){ + let delay = ajaxConfig.delay; + if(ajaxConfig.first){ + ajaxConfig.first = false; + delay = 10; + } + clearTimeout(fs.clearid); + fs.clearid = setTimeout(() => { + reElem.find(`dl > *:not(.${FORM_SELECT_TIPS})`).remove(); + reElem.find(`dd.${FORM_NONE}`).addClass(FORM_EMPTY).text('请求中'); + this.ajax(id, searchUrl, inputValue, false, null, true); + }, delay); + } + }else{ + reElem.find(`dl .${DD_HIDE}`).removeClass(DD_HIDE); + //遍历选项, 选择可以显示的值 + reElem.find(`dl dd:not(.${FORM_SELECT_TIPS})`).each((idx, item) => { + let _item = $(item); + let searchFun = events.filter[id] || data[id].config.filter; + if(searchFun && searchFun(id, inputValue, this.getItem(id, _item), _item.hasClass(DISABLED)) == true){ + _item.addClass(DD_HIDE); + } + }); + //控制分组名称 + reElem.find('dl dt').each((index, item) => { + if(!$(item).nextUntil('dt', `:not(.${DD_HIDE})`).length) { + $(item).addClass(DD_HIDE); + } + }); + //动态创建 + this.create(id, isCreate, inputValue); + let shows = reElem.find(`dl dd:not(.${FORM_SELECT_TIPS}):not(.${DD_HIDE})`); + if(!shows.length){ + reElem.find(`dd.${FORM_NONE}`).addClass(FORM_EMPTY).text('无匹配项'); + }else{ + reElem.find(`dd.${FORM_NONE}`).removeClass(FORM_EMPTY); + } + } + } + + Common.prototype.isArray = function(obj){ + return Object.prototype.toString.call(obj) == "[object Array]"; + } + + Common.prototype.triggerSearch = function(div, isCall){ + (div ? [div] : $(`.${FORM_SELECT}`).toArray()).forEach((reElem, index) => { + reElem = $(reElem); + let id = reElem.find('dl').attr('xid') + if((id && data[id] && data[id].config.isEmpty) || isCall){ + this.search(id, null, null, data[id].config.searchType == 0 ? reElem.find(`.${LABEL} .${INPUT}`) : reElem.find(`dl .${FORM_DL_INPUT} .${INPUT}`)); + } + }); + } + + Common.prototype.clearInput = function(id){ + let div = $(`.${PNAME}[fs_id="${id}"]`); + let input = data[id].config.searchType == 0 ? div.find(`.${LABEL} .${INPUT}`) : div.find(`dl .${FORM_DL_INPUT} .${INPUT}`); + input.val(''); + } + + Common.prototype.ajax = function(id, searchUrl, inputValue, isLinkage, linkageWidth, isSearch, successCallback, isReplace){ + let reElem = $(`.${PNAME} dl[xid="${id}"]`).parents(`.${FORM_SELECT}`); + if(!reElem[0] || !searchUrl){ + return ; + } + let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + let ajaxData = $.extend(true, {}, ajaxConfig.data); + ajaxData[ajaxConfig.searchName] = inputValue; + //是否需要对ajax添加随机时间 + //ajaxData['_'] = Date.now(); + $.ajax({ + type: ajaxConfig.type, + headers: ajaxConfig.header, + url: searchUrl, + data: ajaxConfig.dataType == 'json' ? JSON.stringify(ajaxData) : ajaxData, + success: (res) => { + if(typeof res == 'string'){ + res = JSON.parse(res); + } + ajaxConfig.beforeSuccess && ajaxConfig.beforeSuccess instanceof Function && (res = ajaxConfig.beforeSuccess(id, searchUrl, inputValue, res)); + if(this.isArray(res)){ + let newRes = {}; + newRes[ajaxConfig.response.statusName] = ajaxConfig.response.statusCode; + newRes[ajaxConfig.response.msgName] = ""; + newRes[ajaxConfig.response.dataName] = res; + res = newRes; + } + if(res[ajaxConfig.response.statusName] != ajaxConfig.response.statusCode) { + reElem.find(`dd.${FORM_NONE}`).addClass(FORM_EMPTY).text(res[ajaxConfig.response.msgName]); + }else{ + reElem.find(`dd.${FORM_NONE}`).removeClass(FORM_EMPTY); + this.renderData(id, res[ajaxConfig.response.dataName], isLinkage, linkageWidth, isSearch, isReplace); + data[id].config.isEmpty = res[ajaxConfig.response.dataName].length == 0; + } + successCallback && successCallback(id); + ajaxConfig.success && ajaxConfig.success instanceof Function && ajaxConfig.success(id, searchUrl, inputValue, res); + }, + error: (err) => { + reElem.find(`dd[lay-value]:not(.${FORM_SELECT_TIPS})`).remove(); + reElem.find(`dd.${FORM_NONE}`).addClass(FORM_EMPTY).text('服务异常'); + ajaxConfig.error && ajaxConfig.error instanceof Function && ajaxConfig.error(id, searchUrl, inputValue, err); + } + }); + } + + Common.prototype.renderData = function(id, dataArr, linkage, linkageWidth, isSearch, isReplace){ + if(linkage){//渲染多级联动 + this.renderLinkage(id, dataArr, linkageWidth); + return; + } + if(isReplace){ + this.renderReplace(id, dataArr); + return; + } + + let reElem = $(`.${PNAME} dl[xid="${id}"]`).parents(`.${FORM_SELECT}`); + let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + let pcInput = reElem.find(`.${TDIV} input`); + + dataArr = this.exchangeData(id, dataArr); + let values = []; + reElem.find('dl').html(this.renderSelect(id, pcInput.attr('placeholder') || pcInput.attr('back'), dataArr.map((item) => { + let itemVal = $.extend({}, item, { + innerHTML: item[ajaxConfig.keyName], + value: item[ajaxConfig.keyVal], + sel: item[ajaxConfig.keySel], + disabled: item[ajaxConfig.keyDis], + type: item.type, + name: item[ajaxConfig.keyName] + }); + if(itemVal.sel){ + values.push(itemVal); + } + return itemVal; + }))); + + let label = reElem.find(`.${LABEL}`); + let dl = reElem.find('dl[xid]'); + if(isSearch){//如果是远程搜索, 这里需要判重 + let oldVal = data[id].values; + oldVal.forEach((item, index) => { + dl.find(`dd[lay-value="${item.value}"]`).addClass(THIS); + }); + values.forEach((item, index) => { + if(this.indexOf(oldVal, item) == -1){ + this.addLabel(id, label, item); + dl.find(`dd[lay-value="${item.value}"]`).addClass(THIS); + oldVal.push(item); + } + }); + }else{ + values.forEach((item, index) => { + this.addLabel(id, label, item); + dl.find(`dd[lay-value="${item.value}"]`).addClass(THIS); + }); + data[id].values = values; + } + this.commonHandler(id, label); + } + + Common.prototype.renderLinkage = function(id, dataArr, linkageWidth){ + let result = [], + index = 0, + temp = {"0": dataArr}, + ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + db[id] = {}; + do{ + let group = result[index ++] = [], + _temp = temp; + temp = {}; + $.each(_temp, (pid, arr) => { + $.each(arr, (idx, item) => { + let val = { + pid: pid, + name: item[ajaxConfig.keyName], + value: item[ajaxConfig.keyVal], + }; + db[id][val.value] = $.extend(item, val); + group.push(val); + let children = item[ajaxConfig.keyChildren]; + if(children && children.length){ + temp[val.value] = children; + } + }); + }); + }while(Object.getOwnPropertyNames(temp).length); + + let reElem = $(`.${PNAME} dl[xid="${id}"]`).parents(`.${FORM_SELECT}`); + let html = ['
    ']; + + $.each(result, (idx, arr) => { + let groupDiv = [`
    `]; + $.each(arr, (idx2, item) => { + let span = `
  • ${item.name}
  • `; + groupDiv.push(span); + }); + groupDiv.push(`
    `); + html = html.concat(groupDiv); + }); + html.push('
    '); + html.push('
    '); + reElem.find('dl').html(html.join('')); + reElem.find(`.${INPUT}`).css('display', 'none');//联动暂时不支持搜索 + } + + Common.prototype.renderReplace = function(id, dataArr){ + let dl = $(`.${PNAME} dl[xid="${id}"]`); + let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + + dataArr = this.exchangeData(id, dataArr); + db[id] = dataArr; + + let html = dataArr.map((item) => { + let itemVal = $.extend({}, item, { + innerHTML: item[ajaxConfig.keyName], + value: item[ajaxConfig.keyVal], + sel: item[ajaxConfig.keySel], + disabled: item[ajaxConfig.keyDis], + type: item.type, + name: item[ajaxConfig.keyName] + }); + return this.createDD(id, itemVal); + }).join(''); + + dl.find(`dd:not(.${FORM_SELECT_TIPS}),dt:not([style])`).remove(); + dl.find(`dt[style]`).after($(html)); + } + + Common.prototype.exchangeData = function(id, arr){//这里处理树形结构 + let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + let childrenName = ajaxConfig['keyChildren']; + let disabledName = ajaxConfig['keyDis']; + db[id] = {}; + let result = this.getChildrenList(arr, childrenName, disabledName, [], false); + return result; + } + + Common.prototype.getChildrenList = function(arr, childrenName, disabledName, pid, disabled){ + let result = [], offset = 0; + for(let a = 0; a < arr.length; a ++){ + let item = arr[a]; + if(item.type && item.type == 'optgroup'){ + result.push(item); + continue; + }else{ + offset ++; + } + let parentIds = pid.concat([]); + parentIds.push(`${offset - 1}_E`); + item[FORM_TEAM_PID] = JSON.stringify(parentIds); + item[disabledName] = item[disabledName] || disabled; + result.push(item); + let child = item[childrenName]; + if(child && common.isArray(child) && child.length){ + item['XM_TREE_FOLDER'] = true; + let pidArr = parentIds.concat([]); + let childResult = this.getChildrenList(child, childrenName, disabledName, pidArr, item[disabledName]); + result = result.concat(childResult); + } + } + return result; + } + + Common.prototype.create = function(id, isCreate, inputValue){ + if(isCreate && inputValue){ + let fs = data[id], + dl = $(`[xid="${id}"]`), + tips= dl.find(`dd.${FORM_SELECT_TIPS}.${FORM_DL_INPUT}`), + tdd = null, + temp = dl.find(`dd.${TEMP}`); + dl.find(`dd:not(.${FORM_SELECT_TIPS}):not(.${TEMP})`).each((index, item) => { + if(inputValue == $(item).find('span').attr('name')){ + tdd = item; + } + }); + if(!tdd){//如果不存在, 则创建 + let val = fs.config.create(id, inputValue); + if(temp[0]){ + temp.attr('lay-value', val); + temp.find('span').text(inputValue); + temp.find('span').attr("name", inputValue); + temp.removeClass(DD_HIDE); + }else{ + tips.after($(this.createDD(id, { + name: inputValue, + innerHTML: inputValue, + value: val + }, `${TEMP} ${CREATE_LONG}`))); + } + } + }else{ + $(`[xid=${id}] dd.${TEMP}`).remove(); + } + } + + Common.prototype.createDD = function(id, item, clz){ + let ajaxConfig = ajaxs[id] ? ajaxs[id] : ajax; + let name = $.trim(item.innerHTML); + db[id][item.value] = $(item).is('option') ? (item = function(){ + let resultItem = {}; + resultItem[ajaxConfig.keyName] = name; + resultItem[ajaxConfig.keyVal] = item.value; + resultItem[ajaxConfig.keyDis] = item.disabled; + return resultItem; + }()) : item; + let template = data[id].config.template(id, item); + let pid = item[FORM_TEAM_PID]; + pid ? (pid = JSON.parse(pid)) : (pid = [-1]); + let attr = pid[0] == -1 ? '' : `tree-id="${pid.join('-')}" tree-folder="${!!item['XM_TREE_FOLDER']}"`; + return `
    +
    + + ${template} +
    +
    `; + } + + Common.prototype.createQuickBtn = function(obj, right){ + return `
    ${obj.name}
    ` + } + + Common.prototype.renderBtns = function(id, show, right){ + let quickBtn = []; + let dl = $(`dl[xid="${id}"]`); + quickBtn.push(`
    `); + $.each(data[id].config.btns, (index, item) => { + quickBtn.push(this.createQuickBtn(item, right)); + }); + quickBtn.push(`
    `); + quickBtn.push(this.createQuickBtn({icon: 'xm-iconfont icon-caidan', name: ''})); + return quickBtn.join(''); + } + + Common.prototype.renderSelect = function(id, tips, select){ + db[id] = {}; + let arr = []; + if(data[id].config.btns.length){ + setTimeout(() => { + let dl = $(`dl[xid="${id}"]`); + dl.parents(`.${FORM_SELECT}`).attr(SEARCH_TYPE, data[id].config.searchType); + dl.find(`.${CZ_GROUP}`).css('max-width', `${dl.prev().width() - 54}px`); + }, 10) + arr.push([ + `
    `, + this.renderBtns(id, null, '30px'), + `
    `, + `
    `, + ``, + ``, + `
    ` + ].join('')); + }else{ + arr.push(`
    ${tips}
    `); + } + if(this.isArray(select)){ + $(select).each((index, item) => { + if(item){ + if(item.type && item.type === 'optgroup') { + arr.push(`
    ${item.name}
    `); + } else { + arr.push(this.createDD(id, item)); + } + } + }); + }else{ + $(select).find('*').each((index, item) => { + if(item.tagName.toLowerCase() == 'option' && index == 0 && !item.value){ + return ; + } + if(item.tagName.toLowerCase() === 'optgroup') { + arr.push(`
    ${item.label}
    `); + } else { + arr.push(this.createDD(id, item)); + } + }); + } + arr.push('
    '); + arr.push(`
    没有选项
    `); + return arr.join(''); + } + + Common.prototype.on = function(){//事件绑定 + this.one(); + + $(document).on('click', (e) => { + if(!$(e.target).parents(`.${FORM_TITLE}`)[0]){//清空input中的值 + $(`.${PNAME} dl .${DD_HIDE}`).removeClass(DD_HIDE); + $(`.${PNAME} dl dd.${FORM_EMPTY}`).removeClass(FORM_EMPTY); + $(`.${PNAME} dl dd.${TEMP}`).remove(); + $.each(data, (key, fs) => { + this.clearInput(key); + if(!fs.values.length){ + this.changePlaceHolder($(`div[FS_ID="${key}"] .${LABEL}`)); + } + }); + } + $(`.${PNAME} .${FORM_SELECTED}`).each((index, item) => { + this.changeShow($(item).find(`.${FORM_TITLE}`), false); + }) ; + }); + } + + Common.prototype.calcLabelLeft = function(label, w, call){ + let pos = this.getPosition(label[0]); + pos.y = pos.x + label[0].clientWidth; + let left = label[0].offsetLeft; + if(!label.find('span').length){ + left = 0; + }else if(call){//校正归位 + let span = label.find('span:last'); + span.css('display') == 'none' ? (span = span.prev()[0]) : (span = span[0]); + let spos = this.getPosition(span); + spos.y = spos.x + span.clientWidth; + + if(spos.y > pos.y){ + left = left - (spos.y - pos.y) - 5; + }else{ + left = 0; + } + }else{ + if(w < 0){ + let span = label.find(':last'); + span.css('display') == 'none' ? (span = span.prev()[0]) : (span = span[0]); + let spos = this.getPosition(span); + spos.y = spos.x + span.clientWidth; + if(spos.y > pos.y){ + left -= 10; + } + }else{ + if(left < 0){ + left += 10; + } + if(left > 0){ + left = 0; + } + } + } + label.css('left', left + 'px'); + } + + Common.prototype.one = function(target){//一次性事件绑定 + $(target ? target : document).off('click', `.${FORM_TITLE}`).on('click', `.${FORM_TITLE}`, (e) => { + let othis = $(e.target), + title = othis.is(FORM_TITLE) ? othis : othis.parents(`.${FORM_TITLE}`), + dl = title.next(), + id = dl.attr('xid'); + + //清空非本select的input val + $(`dl[xid]`).not(dl).each((index, item) => { + this.clearInput($(item).attr('xid')); + }); + $(`dl[xid]`).not(dl).find(`dd.${DD_HIDE}`).removeClass(DD_HIDE); + + //如果是disabled select + if(title.hasClass(DIS)){ + return false; + } + //如果点击的是右边的三角或者只读的input + if(othis.is(`.${SANJIAO}`) || othis.is(`.${INPUT}[readonly]`)){ + this.changeShow(title, !title.parents(`.${FORM_SELECT}`).hasClass(FORM_SELECTED)); + return false; + } + //如果点击的是input的右边, focus一下 + if(title.find(`.${INPUT}:not(readonly)`)[0]){ + let input = title.find(`.${INPUT}`), + epos = {x: e.pageX, y: e.pageY}, + pos = this.getPosition(title[0]), + width = title.width(); + while(epos.x > pos.x){ + if($(document.elementFromPoint(epos.x, epos.y)).is(input)){ + input.focus(); + this.changeShow(title, true); + return false; + } + epos.x -= 50; + } + } + + //如果点击的是可搜索的input + if(othis.is(`.${INPUT}`)){ + this.changeShow(title, true); + return false; + } + //如果点击的是x按钮 + if(othis.is(`i[fsw="${NAME}"]`)){ + let val = this.getItem(id, othis), + dd = dl.find(`dd[lay-value='${val.value}']`); + if(dd.hasClass(DISABLED)){//如果是disabled状态, 不可选, 不可删 + return false; + } + this.handlerLabel(id, dd, false, val); + return false; + } + + this.changeShow(title, !title.parents(`.${FORM_SELECT}`).hasClass(FORM_SELECTED)); + return false; + }); + $(target ? target : document).off('click', `dl.${DL}`).on('click', `dl.${DL}`, (e) => { + let othis = $(e.target); + if(othis.is(`.${LINKAGE}`) || othis.parents(`.${LINKAGE}`)[0]){//linkage的处理 + othis = othis.is('li') ? othis : othis.parents('li[xm-value]'); + let group = othis.parents('.xm-select-linkage-group'), + id = othis.parents('dl').attr('xid'); + if(!id){ + return false; + } + //激活li + group.find('.xm-select-active').removeClass('xm-select-active'); + othis.addClass('xm-select-active'); + //激活下一个group, 激活前显示对应数据 + group.nextAll('.xm-select-linkage-group').addClass('xm-select-linkage-hide'); + let nextGroup = group.next('.xm-select-linkage-group'); + nextGroup.find('li').addClass('xm-select-linkage-hide'); + nextGroup.find(`li[pid="${othis.attr('xm-value')}"]`).removeClass('xm-select-linkage-hide'); + //如果没有下一个group, 或没有对应的值 + if(!nextGroup[0] || nextGroup.find(`li:not(.xm-select-linkage-hide)`).length == 0){ + let vals = [], + index = 0, + isAdd = !othis.hasClass('xm-select-this'); + if(data[id].config.radio){ + othis.parents('.xm-select-linkage').find('.xm-select-this').removeClass('xm-select-this'); + } + do{ + vals[index ++] = { + name: othis.find('span').text(), + value: othis.attr('xm-value') + } + othis = othis.parents('.xm-select-linkage-group').prev().find(`li[xm-value="${othis.attr('pid')}"]`); + }while(othis.length); + vals.reverse(); + let val = { + name: vals.map((item) => { + return item.name; + }).join('/'), + value: vals.map((item) => { + return item.value; + }).join('/'), + } + this.handlerLabel(id, null, isAdd, val); + }else{ + nextGroup.removeClass('xm-select-linkage-hide'); + } + return false; + } + + if(othis.is('dl')){ + return false; + } + + if(othis.is('dt')){ + othis.nextUntil(`dt`).each((index, item) => { + item = $(item); + if(item.hasClass(DISABLED) || item.hasClass(THIS)){ + + }else{ + item.find('i:not(.icon-expand)').click(); + } + }); + return false; + } + let dd = othis.is('dd') ? othis : othis.parents('dd'); + let id = dd.parent('dl').attr('xid'); + + if(dd.hasClass(DISABLED)){//被禁用选项的处理 + return false; + } + + //菜单功效 + if(othis.is('i.icon-caidan')){ + let opens = [], closes = []; + othis.parents('dl').find('dd[tree-folder="true"]').each((index, item) => { + $(item).attr('xm-tree-hidn') == undefined ? opens.push(item) : closes.push(item); + }); + let arr = closes.length ? closes : opens; + arr.forEach(item => item.click()); + return false; + } + //树状结构的选择 + let treeId = dd.attr('tree-id'); + if(treeId){ + //忽略右边的图标 + if(othis.is('i:not(.icon-expand)')){ + this.handlerLabel(id, dd, !dd.hasClass(THIS)); + return false; + } + let ajaxConfig = ajaxs[id] || ajax; + let treeConfig = ajaxConfig.tree; + let childrens = dd.nextAll(`dd[tree-id^="${treeId}"]`); + if(childrens && childrens.length){ + let len = childrens[0].clientHeight; + len ? ( + this.addTreeHeight(dd, len), + len = 0 + ) : ( + len = dd.attr('xm-tree-hidn') || 36, + dd.removeAttr('xm-tree-hidn'), + dd.find('>i').remove(), + (childrens = childrens.filter((index, item) => $(item).attr('tree-id').split('-').length - 1 == treeId.split('-').length)) + ); + childrens.animate({ + height: len + }, 150) + return false; + }else{ + if(treeConfig.nextClick && treeConfig.nextClick instanceof Function){ + treeConfig.nextClick(id, this.getItem(id, dd), (res) => { + if(!res || !res.length){ + this.handlerLabel(id, dd, !dd.hasClass(THIS)); + }else{ + dd.attr('tree-folder', 'true'); + let ddChilds = []; + res.forEach((item, idx) => { + item.innerHTML = item[ajaxConfig.keyName]; + item[FORM_TEAM_PID] = JSON.stringify(treeId.split('-').concat([idx])); + ddChilds.push(this.createDD(id, item)); + db[id][item[ajaxConfig.keyVal]] = item; + }); + dd.after(ddChilds.join('')); + } + }); + return false; + } + } + } + + if(dd.hasClass(FORM_SELECT_TIPS)){//tips的处理 + let btn = othis.is(`.${CZ}`) ? othis : othis.parents(`.${CZ}`); + if(!btn[0]){ + return false; + } + let method = btn.attr('method'); + let obj = data[id].config.btns.filter(bean => bean.name == method)[0]; + obj && obj.click && obj.click instanceof Function && obj.click(id, this); + return false; + } + this.handlerLabel(id, dd, !dd.hasClass(THIS)); + return false; + }); + } + + Common.prototype.addTreeHeight = function(dd, len){ + let treeId = dd.attr('tree-id'); + let childrens = dd.nextAll(`dd[tree-id^="${treeId}"]`); + if(childrens.length){ + dd.append(''); + dd.attr('xm-tree-hidn', len); + childrens.each((index, item) => { + let that = $(item); + this.addTreeHeight(that, len); + }) + } + } + + let db = {}; + Common.prototype.getItem = function(id, value){ + if(value instanceof $){ + if(value.is(`i[fsw="${NAME}"]`)){ + let span = value.parent(); + return db[id][value] || { + name: span.find('font').text(), + value: span.attr('value') + } + } + let val = value.attr('lay-value'); + return !db[id][val] ? (db[id][val] = { + name: value.find('span[name]').attr('name'), + value: val + }) : db[id][val]; + }else if(typeof(value) == 'string' && value.indexOf('/') != -1){ + return db[id][value] || { + name: this.valToName(id, value), + value: value + } + } + return db[id][value]; + } + + Common.prototype.linkageAdd = function(id, val){ + let dl = $(`dl[xid="${id}"]`); + dl.find('.xm-select-active').removeClass('xm-select-active'); + let vs = val.value.split('/'); + let pid, li, index = 0; + let lis = []; + do{ + pid = vs[index]; + li = dl.find(`.xm-select-linkage-group${index + 1} li[xm-value="${pid}"]`); + li[0] && lis.push(li); + index ++; + }while(li.length && pid != undefined); + if(lis.length == vs.length){ + $.each(lis, (idx, item) => { + item.addClass('xm-select-this'); + }); + } + } + + Common.prototype.linkageDel = function(id, val){ + let dl = $(`dl[xid="${id}"]`); + let vs = val.value.split('/'); + let pid, li, index = vs.length - 1; + do{ + pid = vs[index]; + li = dl.find(`.xm-select-linkage-group${index + 1} li[xm-value="${pid}"]`); + if(!li.parent().next().find(`li[pid=${pid}].xm-select-this`).length){ + li.removeClass('xm-select-this'); + } + index --; + }while(li.length && pid != undefined); + } + + Common.prototype.valToName = function(id, val){ + let dl = $(`dl[xid="${id}"]`); + let vs = (val + "").split('/'); + if(!vs.length){ + return null; + } + let names = []; + $.each(vs, (idx, item) => { + let name = dl.find(`.xm-select-linkage-group${idx + 1} li[xm-value="${item}"] span`).text(); + names.push(name); + }); + return names.length == vs.length ? names.join('/') : null; + } + + Common.prototype.commonHandler = function(key, label){ + if(!label || !label[0]){ + return ; + } + this.checkHideSpan(key, label); + //计算input的提示语 + this.changePlaceHolder(label); + //计算高度 + this.retop(label.parents(`.${FORM_SELECT}`)); + this.calcLabelLeft(label, 0, true); + //表单默认值 + this.setHidnVal(key, label); + //title值 + label.parents(`.${FORM_TITLE} .${NAME}`).attr('title', data[key].values.map((val) => { + return val.name; + }).join(',')); + } + + Common.prototype.initVal = function(id){ + let target = {}; + if(id){ + target[id] = data[id]; + }else{ + target = data; + } + $.each(target, (key, val) => { + let values = val.values, + div = $(`dl[xid="${key}"]`).parent(), + label = div.find(`.${LABEL}`), + dl = div.find('dl'); + dl.find(`dd.${THIS}`).removeClass(THIS); + + let _vals = values.concat([]); + _vals.concat([]).forEach((item, index) => { + this.addLabel(key, label, item); + dl.find(`dd[lay-value="${item.value}"]`).addClass(THIS); + }); + if(val.config.radio){ + _vals.length && values.push(_vals[_vals.length - 1]); + } + this.commonHandler(key, label); + }); + } + + Common.prototype.setHidnVal = function(key, label) { + if(!label || !label[0]) { + return; + } + label.parents(`.${PNAME}`).find(`.${HIDE_INPUT}`).val(data[key].values.map((val) => { + return val.value; + }).join(',')); + } + + Common.prototype.handlerLabel = function(id, dd, isAdd, oval, notOn){ + let div = $(`[xid="${id}"]`).prev().find(`.${LABEL}`), + val = dd && this.getItem(id, dd), + vals = data[id].values, + on = data[id].config.on || events.on[id], + endOn = data[id].config.endOn || events.endOn[id]; + if(oval){ + val = oval; + } + let fs = data[id]; + if(isAdd && fs.config.max && fs.values.length >= fs.config.max){ + let maxTipsFun = events.maxTips[id] || data[id].config.maxTips; + maxTipsFun && maxTipsFun(id, vals.concat([]), val, fs.config.max); + return ; + } + if(!notOn){ + if(on && on instanceof Function && on(id, vals.concat([]), val, isAdd, dd && dd.hasClass(DISABLED)) == false) { + return ; + } + } + let dl = $(`dl[xid="${id}"]`); + isAdd ? ( + (dd && dd[0] ? ( + dd.addClass(THIS), + dd.removeClass(TEMP) + ) : ( + dl.find('.xm-select-linkage')[0] && this.linkageAdd(id, val) + )), + this.addLabel(id, div, val), + vals.push(val) + ) : ( + (dd && dd[0] ? ( + dd.removeClass(THIS) + ) : ( + dl.find('.xm-select-linkage')[0] && this.linkageDel(id, val) + )), + this.delLabel(id, div, val), + this.remove(vals, val) + ); + if(!div[0]) return ; + //单选选完后直接关闭选择域 + if(fs.config.radio){ + this.changeShow(div, false); + } + //移除表单验证的红色边框 + div.parents(`.${FORM_TITLE}`).prev().removeClass('layui-form-danger'); + + //清空搜索值 + fs.config.clearInput && this.clearInput(id); + + this.commonHandler(id, div); + + !notOn && endOn && endOn instanceof Function && endOn(id, vals.concat([]), val, isAdd, dd && dd.hasClass(DISABLED)); + } + + Common.prototype.addLabel = function(id, div, val){ + if(!val) return ; + let tips = `fsw="${NAME}"`; + let [$label, $close] = [ + $(`${val.name}`), + $(``) + ]; + $label.append($close); + //如果是radio模式 + let fs = data[id]; + if(fs.config.radio){ + fs.values.length = 0; + $(`dl[xid="${id}"]`).find(`dd.${THIS}:not([lay-value="${val.value}"])`).removeClass(THIS); + div.find('span').remove(); + } + //如果是固定高度 + div.find('input').css('width', '50px'); + div.find('input').before($label); + } + + Common.prototype.delLabel = function(id, div, val){ + if(!val) return ; + div.find(`span[value="${val.value}"]:first`).remove(); + } + + Common.prototype.checkHideSpan = function(id, div){ + let parentHeight = div.parents(`.${NAME}`)[0].offsetHeight + 5; + div.find('span.xm-span-hide').removeClass('xm-span-hide'); + div.find('span[style]').remove(); + + let count = data[id].config.showCount; + div.find('span').each((index, item) => { + if(index >= count){ + $(item).addClass('xm-span-hide'); + } + }); + + let prefix = div.find(`span:eq(${count})`); + prefix[0] && prefix.before($(` + ${div.find('span').length - count}`)) + } + + Common.prototype.retop = function(div){//计算dl显示的位置 + let dl = div.find('dl'), + top = div.offset().top + div.outerHeight() + 5 - $win.scrollTop(), + dlHeight = dl.outerHeight(); + let up = div.hasClass('layui-form-selectup') || dl.css('top').indexOf('-') != -1 || (top + dlHeight > $win.height() && top >= dlHeight); + div = div.find(`.${NAME}`); + + let fs = data[dl.attr('xid')]; + let base = dl.parents('.layui-form-pane')[0] && dl.prev()[0].clientHeight > 38 ? 14 : 10; + if((fs && fs.config.direction == 'up') || up){ + up = true; + if((fs && fs.config.direction == 'down')){ + up = false; + } + } + let reHeight = div[0].offsetTop + div.height() + base; + if(up) { + dl.css({ + top: 'auto', + bottom: reHeight + 3 + 'px', + }); + } else { + dl.css({ + top: reHeight + 'px', + bottom: 'auto' + }); + } + } + + Common.prototype.changeShow = function(children, isShow){//显示于隐藏 + $('.layui-form-selected').removeClass('layui-form-selected'); + let top = children.parents(`.${FORM_SELECT}`), + realShow = top.hasClass(FORM_SELECTED), + id = top.find('dl').attr('xid'); + $(`.${PNAME} .${FORM_SELECT}`).not(top).removeClass(FORM_SELECTED); + if(isShow){ + this.retop(top); + top.addClass(FORM_SELECTED); + top.find(`.${INPUT}`).focus(); + if(!top.find(`dl dd[lay-value]:not(.${FORM_SELECT_TIPS})`).length){ + top.find(`dl .${FORM_NONE}`).addClass(FORM_EMPTY); + } + }else{ + top.removeClass(FORM_SELECTED); + this.clearInput(id); + top.find(`dl .${FORM_EMPTY}`).removeClass(FORM_EMPTY); + top.find(`dl dd.${DD_HIDE}`).removeClass(DD_HIDE); + top.find(`dl dd.${TEMP}`).remove(); + //计算ajax数据是否为空, 然后重新请求数据 + if(id && data[id] && data[id].config.isEmpty){ + this.triggerSearch(top); + } + this.changePlaceHolder(top.find(`.${LABEL}`)); + } + if(isShow != realShow){ + let openFun = data[id].config.opened || events.opened[id]; + isShow && openFun && openFun instanceof Function && openFun(id); + let closeFun = data[id].config.closed || events.closed[id]; + !isShow && closeFun && closeFun instanceof Function && closeFun(id); + } + } + + Common.prototype.changePlaceHolder = function(div){//显示于隐藏提示语 + //调整pane模式下的高度 + let title = div.parents(`.${FORM_TITLE}`); + title[0] || (title = div.parents(`dl`).prev()); + if(!title[0]){ + return ; + } + + let id = div.parents(`.${PNAME}`).find(`dl[xid]`).attr('xid'); + if(data[id] && data[id].config.height){//既然固定高度了, 那就看着办吧 + + }else{ + let height = title.find(`.${NAME}`)[0].clientHeight; + title.css('height' , (height > 36 ? height + 4 : height) + 'px'); + //如果是layui pane模式, 处理label的高度 + let label = title.parents(`.${PNAME}`).parent().prev(); + if(label.is('.layui-form-label') && title.parents('.layui-form-pane')[0]){ + height = height > 36 ? height + 4 : height; + title.css('height' , height + 'px'); + label.css({ + height: height + 2 + 'px', + lineHeight: (height - 18) + 'px' + }) + } + } + + let input = title.find(`.${TDIV} input`), + isShow = !div.find('span:last')[0] && !title.find(`.${INPUT}`).val(); + if(isShow){ + let ph = input.attr('back'); + input.removeAttr('back'); + input.attr('placeholder', ph); + }else{ + let ph = input.attr('placeholder'); + input.removeAttr('placeholder'); + input.attr('back', ph) + } + } + + Common.prototype.indexOf = function(arr, val){ + for(let i = 0; i < arr.length; i++) { + if(arr[i].value == val || arr[i].value == (val ? val.value : val) || arr[i] == val || JSON.stringify(arr[i]) == JSON.stringify(val)) { + return i; + } + } + return -1; + } + + Common.prototype.remove = function(arr, val){ + let idx = this.indexOf(arr, val ? val.value : val); + if(idx > -1) { + arr.splice(idx, 1); + return true; + } + return false; + } + + Common.prototype.selectAll = function(id, isOn, skipDis){ + let dl = $(`[xid="${id}"]`); + if(!dl[0]){ + return ; + } + if(dl.find('.xm-select-linkage')[0]){ + return ; + } + dl.find(`dd[lay-value]:not(.${FORM_SELECT_TIPS}):not(.${THIS})${skipDis ? ':not(.'+DISABLED+')' :''}`).each((index, item) => { + item = $(item); + let val = this.getItem(id, item); + this.handlerLabel(id, dl.find(`dd[lay-value="${val.value}"]`), true, val, !isOn); + }); + } + + Common.prototype.removeAll = function(id, isOn, skipDis){ + let dl = $(`[xid="${id}"]`); + if(!dl[0]){ + return ; + } + if(dl.find('.xm-select-linkage')[0]){//针对多级联动的处理 + data[id].values.concat([]).forEach((item, idx) => { + let vs = item.value.split('/'); + let pid, li, index = 0; + do{ + pid = vs[index ++]; + li = dl.find(`.xm-select-linkage-group${index}:not(.xm-select-linkage-hide) li[xm-value="${pid}"]`); + li.click(); + }while(li.length && pid != undefined); + }); + return ; + } + data[id].values.concat([]).forEach((item, index) => { + if(skipDis && dl.find(`dd[lay-value="${item.value}"]`).hasClass(DISABLED)){ + + }else{ + this.handlerLabel(id, dl.find(`dd[lay-value="${item.value}"]`), false, item, !isOn); + } + }); + } + + Common.prototype.reverse = function(id, isOn, skipDis){ + let dl = $(`[xid="${id}"]`); + if(!dl[0]){ + return ; + } + if(dl.find('.xm-select-linkage')[0]){ + return ; + } + dl.find(`dd[lay-value]:not(.${FORM_SELECT_TIPS})${skipDis ? ':not(.'+DISABLED+')' :''}`).each((index, item) => { + item = $(item); + let val = this.getItem(id, item); + this.handlerLabel(id, dl.find(`dd[lay-value="${val.value}"]`), !item.hasClass(THIS), val, !isOn); + }); + } + + Common.prototype.skin = function(id){ + let skins = ['default' ,'primary', 'normal', 'warm', 'danger']; + let skin = skins[Math.floor(Math.random() * skins.length)]; + $(`dl[xid="${id}"]`).parents(`.${PNAME}`).find(`.${FORM_SELECT}`).attr('xm-select-skin', skin); + this.check(id) && this.commonHandler(id, $(`dl[xid="${id}"]`).parents(`.${PNAME}`).find(`.${LABEL}`)); + } + + Common.prototype.getPosition = function(e){ + let x = 0, y = 0; + while (e != null) { + x += e.offsetLeft; + y += e.offsetTop; + e = e.offsetParent; + } + return { x: x, y: y }; + }; + + Common.prototype.onreset = function(){//监听reset按钮, 然后重置多选 + $(document).on('click', '[type=reset]', (e) => { + $(e.target).parents('form').find(`.${PNAME} dl[xid]`).each((index, item) => { + let id = item.getAttribute('xid'), + dl = $(item), + dd, + temp = {}; + common.removeAll(id); + data[id].config.init.forEach((val, idx) => { + if(val && (!temp[val] || data[id].config.repeat) && (dd = dl.find(`dd[lay-value="${val.value}"]`))[0]){ + common.handlerLabel(id, dd, true); + temp[val] = 1; + } + }); + }) + }); + } + + Common.prototype.bindEvent = function(name, id, fun){ + if(id && id instanceof Function){ + fun = id; + id = null; + } + if(fun && fun instanceof Function){ + if(!id){ + $.each(data, (id, val) => { + data[id] ? (data[id].config[name] = fun) : (events[name][id] = fun) + }) + }else{ + data[id] ? (data[id].config[name] = fun, delete events[name][id]) : (events[name][id] = fun) + } + } + } + + Common.prototype.check = function(id, notAutoRender){ + if($(`dl[xid="${id}"]`).length) { + return true; + }else if($(`select[xm-select="${id}"]`).length){ + if(!notAutoRender){ + this.render(id, $(`select[xm-select="${id}"]`)); + return true; + } + }else{ + delete data[id]; + return false; + } + } + + Common.prototype.render = function(id, select){ + common.init(select); + common.one($(`dl[xid="${id}"]`).parents(`.${PNAME}`)); + common.initVal(id); + } + + Common.prototype.log = function(obj){ + console.log(obj); + } + + let Select4 = function(){ + this.v = v; + this.render(); + }; + let common = new Common(); + + Select4.prototype.value = function(id, type, isAppend){ + if(typeof id != 'string'){ + return []; + } + let fs = data[id]; + if(!common.check(id)){ + return []; + } + if(typeof type == 'string' || type == undefined){ + let arr = fs.values.concat([]) || []; + if(type == 'val') { + return arr.map((val) => { + return val.value; + }); + } + if(type == 'valStr') { + return arr.map((val) => { + return val.value; + }).join(','); + } + if(type == 'name') { + return arr.map((val) => { + return val.name; + }); + } + if(type == 'nameStr') { + return arr.map((val) => { + return val.name; + }).join(','); + } + return arr; + } + if(common.isArray(type)) { + let dl = $(`[xid="${id}"]`), + temp = {}, + dd, + isAdd = true; + if(isAppend == false){//删除传入的数组 + isAdd = false; + }else if(isAppend == true){//追加模式 + isAdd = true; + }else{//删除原有的数据 + common.removeAll(id); + } + if(isAdd){ + fs.values.forEach((val, index) => { + temp[val.value] = 1; + }); + } + type.forEach((val, index) => { + if(val && (!temp[val] || fs.config.repeat)){ + if((dd = dl.find(`dd[lay-value="${val}"]`))[0]){ + common.handlerLabel(id, dd, isAdd, null, true); + temp[val] = 1; + }else{ + let name = common.valToName(id, val); + if(name){ + common.handlerLabel(id, dd, isAdd, common.getItem(id, val), true); + temp[val] = 1; + } + } + } + }); + } + } + + Select4.prototype.on = function(id, fun, isEnd) { + common.bindEvent(isEnd ? 'endOn' : 'on', id, fun); + return this; + } + + Select4.prototype.filter = function(id, fun){ + common.bindEvent('filter', id, fun); + return this; + } + + Select4.prototype.maxTips = function(id, fun){ + common.bindEvent('maxTips', id, fun); + return this; + } + + Select4.prototype.opened = function(id, fun){ + common.bindEvent('opened', id, fun); + return this; + } + + Select4.prototype.closed = function(id, fun){ + common.bindEvent('closed', id, fun); + return this; + } + + Select4.prototype.config = function(id, config, isJson){ + if(id && typeof id == 'object'){ + isJson = config == true; + config = id; + id = null; + } + if(config && typeof config== 'object'){ + if(isJson){ + config.header || (config.header = {}); + config.header['Content-Type'] = 'application/json; charset=UTF-8'; + config.dataType = 'json'; + } + id ? ( + ajaxs[id] = $.extend(true, {}, ajaxs[id] || ajax, config), !common.check(id) && this.render(id), + data[id] && config.direction && (data[id].config.direction = config.direction), + data[id] && config.clearInput && (data[id].config.clearInput = true), + config.searchUrl && data[id] && common.triggerSearch($(`.${PNAME} dl[xid="${id}"]`).parents(`.${FORM_SELECT}`), true) + ) : ( + $.extend(true, ajax, config), + $.each(ajaxs, (key, item) => { + $.extend(true, item, config) + }) + ); + } + return this; + } + + Select4.prototype.render = function(id, options){ + if(id && typeof id == 'object'){ + options = id; + id = null; + } + let config = options ? { + init: options.init, + disabled: options.disabled, + max: options.max, + isSearch: options.isSearch, + searchUrl: options.searchUrl, + isCreate: options.isCreate, + radio: options.radio, + skin: options.skin, + direction: options.direction, + height: options.height, + formname: options.formname, + layverify: options.layverify, + layverType: options.layverType, + showCount: options.showCount, + placeholder: options.placeholder, + create: options.create, + filter: options.filter, + maxTips: options.maxTips, + on: options.on, + on: options.on, + opened: options.opened, + closed: options.closed, + template: options.template, + clearInput: options.clearInput, + } : {}; + + options && options.searchType != undefined && (config.searchType = options.searchType == 'dl' ? 1 : 0); + + if(id){ + fsConfigs[id] = {}; + $.extend(fsConfigs[id], data[id] ? data[id].config : {}, config); + }else{ + $.extend(fsConfig, config); + } + + ($(`select[${NAME}="${id}"]`)[0] ? $(`select[${NAME}="${id}"]`) : $(`select[${NAME}]`)).each((index, select) => { + let sid = select.getAttribute(NAME); + common.render(sid, select); + setTimeout(() => common.setHidnVal(sid, $(`select[xm-select="${sid}"] + div.${PNAME} .${LABEL}`)), 10); + }); + return this; + } + + Select4.prototype.disabled = function(id){ + let target = {}; + id ? (common.check(id) && (target[id] = data[id])) : (target = data); + + $.each(target, (key, val) => { + $(`dl[xid="${key}"]`).prev().addClass(DIS); + }); + return this; + } + + Select4.prototype.undisabled = function(id){ + let target = {}; + id ? (common.check(id) && (target[id] = data[id])) : (target = data); + + $.each(target, (key, val) => { + $(`dl[xid="${key}"]`).prev().removeClass(DIS); + }); + return this; + } + + Select4.prototype.data = function(id, type, config){ + if(!id || !type || !config){ + common.log(`id: ${id} param error !!!`) + return this; + } + if(!common.check(id)){ + common.log(`id: ${id} not render !!!`) + return this; + } + this.value(id, []); + this.config(id, config); + if(type == 'local'){ + common.renderData(id, config.arr, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100'); + }else if(type == 'server'){ + common.ajax(id, config.url, config.keyword, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100'); + } + return this; + } + + Select4.prototype.btns = function(id, btns, config){ + if(id && common.isArray(id)){ + btns = id; + id = null; + } + if(!btns || !common.isArray(btns)) { + return this; + }; + let target = {}; + id ? (common.check(id) && (target[id] = data[id])) : (target = data); + + btns = btns.map((obj) => { + if(typeof obj == 'string'){ + if(obj == 'select'){ + return quickBtns[0]; + } + if(obj == 'remove'){ + return quickBtns[1]; + } + if(obj == 'reverse'){ + return quickBtns[2]; + } + if(obj == 'skin'){ + return quickBtns[3]; + } + } + return obj; + }); + + $.each(target, (key, val) => { + val.config.btns = btns; + let dd = $(`dl[xid="${key}"]`).find(`.${FORM_SELECT_TIPS}:first`); + if(btns.length){ + let show = config && config.show && (config.show == 'name' || config.show == 'icon') ? config.show : ''; + let html = common.renderBtns(key, show, config && config.space ? config.space : '30px'); + dd.html(html); + }else{ + let pcInput = dd.parents(`.${FORM_SELECT}`).find(`.${TDIV} input`); + let html = pcInput.attr('placeholder') || pcInput.attr('back'); + dd.html(html); + dd.removeAttr('style'); + } + }); + + return this; + } + + Select4.prototype.search = function(id, val){ + if(id && common.check(id)){ + ajaxs[id] = $.extend(true, {}, ajaxs[id] || ajax, { + first: true, + searchVal: val + }); + common.triggerSearch($(`dl[xid="${id}"]`).parents(`.${FORM_SELECT}`), true); + } + return this; + } + + Select4.prototype.replace = function(id, type, config){ + if(!id || !type || !config){ + common.log(`id: ${id} param error !!!`) + return this; + } + if(!common.check(id, true)){ + common.log(`id: ${id} not render !!!`) + return this; + } + let oldVals = this.value(id, 'val'); + this.value(id, []); + this.config(id, config); + if(type == 'local'){ + common.renderData(id, config.arr, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100', false, true); + this.value(id, oldVals, true); + }else if(type == 'server'){ + common.ajax(id, config.url, config.keyword, config.linkage == true, config.linkageWidth ? config.linkageWidth : '100', false, (id) => { + this.value(id, oldVals, true); + }, true); + } + } + + return new Select4(); +}); \ No newline at end of file diff --git a/public/static/component/laytp/module/step.js b/public/static/component/laytp/module/step.js new file mode 100644 index 0000000000000000000000000000000000000000..40e0fdfca9e75b707886f537ed77f8c65eba8b33 --- /dev/null +++ b/public/static/component/laytp/module/step.js @@ -0,0 +1,80 @@ +layui.define(['layer', 'carousel'], function (exports) { + var $ = layui.jquery; + var layer = layui.layer; + var carousel = layui.carousel; + + var renderDom = function (elem, stepItems, postion) { + var stepDiv = '
    '; + for (var i = 0; i < stepItems.length; i++) { + stepDiv += '
    '; + if (i < (stepItems.length - 1)) { + if (i < postion) { + stepDiv += '
    '; + } else { + stepDiv += '
    '; + } + } + var number = stepItems[i].number; + if (!number) { + number = i + 1; + } + if (i == postion) { + stepDiv += '
    ' + number + '
    '; + } else if (i < postion) { + stepDiv += '
    '; + } else { + stepDiv += '
    ' + number + '
    '; + } + var title = stepItems[i].title; + var desc = stepItems[i].desc; + var time = stepItems[i].time; + if (title || desc || time) { + stepDiv += '
    '; + if (title) { + stepDiv += '
    ' + title + '
    '; + } + if (desc) { + stepDiv += '
    ' + desc + '
    '; + } + if (time) { + stepDiv += '
    ' + time + '
    '; + } + stepDiv += '
    '; + } + stepDiv += '
    '; + } + stepDiv += '
    '; + $(elem).prepend(stepDiv); + var bfb = 100 / stepItems.length; + $('.step-item').css('width', bfb + '%'); + }; + + var laytpStep = { + render: function (param) { + param.indicator = 'none'; // 不显示指示器 + param.arrow = 'always'; // 始终显示箭头 + param.autoplay = false; // 关闭自动播放 + if (!param.stepWidth) { + param.stepWidth = '400px'; + } + carousel.render(param); + var stepItems = param.stepItems; + renderDom(param.elem, stepItems, 0); + $('.lay-step').css('width', param.stepWidth); + carousel.on('change(' + param.filter + ')', function (obj) { + $(param.elem).find('.lay-step').remove(); + renderDom(param.elem, stepItems, obj.index); + $('.lay-step').css('width', param.stepWidth); + }); + $(param.elem).find('.layui-carousel-arrow').css('display', 'none'); + $(param.elem).css('background-color', 'transparent'); + }, + next: function (elem) { + $(elem).find('.layui-carousel-arrow[lay-type=add]').trigger('click'); + }, + pre: function (elem) { + $(elem).find('.layui-carousel-arrow[lay-type=sub]').trigger('click'); + } + }; + exports('step', laytpStep); +}); \ No newline at end of file diff --git a/public/static/component/laytp/module/tag.js b/public/static/component/laytp/module/tag.js new file mode 100644 index 0000000000000000000000000000000000000000..b7222ce296ba1ee1f2fe61f303cbd2545b412401 --- /dev/null +++ b/public/static/component/laytp/module/tag.js @@ -0,0 +1,159 @@ +layui.define('jquery', function(exports){ + "use strict"; + + var $ = layui.$ + ,MOD_NAME = 'tag', + TAG_CLASS = '.tag', + BUTTON_NEW_TAG ='button-new-tag', + INPUT_NEW_TAG ='input-new-tag', + TAG_ITEM ='tag-item', + CLOSE = 'tag-close', + DEFAULT_SKIN ='layui-btn layui-btn-primary layui-btn-sm' + ,tag = function(){ + this.config = { + skin: DEFAULT_SKIN, + tagText:'+ New Tag' + }; + this.configs = {} + }; + + //全局设置 + tag.prototype.set = function(options){ + var that = this; + $.extend(true, that.config, options); + tag.render(); + return that; + }; + + //表单事件监听 + tag.prototype.on = function(events, callback){ + return layui.onevent.call(this, MOD_NAME, events, callback); + }; + + //外部Tag新增 + tag.prototype.add = function(filter, options){ + var tagElem = $(TAG_CLASS + '[lay-filter='+ filter +']') + call.add(null, tagElem, options); + call.tagAuto(filter); + return this; + }; + + //外部Tag删除 + tag.prototype.delete = function(filter, layid){ + var tagElem = $(TAG_CLASS + '[lay-filter='+ filter +']') + ,tagItemElem = tagElem.find('>.' + TAG_ITEM + '[lay-id="'+ layid +'"]'); + call.delete(null, tagItemElem); + return this; + }; + + //基础事件体 + var call = { + //Tag点击 + tagClick: function(e, index, tagItemElem, options){ + options = options || {}; + var othis = tagItemElem || $(this) + ,index = index || othis.index(othis) + ,parents = othis.parents(TAG_CLASS).eq(0) + ,filter = parents.attr('lay-filter'); + layui.event.call(this, MOD_NAME, 'click('+ filter +')', { + elem: parents + ,index: index + }); + } + //Tag新增事件 + ,add: function(e, tagElem, options){ + var filter = tagElem.attr('lay-filter'), + buttonNewTag = tagElem.children('.' + BUTTON_NEW_TAG), + index = buttonNewTag.index() + ,newTag = ''; + var result = layui.event.call(this, MOD_NAME, 'add('+ filter +')', { + elem: tagElem + ,index: index + ,othis: newTag + }) + if(result === false) return; + buttonNewTag[0] ? buttonNewTag.before(newTag) : tagElem.append(newTag); + } + //Tag输入事件 + ,input: function(e, othis){ + var buttonNewTag = othis || $(this) + ,parents = buttonNewTag.parents(TAG_CLASS).eq(0) + ,filter = parents.attr('lay-filter') + var options = tag.configs[filter] = $.extend({}, tag.config, tag.configs[filter] || {}, options); + //标签输入框 + var inpatNewTag = $('
    '); + inpatNewTag.addClass(options.skin); + buttonNewTag.after(inpatNewTag).remove(); + inpatNewTag.children('.layui-input').on('blur', function () { + if(this.value){ + var options = { + text: this.value + } + call.add(null, parents, options); + } + inpatNewTag.remove(); + call.tagAuto(filter); + }).focus(); + } + //Tag删除 + ,delete: function(e, othis){ + var tagItem = othis || $(this).parent(), index = tagItem.index() + ,parents = tagItem.parents(TAG_CLASS).eq(0) + ,filter = parents.attr('lay-filter'); + + var result = layui.event.call(this, MOD_NAME, 'delete('+ filter +')', { + elem: parents + ,index: index + }) + if(result === false) return; + tagItem.remove() + } + //Tag 自适应 + ,tagAuto: function(filter){ + filter = filter || ''; + var options = filter ? tag.configs[filter] || tag.config : tag.config; + var elemFilter = function(){ + return filter ? ('[lay-filter="' + filter +'"]') : ''; + }(); + $(TAG_CLASS + elemFilter).each(function(){ + var othis = $(this),tagItem = othis.children('.' + TAG_ITEM), buttonNewTag = othis.children('.' + BUTTON_NEW_TAG); + tagItem.removeClass(DEFAULT_SKIN).addClass(options.skin); + //允许关闭 + if(othis.attr('lay-allowClose') && tagItem.length){ + tagItem.each(function(){ + var li = $(this); + if(!li.find('.'+CLOSE)[0]){ + var close = $(''); + close.on('click', call.delete); + li.append(close); + } + }); + } + //允许新增标签 + if(othis.attr('lay-newTag') && buttonNewTag.length === 0){ + buttonNewTag = $(''); + buttonNewTag.on('click', call.input); + othis.append(buttonNewTag); + } + buttonNewTag.html(options.tagText); + buttonNewTag.removeClass(DEFAULT_SKIN).addClass(options.skin); + }); + } + }; + + tag.prototype.init = function(filter, options){ + if(filter){ + tag.configs[filter] = $.extend({}, tag.config, tag.configs[filter] || {}, options); + } + return call.tagAuto.call(this, filter); + }; + + tag.prototype.render = tag.prototype.init; + + var tag = new tag(), dom = $(document); + tag.render(); + + dom.on('click', '.' + TAG_ITEM, call.tagClick); //tag 单击事件 + exports(MOD_NAME, tag); +}); + diff --git a/public/static/component/laytp/module/theme.js b/public/static/component/laytp/module/theme.js index 4320ac927752936ecb6fb83cd31b8257ebaad6a7..ff4b7ec4ee69fbc916745968f319294cf2ec157b 100644 --- a/public/static/component/laytp/module/theme.js +++ b/public/static/component/laytp/module/theme.js @@ -7,8 +7,10 @@ layui.define(["jquery","layer"], function (exports) { theme.changeTheme = function (target, autoHead) { this.autoHead = autoHead; - const color = localStorage.getItem("theme-color-context"); - this.colorSet(color); + var color = localStorage.getItem("theme-color-color"); + var second = localStorage.getItem("theme-color-second"); + var tableChecked = localStorage.getItem("theme-color-table_checked"); + this.colorSet(color, second, tableChecked); if (target.frames.length == 0) return; for (var i = 0; i < target.frames.length; i++) { try { @@ -21,9 +23,8 @@ layui.define(["jquery","layer"], function (exports) { } } - theme.colorSet = function(color) { - - let style = ''; + theme.colorSet = function(color, second, tableChecked) { + var style = ''; style += '.light-theme .laytp-nav-tree .layui-this a:hover,.light-theme .laytp-nav-tree .layui-this,.light-theme .laytp-nav-tree .layui-this a,.laytp-nav-tree .layui-this a,.laytp-nav-tree .layui-this{background-color: ' +color + '!important;}'; style += '.laytp-admin .layui-logo .title{color:' + color + '!important;}'; style += '.laytp-frame-title .dot,.laytp-tab .layui-this .laytp-tab-active{background-color: ' + color +'!important;}'; @@ -33,28 +34,38 @@ layui.define(["jquery","layer"], function (exports) { style += '.layui-header .layui-nav-child .layui-this a{background-color:' + color +'!important;color:white!important;}'; style += '#preloader{background-color:' + color + '!important;}'; style += '.laytpone-color .color-content li.layui-this:after, .laytpone-color .color-content li:hover:after {border: ' +color + ' 3px solid!important;}'; - style += '.layui-nav .layui-nav-child dd.layui-this a, .layui-nav-child dd.layui-this{background-color:' + color + '!important}'; + style += '.layui-nav .layui-nav-child dd.layui-this a, .layui-nav-child dd.layui-this{background-color:' + color + ';color:white;}'; style += '.laytp-social-entrance {background-color:' + color + '!important}'; - style += '.laytp-admin .pe-collaspe {background-color:' + color + '!important}'; + style += '.laytp-admin .pe-collapse {background-color:' + color + '!important}'; style += '.layui-fixbar li {background-color:' + color + '!important}'; - if(this.autoHead){ - style += '.laytp-admin .layui-header{background-color:' + color + '!important;}.laytp-admin .layui-header .layui-nav .layui-nav-item>a{color:white!important;}'; - } style += '.laytp-btn-primary {background-color:' + color + '!important}'; - style += '.layui-input:focus,.layui-textarea:focus {border-color: '+ color +'!important;}' - style += '.layui-form-checked[lay-skin=primary] i {border-color: '+ color +'!important;background-color: ' + color + ';}' - style += '.layui-form-onswitch { border-color: ' + color + '; background-color: '+color+';}' - style += '.layui-form-radio:hover *, .layui-form-radioed, .layui-form-radioed>i {color: ' + color + ';}' + style += '.layui-input:hover,.layui-textarea:hover {border-color: ' + color + '!important;}' + style += '.layui-input:focus,.layui-textarea:focus {border-color: ' + color + '!important;}' + style += '.layui-laypage input:focus,.layui-laypage select:focus{border-color:' + color + '!important;}' + style += 'xm-select:hover{border-color: ' + color + '!important;}' + style += 'xm-select > .xm-tips{color:#c6c6c6!important;font-size:14px;}' + style += '.layui-form-checkbox[lay-skin=primary]:hover span {background-color: initial;}' + style += '.layui-form-checked[lay-skin=primary] i {border-color: ' + color + '!important;background-color: ' + color + '!important;}' + style += '.layui-form-checked,.layui-form-checked:hover {border-color: ' + color + '!important;}' + style += '.layui-form-checked span,.layui-form-checked:hover span {background-color: ' + color + ';}' + style += '.layui-form-checked i,.layui-form-checked:hover i {color: ' + color + ';}' + style += '.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{background-color: ' + color + '!important;}' + style += '.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:' + color + '!important}' + style += '.layui-form-onswitch { border-color: ' + color + '!important; background-color: ' + color + '!important;}' + style += '.layui-form-radio>i:hover, .layui-form-radioed>i {color: ' + color + ';}' style += '.layui-laypage .layui-laypage-curr .layui-laypage-em{background-color:'+ color +'!important}' style += '.layui-tab-brief>.layui-tab-more li.layui-this:after, .layui-tab-brief>.layui-tab-title .layui-this:after{border-bottom: 3px solid '+color+'!important}' style += '.layui-tab-brief>.layui-tab-title .layui-this{color:'+color+'!important}' - style += '.layui-progress-bar{background-color:'+color+'}'; - style += '.layui-elem-quote{border-left: 5px solid '+ color +'}'; - style += '.layui-timeline-axis{color:' + color + '}'; + style += '.layui-progress-bar{background-color:'+color+'!important}'; + style += '.layui-elem-quote{border-left: 5px solid '+ color +'!important}'; + style += '.layui-timeline-axis{color:' + color + '!important}'; style += '.layui-laydate .layui-this{background-color:'+color+'!important}'; - style += '.laytp-text{color:' + color + '!important}'; - style += '.laytp-collasped-pe{background-color:'+color+'!important}' - style += '.layui-form-select dl dd.layui-this{background-color:'+color+'}' + style += '.layui-laydate-content td.laydate-day-now{color:'+color+'!important}'; + style += '.layui-laydate-content td.laydate-day-now:after{border-color:'+color+'!important}'; + style += '.laytp-this,.laytp-text{color:' + color + '!important}'; + style += '.laytp-back{background-color:'+ color +'!important}'; + style += '.laytp-collapsed-pe{background-color:'+color+'!important}' + style += '.layui-form-select dl dd.layui-this{color:'+color+'!important;}' style += '.tag-item-normal{background:'+color+'!important}'; style += '.step-item-head.step-item-head-active{background-color:'+color+'}' style += '.step-item-head{border: 3px solid '+color+';}' @@ -69,10 +80,25 @@ layui.define(["jquery","layer"], function (exports) { style += '.layui-form-checkbox[lay-skin=primary]:hover i{border-color:'+color+'!important}' style += '.laytp-tab-menu .item:hover{background-color:'+color+'!important}' style += '.layui-form-danger:focus {border-color:#FF5722 !important}' - style += '.laytp-admin .user a:hover{color:'+color+'!important}' style += '.laytp-admin .user .layui-this a:hover{color:white!important}' + style += '.laytp-admin .user a:hover{color:'+color+'!important}' style += '.laytp-notice .layui-this{color:'+color+'!important}' - var colorPane = $("#laytp-admin-color"); + style += '.layui-form-radio:hover *, .layui-form-radioed, .layui-form-radioed>i{color:' + color + ' !important}'; + style += '.laytp-btn:hover {color: '+color+';background-color: ' + second + ';}' + style += '.laytp-btn-primary[plain] {color: '+ color +' !important;background: ' + second + ' !important;}' + style += '.laytp-btn-primary[plain]:hover {background-color: ' + color + '!important}' + style += '.light-theme .laytp-nav-tree .layui-this a:hover,.light-theme .laytp-nav-tree .layui-this,.light-theme .laytp-nav-tree .layui-this a {background-color:'+second+'!important;color:'+color+'!important;}' + style += '.light-theme .laytp-nav-tree .layui-this{ border-right: 3px solid '+color+'!important}' + style += '.loader:after {background:'+color+'}' + style += '.layui-laydate .layui-this, .layui-laydate .layui-this>div{background:'+color+'!important}' + if(this.autoHead === true || this.autoHead === "true"){ + style += '.laytp-admin.banner-layout .layui-header .layui-logo,.laytp-admin .layui-header{border:none;background-color:' + color + '!important;}.laytp-admin.banner-layout .layui-header .layui-logo .title,.laytp-admin .layui-header .layui-nav .layui-nav-item>a{color:whitesmoke!important;}'; + style += '.laytp-admin.banner-layout .layui-header{ box-shadow: 2px 0 6px rgb(0 21 41 / 35%) }' + style += '.laytp-admin .layui-header .layui-layout-control .layui-this *,.laytp-admin.banner-layout .layui-header .layui-layout-control .layui-this *{ background-color: rgba(0,0,0,.1)!important;}' + } + style += '.menu-search-list li:hover,.menu-search-list li.this{background-color:'+ color +'}'; + style += '.layui-table-checked{background-color:' + tableChecked + '!important}' + var colorPane = $("#laytp-admin-color"); if(colorPane.length>0){ colorPane.html(style); }else{ diff --git a/public/static/component/laytp/module/tinymce/tinymce.js b/public/static/component/laytp/module/tinymce/tinymce.js index c686e00af6f7f5ead451ded70b974e56f15daefc..b6ef22032c3ee390e2f454cd78c57f328dad4900 100644 --- a/public/static/component/laytp/module/tinymce/tinymce.js +++ b/public/static/component/laytp/module/tinymce/tinymce.js @@ -112,9 +112,9 @@ layui.define(['jquery'],function (exports) { option.quickbars_selection_toolbar = isset(option.quickbars_selection_toolbar) ? option.quickbars_selection_toolbar : 'cut copy | bold italic underline strikethrough ' - option.plugins = isset(option.plugins) ? option.plugins : 'code quickbars print preview searchreplace autolink fullscreen image link media codesample table charmap hr advlist lists wordcount imagetools indent2em'; + option.plugins = isset(option.plugins) ? option.plugins : 'code kityformula-editor quickbars print preview searchreplace autolink fullscreen image link media codesample table charmap hr advlist lists wordcount imagetools indent2em'; - option.toolbar = isset(option.toolbar) ? option.toolbar : 'code undo redo | forecolor backcolor bold italic underline strikethrough | indent2em alignleft aligncenter alignright alignjustify outdent indent | link bullist numlist image table codesample | formatselect fontselect fontsizeselect'; + option.toolbar = isset(option.toolbar) ? option.toolbar : 'code undo redo | kityformula-editor forecolor backcolor bold italic underline strikethrough | indent2em alignleft aligncenter alignright alignjustify outdent indent | link bullist numlist image table codesample | formatselect fontselect fontsizeselect'; option.resize = isset(option.resize) ? option.resize : false; diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.js index 0c7d3b5378b63d1ad7ceb08579faa1b071f3064f..8919cf0f4a27f2dec307f16587cfa90ab2643d4d 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.js +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.js @@ -3163,7 +3163,7 @@ window.tinymce.Resource.add("tinymce.plugins.emoticons", { fitzpatrick_scale: false, category: "food_and_drink" }, - pear: { + laytp: { keywords: [ "fruit", "nature", "food" ], "char": '\ud83c\udf50', fitzpatrick_scale: false, @@ -6830,7 +6830,7 @@ window.tinymce.Resource.add("tinymce.plugins.emoticons", { category: "symbols" }, trident: { - keywords: [ "weapon", "spear" ], + keywords: [ "weapon", "slaytp" ], "char": '\ud83d\udd31', fitzpatrick_scale: false, category: "symbols" diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.min.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.min.js index f288546510dbf23b5345a6fc38cc0725b27df211..66bb714e0901a21ae1e55845fca5b5b4fc6e723d 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.min.js +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojiimages.min.js @@ -1,3 +1,3 @@ // Source: npm package: emojilib // Images provided by twemoji: https://github.com/twitter/twemoji -window.tinymce.Resource.add("tinymce.plugins.emoticons",{100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],"char":'\ud83d\udcaf',fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],"char":'\ud83d\udd22',fitzpatrick_scale:!1,category:"symbols"},grinning:{keywords:["face","smile","happy","joy",":D","grin"],"char":'\ud83d\ude00',fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],"char":'\ud83d\ude2c',fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],"char":'\ud83d\ude01',fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],"char":'\ud83d\ude02',fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],"char":'\ud83e\udd23',fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],"char":'\ud83e\udd73',fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],"char":'\ud83d\ude03',fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],"char":'\ud83d\ude04',fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],"char":'\ud83d\ude05',fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"char":'\ud83d\ude06',fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],"char":'\ud83d\ude07',fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],"char":'\ud83d\ude09',fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],"char":'\ud83d\ude0a',fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],"char":'\ud83d\ude42',fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],"char":'\ud83d\ude43',fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],"char":'\u263a\ufe0f',fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"char":'\ud83d\ude0b',fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],"char":'\ud83d\ude0c',fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],"char":'\ud83d\ude0d',fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],"char":'\ud83e\udd70',fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":'\ud83d\ude18',fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],"char":'\ud83d\ude17',fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],"char":'\ud83d\ude19',fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":'\ud83d\ude1a',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],"char":'\ud83d\ude1c',fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],"char":'\ud83e\udd2a',fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],"char":'\ud83e\udd28',fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],"char":'\ud83e\uddd0',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],"char":'\ud83d\ude1d',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],"char":'\ud83d\ude1b',fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],"char":'\ud83e\udd11',fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],"char":'\ud83e\udd13',fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],"char":'\ud83d\ude0e',fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],"char":'\ud83e\udd29',fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],"char":'\ud83e\udd21',fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],"char":'\ud83e\udd20',fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],"char":'\ud83e\udd17',fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],"char":'\ud83d\ude0f',fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],"char":'\ud83d\ude36',fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],"char":'\ud83d\ude10',fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],"char":'\ud83d\ude11',fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],"char":'\ud83d\ude12',fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],"char":'\ud83d\ude44',fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],"char":'\ud83e\udd14',fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],"char":'\ud83e\udd25',fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],"char":'\ud83e\udd2d',fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],"char":'\ud83e\udd2b',fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],"char":'\ud83e\udd2c',fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],"char":'\ud83e\udd2f',fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],"char":'\ud83d\ude33',fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],"char":'\ud83d\ude1e',fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],"char":'\ud83d\ude1f',fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],"char":'\ud83d\ude20',fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],"char":'\ud83d\ude21',fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],"char":'\ud83d\ude14',fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],"char":'\ud83d\ude15',fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],"char":'\ud83d\ude41',fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],"char":'\u2639',fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],"char":'\ud83d\ude23',fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],"char":'\ud83d\ude16',fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],"char":'\ud83d\ude2b',fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],"char":'\ud83d\ude29',fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],"char":'\ud83e\udd7a',fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],"char":'\ud83d\ude24',fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],"char":'\ud83d\ude2e',fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],"char":'\ud83d\ude31',fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],"char":'\ud83d\ude28',fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],"char":'\ud83d\ude30',fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],"char":'\ud83d\ude2f',fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],"char":'\ud83d\ude26',fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],"char":'\ud83d\ude27',fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],"char":'\ud83d\ude22',fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],"char":'\ud83d\ude25',fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],"char":'\ud83e\udd24',fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],"char":'\ud83d\ude2a',fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],"char":'\ud83d\ude13',fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],"char":'\ud83e\udd75',fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],"char":'\ud83e\udd76',fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],"char":'\ud83d\ude2d',fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],"char":'\ud83d\ude35',fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],"char":'\ud83d\ude32',fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],"char":'\ud83e\udd10',fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],"char":'\ud83e\udd22',fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],"char":'\ud83e\udd27',fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],"char":'\ud83e\udd2e',fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],"char":'\ud83d\ude37',fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],"char":'\ud83e\udd12',fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],"char":'\ud83e\udd15',fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],"char":'\ud83e\udd74',fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],"char":'\ud83d\ude34',fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],"char":'\ud83d\udca4',fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],"char":'\ud83d\udca9',fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],"char":'\ud83d\ude08',fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],"char":'\ud83d\udc7f',fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],"char":'\ud83d\udc79',fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],"char":'\ud83d\udc7a',fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],"char":'\ud83d\udc80',fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],"char":'\ud83d\udc7b',fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],"char":'\ud83d\udc7d',fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],"char":'\ud83e\udd16',fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],"char":'\ud83d\ude3a',fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],"char":'\ud83d\ude38',fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],"char":'\ud83d\ude39',fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],"char":'\ud83d\ude3b',fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],"char":'\ud83d\ude3c',fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],"char":'\ud83d\ude3d',fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],"char":'\ud83d\ude40',fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],"char":'\ud83d\ude3f',fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],"char":'\ud83d\ude3e',fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],"char":'\ud83e\udd32',fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],"char":'\ud83d\ude4c',fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],"char":'\ud83d\udc4f',fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"char":'\ud83d\udc4b',fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],"char":'\ud83e\udd19',fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"char":'\ud83d\udc4d',fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],"char":'\ud83d\udc4e',fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],"char":'\ud83d\udc4a',fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],"char":'\u270a',fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],"char":'\ud83e\udd1b',fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],"char":'\ud83e\udd1c',fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],"char":'\u270c',fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],"char":'\ud83d\udc4c',fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],"char":'\u270b',fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],"char":'\ud83e\udd1a',fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],"char":'\ud83d\udc50',fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],"char":'\ud83d\udcaa',fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],"char":'\ud83d\ude4f',fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],"char":'\ud83e\uddb6',fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],"char":'\ud83e\uddb5',fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],"char":'\ud83e\udd1d',fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],"char":'\u261d',fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],"char":'\ud83d\udc46',fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],"char":'\ud83d\udc47',fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],"char":'\ud83d\udc48',fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],"char":'\ud83d\udc49',fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],"char":'\ud83d\udd95',fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],"char":'\ud83d\udd90',fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],"char":'\ud83e\udd1f',fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],"char":'\ud83e\udd18',fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],"char":'\ud83e\udd1e',fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],"char":'\ud83d\udd96',fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],"char":'\u270d',fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],"char":'\ud83e\udd33',fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],"char":'\ud83d\udc85',fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],"char":'\ud83d\udc44',fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],"char":'\ud83e\uddb7',fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],"char":'\ud83d\udc45',fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],"char":'\ud83d\udc42',fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],"char":'\ud83d\udc43',fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],"char":'\ud83d\udc41',fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],"char":'\ud83d\udc40',fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],"char":'\ud83e\udde0',fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],"char":'\ud83d\udc64',fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],"char":'\ud83d\udc65',fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],"char":'\ud83d\udde3',fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],"char":'\ud83d\udc76',fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],"char":'\ud83e\uddd2',fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],"char":'\ud83d\udc66',fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],"char":'\ud83d\udc67',fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],"char":'\ud83e\uddd1',fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],"char":'\ud83d\udc68',fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],"char":'\ud83d\udc69',fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],"char":'\ud83d\udc71\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],"char":'\ud83d\udc71',fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],"char":'\ud83e\uddd4',fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],"char":'\ud83e\uddd3',fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],"char":'\ud83d\udc74',fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],"char":'\ud83d\udc75',fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],"char":'\ud83d\udc72',fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],"char":'\ud83e\uddd5',fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],"char":'\ud83d\udc73\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],"char":'\ud83d\udc73',fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],"char":'\ud83d\udc6e\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],"char":'\ud83d\udc6e',fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],"char":'\ud83d\udc77\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],"char":'\ud83d\udc77',fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],"char":'\ud83d\udc82\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],"char":'\ud83d\udc82',fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],"char":'\ud83d\udd75\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],"char":'\ud83d\udd75',fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],"char":'\ud83d\udc69\u200d\u2695\ufe0f',fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],"char":'\ud83d\udc68\u200d\u2695\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udf3e',fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udf3e',fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udf73',fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udf73',fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udf93',fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udf93',fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfa4',fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfa4',fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfeb',fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfeb',fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfed',fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfed',fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"char":'\ud83d\udc69\u200d\ud83d\udcbb',fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],"char":'\ud83d\udc68\u200d\ud83d\udcbb',fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\udcbc',fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],"char":'\ud83d\udc68\u200d\ud83d\udcbc',fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],"char":'\ud83d\udc69\u200d\ud83d\udd27',fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],"char":'\ud83d\udc68\u200d\ud83d\udd27',fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\udd2c',fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],"char":'\ud83d\udc68\u200d\ud83d\udd2c',fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfa8',fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfa8',fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\ude92',fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],"char":'\ud83d\udc68\u200d\ud83d\ude92',fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],"char":'\ud83d\udc69\u200d\u2708\ufe0f',fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],"char":'\ud83d\udc68\u200d\u2708\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\ude80',fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],"char":'\ud83d\udc68\u200d\ud83d\ude80',fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],"char":'\ud83d\udc69\u200d\u2696\ufe0f',fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],"char":'\ud83d\udc68\u200d\u2696\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],"char":'\ud83e\uddb8\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],"char":'\ud83e\uddb8\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],"char":'\ud83e\uddb9\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],"char":'\ud83e\uddb9\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],"char":'\ud83e\udd36',fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],"char":'\ud83c\udf85',fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],"char":'\ud83e\uddd9\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],"char":'\ud83e\uddd9\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],"char":'\ud83e\udddd\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],"char":'\ud83e\udddd\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],"char":'\ud83e\udddb\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],"char":'\ud83e\udddb\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],"char":'\ud83e\udddf\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],"char":'\ud83e\udddf\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],"char":'\ud83e\uddde\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],"char":'\ud83e\uddde\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],"char":'\ud83e\udddc\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],"char":'\ud83e\udddc\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],"char":'\ud83e\uddda\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],"char":'\ud83e\uddda\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],"char":'\ud83d\udc7c',fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],"char":'\ud83e\udd30',fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],"char":'\ud83e\udd31',fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],"char":'\ud83d\udc78',fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],"char":'\ud83e\udd34',fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],"char":'\ud83d\udc70',fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],"char":'\ud83e\udd35',fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],"char":'\ud83c\udfc3\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],"char":'\ud83c\udfc3',fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],"char":'\ud83d\udeb6\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],"char":'\ud83d\udeb6',fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],"char":'\ud83d\udc83',fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],"char":'\ud83d\udd7a',fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],"char":'\ud83d\udc6f',fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],"char":'\ud83d\udc6f\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],"char":'\ud83d\udc6b',fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],"char":'\ud83d\udc6c',fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],"char":'\ud83d\udc6d',fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],"char":'\ud83d\ude47\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],"char":'\ud83d\ude47',fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],"char":'\ud83e\udd26\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],"char":'\ud83e\udd26\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],"char":'\ud83e\udd37',fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],"char":'\ud83e\udd37\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],"char":'\ud83d\udc81',fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],"char":'\ud83d\udc81\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],"char":'\ud83d\ude45',fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],"char":'\ud83d\ude45\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],"char":'\ud83d\ude46',fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],"char":'\ud83d\ude46\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],"char":'\ud83d\ude4b',fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],"char":'\ud83d\ude4b\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],"char":'\ud83d\ude4e',fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],"char":'\ud83d\ude4e\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],"char":'\ud83d\ude4d',fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],"char":'\ud83d\ude4d\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],"char":'\ud83d\udc87',fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],"char":'\ud83d\udc87\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],"char":'\ud83d\udc86',fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],"char":'\ud83d\udc86\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],"char":'\ud83e\uddd6\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],"char":'\ud83e\uddd6\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":'\ud83d\udc91',fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":'\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69',fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":'\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68',fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":'\ud83d\udc8f',fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":'\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69',fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],"char":'\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],"char":'\ud83d\udc6a',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc69\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc69\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc68\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc68\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],"char":'\ud83e\uddf6',fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],"char":'\ud83e\uddf5',fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],"char":'\ud83e\udde5',fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],"char":'\ud83e\udd7c',fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],"char":'\ud83d\udc5a',fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],"char":'\ud83d\udc55',fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],"char":'\ud83d\udc56',fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],"char":'\ud83d\udc54',fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],"char":'\ud83d\udc57',fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],"char":'\ud83d\udc59',fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],"char":'\ud83d\udc58',fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],"char":'\ud83d\udc84',fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],"char":'\ud83d\udc8b',fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],"char":'\ud83d\udc63',fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],"char":'\ud83e\udd7f',fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],"char":'\ud83d\udc60',fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],"char":'\ud83d\udc61',fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],"char":'\ud83d\udc62',fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],"char":'\ud83d\udc5e',fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],"char":'\ud83d\udc5f',fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],"char":'\ud83e\udd7e',fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],"char":'\ud83e\udde6',fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],"char":'\ud83e\udde4',fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],"char":'\ud83e\udde3',fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],"char":'\ud83d\udc52',fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],"char":'\ud83c\udfa9',fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],"char":'\ud83e\udde2',fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],"char":'\u26d1',fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],"char":'\ud83c\udf93',fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],"char":'\ud83d\udc51',fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],"char":'\ud83c\udf92',fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],"char":'\ud83e\uddf3',fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],"char":'\ud83d\udc5d',fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],"char":'\ud83d\udc5b',fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],"char":'\ud83d\udc5c',fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],"char":'\ud83d\udcbc',fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],"char":'\ud83d\udc53',fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],"char":'\ud83d\udd76',fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],"char":'\ud83e\udd7d',fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"char":'\ud83d\udc8d',fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],"char":'\ud83c\udf02',fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],"char":'\ud83d\udc36',fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],"char":'\ud83d\udc31',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],"char":'\ud83d\udc2d',fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],"char":'\ud83d\udc39',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],"char":'\ud83d\udc30',fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],"char":'\ud83e\udd8a',fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],"char":'\ud83d\udc3b',fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],"char":'\ud83d\udc3c',fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],"char":'\ud83d\udc28',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],"char":'\ud83d\udc2f',fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],"char":'\ud83e\udd81',fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],"char":'\ud83d\udc2e',fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],"char":'\ud83d\udc37',fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],"char":'\ud83d\udc3d',fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],"char":'\ud83d\udc38',fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],"char":'\ud83e\udd91',fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],"char":'\ud83d\udc19',fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],"char":'\ud83e\udd90',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],"char":'\ud83d\udc35',fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],"char":'\ud83e\udd8d',fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],"char":'\ud83d\ude48',fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],"char":'\ud83d\ude49',fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],"char":'\ud83d\ude4a',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],"char":'\ud83d\udc12',fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],"char":'\ud83d\udc14',fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],"char":'\ud83d\udc27',fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],"char":'\ud83d\udc26',fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],"char":'\ud83d\udc24',fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],"char":'\ud83d\udc23',fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],"char":'\ud83d\udc25',fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],"char":'\ud83e\udd86',fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],"char":'\ud83e\udd85',fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],"char":'\ud83e\udd89',fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],"char":'\ud83e\udd87',fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],"char":'\ud83d\udc3a',fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],"char":'\ud83d\udc17',fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],"char":'\ud83d\udc34',fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],"char":'\ud83e\udd84',fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],"char":'\ud83d\udc1d',fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],"char":'\ud83d\udc1b',fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],"char":'\ud83e\udd8b',fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],"char":'\ud83d\udc0c',fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],"char":'\ud83d\udc1e',fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],"char":'\ud83d\udc1c',fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],"char":'\ud83e\udd97',fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],"char":'\ud83d\udd77',fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],"char":'\ud83e\udd82',fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],"char":'\ud83e\udd80',fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],"char":'\ud83d\udc0d',fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],"char":'\ud83e\udd8e',fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],"char":'\ud83e\udd96',fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"char":'\ud83e\udd95',fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],"char":'\ud83d\udc22',fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],"char":'\ud83d\udc20',fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],"char":'\ud83d\udc1f',fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],"char":'\ud83d\udc21',fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],"char":'\ud83d\udc2c',fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],"char":'\ud83e\udd88',fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],"char":'\ud83d\udc33',fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],"char":'\ud83d\udc0b',fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],"char":'\ud83d\udc0a',fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],"char":'\ud83d\udc06',fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],"char":'\ud83e\udd93',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],"char":'\ud83d\udc05',fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],"char":'\ud83d\udc03',fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],"char":'\ud83d\udc02',fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],"char":'\ud83d\udc04',fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],"char":'\ud83e\udd8c',fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],"char":'\ud83d\udc2a',fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],"char":'\ud83d\udc2b',fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],"char":'\ud83e\udd92',fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],"char":'\ud83d\udc18',fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],"char":'\ud83e\udd8f',fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],"char":'\ud83d\udc10',fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],"char":'\ud83d\udc0f',fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],"char":'\ud83d\udc11',fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],"char":'\ud83d\udc0e',fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],"char":'\ud83d\udc16',fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],"char":'\ud83d\udc00',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],"char":'\ud83d\udc01',fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],"char":'\ud83d\udc13',fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],"char":'\ud83e\udd83',fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],"char":'\ud83d\udd4a',fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],"char":'\ud83d\udc15',fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],"char":'\ud83d\udc29',fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],"char":'\ud83d\udc08',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],"char":'\ud83d\udc07',fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],"char":'\ud83d\udc3f',fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],"char":'\ud83e\udd94',fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],"char":'\ud83e\udd9d',fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],"char":'\ud83e\udd99',fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],"char":'\ud83e\udd9b',fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],"char":'\ud83e\udd98',fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],"char":'\ud83e\udda1',fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],"char":'\ud83e\udda2',fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],"char":'\ud83e\udd9a',fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],"char":'\ud83e\udd9c',fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],"char":'\ud83e\udd9e',fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],"char":'\ud83e\udd9f',fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],"char":'\ud83d\udc3e',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],"char":'\ud83d\udc09',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],"char":'\ud83d\udc32',fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],"char":'\ud83c\udf35',fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],"char":'\ud83c\udf84',fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],"char":'\ud83c\udf32',fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],"char":'\ud83c\udf33',fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],"char":'\ud83c\udf34',fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],"char":'\ud83c\udf31',fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],"char":'\ud83c\udf3f',fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],"char":'\u2618',fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],"char":'\ud83c\udf40',fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],"char":'\ud83c\udf8d',fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],"char":'\ud83c\udf8b',fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],"char":'\ud83c\udf43',fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],"char":'\ud83c\udf42',fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],"char":'\ud83c\udf41',fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],"char":'\ud83c\udf3e',fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],"char":'\ud83c\udf3a',fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],"char":'\ud83c\udf3b',fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],"char":'\ud83c\udf39',fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],"char":'\ud83e\udd40',fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],"char":'\ud83c\udf37',fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],"char":'\ud83c\udf3c',fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],"char":'\ud83c\udf38',fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],"char":'\ud83d\udc90',fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],"char":'\ud83c\udf44',fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],"char":'\ud83c\udf30',fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],"char":'\ud83c\udf83',fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],"char":'\ud83d\udc1a',fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],"char":'\ud83d\udd78',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],"char":'\ud83c\udf0e',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],"char":'\ud83c\udf0d',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],"char":'\ud83c\udf0f',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf15',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"char":'\ud83c\udf16',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf17',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf18',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf11',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf12',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf13',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"char":'\ud83c\udf14',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1a',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1d',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1b',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1c',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],"char":'\ud83c\udf1e',fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],"char":'\ud83c\udf19',fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],"char":'\u2b50',fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],"char":'\ud83c\udf1f',fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],"char":'\ud83d\udcab',fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],"char":'\u2728',fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],"char":'\u2604',fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],"char":'\u2600\ufe0f',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],"char":'\ud83c\udf24',fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],"char":'\u26c5',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],"char":'\ud83c\udf25',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],"char":'\ud83c\udf26',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],"char":'\u2601\ufe0f',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],"char":'\ud83c\udf27',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],"char":'\u26c8',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],"char":'\ud83c\udf29',fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],"char":'\u26a1',fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],"char":'\ud83d\udd25',fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],"char":'\ud83d\udca5',fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],"char":'\u2744\ufe0f',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],"char":'\ud83c\udf28',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"char":'\u26c4',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],"char":'\u2603',fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],"char":'\ud83c\udf2c',fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],"char":'\ud83d\udca8',fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],"char":'\ud83c\udf2a',fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],"char":'\ud83c\udf2b',fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],"char":'\u2602',fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],"char":'\u2614',fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],"char":'\ud83d\udca7',fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],"char":'\ud83d\udca6',fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],"char":'\ud83c\udf0a',fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],"char":'\ud83c\udf4f',fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],"char":'\ud83c\udf4e',fitzpatrick_scale:!1,category:"food_and_drink"},laytp:{keywords:["fruit","nature","food"],"char":'\ud83c\udf50',fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],"char":'\ud83c\udf4a',fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],"char":'\ud83c\udf4b',fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],"char":'\ud83c\udf4c',fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],"char":'\ud83c\udf49',fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],"char":'\ud83c\udf47',fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],"char":'\ud83c\udf53',fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],"char":'\ud83c\udf48',fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],"char":'\ud83c\udf52',fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],"char":'\ud83c\udf51',fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],"char":'\ud83c\udf4d',fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],"char":'\ud83e\udd65',fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],"char":'\ud83e\udd5d',fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],"char":'\ud83e\udd6d',fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],"char":'\ud83e\udd51',fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],"char":'\ud83e\udd66',fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],"char":'\ud83c\udf45',fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],"char":'\ud83c\udf46',fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],"char":'\ud83e\udd52',fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],"char":'\ud83e\udd55',fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],"char":'\ud83c\udf36',fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],"char":'\ud83e\udd54',fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],"char":'\ud83c\udf3d',fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],"char":'\ud83e\udd6c',fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],"char":'\ud83c\udf60',fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],"char":'\ud83e\udd5c',fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],"char":'\ud83c\udf6f',fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],"char":'\ud83e\udd50',fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],"char":'\ud83c\udf5e',fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],"char":'\ud83e\udd56',fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],"char":'\ud83e\udd6f',fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],"char":'\ud83e\udd68',fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],"char":'\ud83e\uddc0',fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],"char":'\ud83e\udd5a',fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],"char":'\ud83e\udd53',fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],"char":'\ud83e\udd69',fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],"char":'\ud83e\udd5e',fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],"char":'\ud83c\udf57',fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],"char":'\ud83c\udf56',fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],"char":'\ud83e\uddb4',fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],"char":'\ud83c\udf64',fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],"char":'\ud83c\udf73',fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"char":'\ud83c\udf54',fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],"char":'\ud83c\udf5f',fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],"char":'\ud83e\udd59',fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],"char":'\ud83c\udf2d',fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],"char":'\ud83c\udf55',fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],"char":'\ud83e\udd6a',fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],"char":'\ud83e\udd6b',fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],"char":'\ud83c\udf5d',fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],"char":'\ud83c\udf2e',fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],"char":'\ud83c\udf2f',fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],"char":'\ud83e\udd57',fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],"char":'\ud83e\udd58',fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],"char":'\ud83c\udf5c',fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],"char":'\ud83c\udf72',fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"char":'\ud83c\udf65',fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],"char":'\ud83e\udd60',fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],"char":'\ud83c\udf63',fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],"char":'\ud83c\udf71',fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],"char":'\ud83c\udf5b',fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],"char":'\ud83c\udf59',fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],"char":'\ud83c\udf5a',fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],"char":'\ud83c\udf58',fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],"char":'\ud83c\udf62',fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],"char":'\ud83c\udf61',fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],"char":'\ud83c\udf67',fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],"char":'\ud83c\udf68',fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],"char":'\ud83c\udf66',fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],"char":'\ud83e\udd67',fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],"char":'\ud83c\udf70',fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],"char":'\ud83e\uddc1',fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],"char":'\ud83e\udd6e',fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],"char":'\ud83c\udf82',fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],"char":'\ud83c\udf6e',fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],"char":'\ud83c\udf6c',fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],"char":'\ud83c\udf6d',fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],"char":'\ud83c\udf6b',fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],"char":'\ud83c\udf7f',fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],"char":'\ud83e\udd5f',fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],"char":'\ud83c\udf69',fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],"char":'\ud83c\udf6a',fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],"char":'\ud83e\udd5b',fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":'\ud83c\udf7a',fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":'\ud83c\udf7b',fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"char":'\ud83e\udd42',fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],"char":'\ud83c\udf77',fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"char":'\ud83e\udd43',fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],"char":'\ud83c\udf78',fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"char":'\ud83c\udf79',fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],"char":'\ud83c\udf7e',fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],"char":'\ud83c\udf76',fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],"char":'\ud83c\udf75',fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],"char":'\ud83e\udd64',fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],"char":'\u2615',fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],"char":'\ud83c\udf7c',fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],"char":'\ud83e\uddc2',fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],"char":'\ud83e\udd44',fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],"char":'\ud83c\udf74',fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],"char":'\ud83c\udf7d',fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],"char":'\ud83e\udd63',fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],"char":'\ud83e\udd61',fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],"char":'\ud83e\udd62',fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],"char":'\u26bd',fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],"char":'\ud83c\udfc0',fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],"char":'\ud83c\udfc8',fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],"char":'\u26be',fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],"char":'\ud83e\udd4e',fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],"char":'\ud83c\udfbe',fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],"char":'\ud83c\udfd0',fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],"char":'\ud83c\udfc9',fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],"char":'\ud83e\udd4f',fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],"char":'\ud83c\udfb1',fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],"char":'\u26f3',fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],"char":'\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],"char":'\ud83c\udfcc',fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],"char":'\ud83c\udfd3',fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],"char":'\ud83c\udff8',fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],"char":'\ud83e\udd45',fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],"char":'\ud83c\udfd2',fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],"char":'\ud83c\udfd1',fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],"char":'\ud83e\udd4d',fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],"char":'\ud83c\udfcf',fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],"char":'\ud83c\udfbf',fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],"char":'\u26f7',fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],"char":'\ud83c\udfc2',fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],"char":'\ud83e\udd3a',fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],"char":'\ud83e\udd3c\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],"char":'\ud83e\udd3c\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],"char":'\ud83e\udd38\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],"char":'\ud83e\udd38\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],"char":'\ud83e\udd3e\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],"char":'\ud83e\udd3e\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],"char":'\u26f8',fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],"char":'\ud83e\udd4c',fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],"char":'\ud83d\udef9',fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],"char":'\ud83d\udef7',fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],"char":'\ud83c\udff9',fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],"char":'\ud83c\udfa3',fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],"char":'\ud83e\udd4a',fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],"char":'\ud83e\udd4b',fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],"char":'\ud83d\udea3\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],"char":'\ud83d\udea3',fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],"char":'\ud83e\uddd7\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],"char":'\ud83e\uddd7\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],"char":'\ud83c\udfca\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],"char":'\ud83c\udfca',fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],"char":'\ud83e\udd3d\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],"char":'\ud83e\udd3d\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],"char":'\ud83e\uddd8\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],"char":'\ud83e\uddd8\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],"char":'\ud83c\udfc4\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],"char":'\ud83c\udfc4',fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],"char":'\ud83d\udec0',fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],"char":'\u26f9\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],"char":'\u26f9',fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],"char":'\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],"char":'\ud83c\udfcb',fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],"char":'\ud83d\udeb4\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],"char":'\ud83d\udeb4',fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],"char":'\ud83d\udeb5\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],"char":'\ud83d\udeb5',fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],"char":'\ud83c\udfc7',fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],"char":'\ud83d\udd74',fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],"char":'\ud83c\udfc6',fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],"char":'\ud83c\udfbd',fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],"char":'\ud83c\udfc5',fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],"char":'\ud83c\udf96',fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],"char":'\ud83e\udd47',fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],"char":'\ud83e\udd48',fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],"char":'\ud83e\udd49',fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],"char":'\ud83c\udf97',fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],"char":'\ud83c\udff5',fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],"char":'\ud83c\udfab',fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],"char":'\ud83c\udf9f',fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],"char":'\ud83c\udfad',fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],"char":'\ud83c\udfa8',fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],"char":'\ud83c\udfaa',fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],"char":'\ud83e\udd39\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],"char":'\ud83e\udd39\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],"char":'\ud83c\udfa4',fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],"char":'\ud83c\udfa7',fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],"char":'\ud83c\udfbc',fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],"char":'\ud83c\udfb9',fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],"char":'\ud83e\udd41',fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],"char":'\ud83c\udfb7',fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],"char":'\ud83c\udfba',fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],"char":'\ud83c\udfb8',fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],"char":'\ud83c\udfbb',fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],"char":'\ud83c\udfac',fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],"char":'\ud83c\udfae',fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],"char":'\ud83d\udc7e',fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],"char":'\ud83c\udfaf',fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],"char":'\ud83c\udfb2',fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],"char":"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],"char":'\ud83c\udfb0',fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],"char":'\ud83e\udde9',fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],"char":'\ud83c\udfb3',fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],"char":'\ud83d\ude97',fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],"char":'\ud83d\ude95',fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],"char":'\ud83d\ude99',fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],"char":'\ud83d\ude8c',fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],"char":'\ud83d\ude8e',fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],"char":'\ud83c\udfce',fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],"char":'\ud83d\ude93',fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],"char":'\ud83d\ude91',fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],"char":'\ud83d\ude92',fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],"char":'\ud83d\ude90',fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],"char":'\ud83d\ude9a',fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],"char":'\ud83d\ude9b',fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],"char":'\ud83d\ude9c',fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],"char":'\ud83d\udef4',fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],"char":'\ud83c\udfcd',fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],"char":'\ud83d\udeb2',fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],"char":'\ud83d\udef5',fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],"char":'\ud83d\udea8',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],"char":'\ud83d\ude94',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],"char":'\ud83d\ude8d',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],"char":'\ud83d\ude98',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],"char":'\ud83d\ude96',fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],"char":'\ud83d\udea1',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],"char":'\ud83d\udea0',fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],"char":'\ud83d\ude9f',fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],"char":'\ud83d\ude83',fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],"char":'\ud83d\ude8b',fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],"char":'\ud83d\ude9d',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],"char":'\ud83d\ude84',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],"char":'\ud83d\ude85',fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],"char":'\ud83d\ude88',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],"char":'\ud83d\ude9e',fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],"char":'\ud83d\ude82',fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],"char":'\ud83d\ude86',fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],"char":'\ud83d\ude87',fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],"char":'\ud83d\ude8a',fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],"char":'\ud83d\ude89',fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],"char":'\ud83d\udef8',fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],"char":'\ud83d\ude81',fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],"char":'\ud83d\udee9',fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],"char":'\u2708\ufe0f',fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],"char":'\ud83d\udeeb',fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],"char":'\ud83d\udeec',fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],"char":'\u26f5',fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],"char":'\ud83d\udee5',fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],"char":'\ud83d\udea4',fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],"char":'\u26f4',fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],"char":'\ud83d\udef3',fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],"char":'\ud83d\ude80',fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],"char":'\ud83d\udef0',fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],"char":'\ud83d\udcba',fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],"char":'\ud83d\udef6',fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],"char":'\u2693',fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],"char":'\ud83d\udea7',fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],"char":'\u26fd',fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],"char":'\ud83d\ude8f',fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],"char":'\ud83d\udea6',fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],"char":'\ud83d\udea5',fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],"char":'\ud83c\udfc1',fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],"char":'\ud83d\udea2',fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],"char":'\ud83c\udfa1',fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],"char":'\ud83c\udfa2',fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],"char":'\ud83c\udfa0',fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],"char":'\ud83c\udfd7',fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],"char":'\ud83c\udf01',fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],"char":'\ud83d\uddfc',fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],"char":'\ud83c\udfed',fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],"char":'\u26f2',fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],"char":'\ud83c\udf91',fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],"char":'\u26f0',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],"char":'\ud83c\udfd4',fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],"char":'\ud83d\uddfb',fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],"char":'\ud83c\udf0b',fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],"char":'\ud83d\uddfe',fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],"char":'\ud83c\udfd5',fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],"char":'\u26fa',fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],"char":'\ud83c\udfde',fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],"char":'\ud83d\udee3',fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],"char":'\ud83d\udee4',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],"char":'\ud83c\udf05',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],"char":'\ud83c\udf04',fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],"char":'\ud83c\udfdc',fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],"char":'\ud83c\udfd6',fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],"char":'\ud83c\udfdd',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],"char":'\ud83c\udf07',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],"char":'\ud83c\udf06',fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],"char":'\ud83c\udfd9',fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],"char":'\ud83c\udf03',fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],"char":'\ud83c\udf09',fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],"char":'\ud83c\udf0c',fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],"char":'\ud83c\udf20',fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],"char":'\ud83c\udf87',fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],"char":'\ud83c\udf86',fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],"char":'\ud83c\udf08',fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],"char":'\ud83c\udfd8',fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],"char":'\ud83c\udff0',fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],"char":'\ud83c\udfef',fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],"char":'\ud83c\udfdf',fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],"char":'\ud83d\uddfd',fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],"char":'\ud83c\udfe0',fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],"char":'\ud83c\udfe1',fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],"char":'\ud83c\udfda',fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],"char":'\ud83c\udfe2',fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],"char":'\ud83c\udfec',fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],"char":'\ud83c\udfe3',fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],"char":'\ud83c\udfe4',fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],"char":'\ud83c\udfe5',fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],"char":'\ud83c\udfe6',fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],"char":'\ud83c\udfe8',fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],"char":'\ud83c\udfea',fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],"char":'\ud83c\udfeb',fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],"char":'\ud83c\udfe9',fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],"char":'\ud83d\udc92',fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],"char":'\ud83c\udfdb',fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],"char":'\u26ea',fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],"char":'\ud83d\udd4c',fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],"char":'\ud83d\udd4d',fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],"char":'\ud83d\udd4b',fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],"char":'\u26e9',fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],"char":'\u231a',fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],"char":'\ud83d\udcf1',fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],"char":'\ud83d\udcf2',fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],"char":'\ud83d\udcbb',fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],"char":'\u2328',fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],"char":'\ud83d\udda5',fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],"char":'\ud83d\udda8',fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],"char":'\ud83d\uddb1',fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],"char":'\ud83d\uddb2',fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],"char":'\ud83d\udd79',fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],"char":'\ud83d\udddc',fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],"char":'\ud83d\udcbd',fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],"char":'\ud83d\udcbe',fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],"char":'\ud83d\udcbf',fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],"char":'\ud83d\udcc0',fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],"char":'\ud83d\udcfc',fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],"char":'\ud83d\udcf7',fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],"char":'\ud83d\udcf8',fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],"char":'\ud83d\udcf9',fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],"char":'\ud83c\udfa5',fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],"char":'\ud83d\udcfd',fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],"char":'\ud83c\udf9e',fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],"char":'\ud83d\udcde',fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],"char":'\u260e\ufe0f',fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],"char":'\ud83d\udcdf',fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],"char":'\ud83d\udce0',fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],"char":'\ud83d\udcfa',fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],"char":'\ud83d\udcfb',fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],"char":'\ud83c\udf99',fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],"char":'\ud83c\udf9a',fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],"char":'\ud83c\udf9b',fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],"char":'\ud83e\udded',fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],"char":'\u23f1',fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],"char":'\u23f2',fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],"char":'\u23f0',fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],"char":'\ud83d\udd70',fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],"char":'\u23f3',fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],"char":'\u231b',fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],"char":'\ud83d\udce1',fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],"char":'\ud83d\udd0b',fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],"char":'\ud83d\udd0c',fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],"char":'\ud83d\udca1',fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],"char":'\ud83d\udd26',fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],"char":'\ud83d\udd6f',fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],"char":'\ud83e\uddef',fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],"char":'\ud83d\uddd1',fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],"char":'\ud83d\udee2',fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],"char":'\ud83d\udcb8',fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],"char":'\ud83d\udcb5',fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],"char":'\ud83d\udcb4',fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],"char":'\ud83d\udcb6',fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],"char":'\ud83d\udcb7',fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],"char":'\ud83d\udcb0',fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],"char":'\ud83d\udcb3',fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],"char":'\ud83d\udc8e',fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],"char":'\u2696',fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],"char":'\ud83e\uddf0',fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],"char":'\ud83d\udd27',fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],"char":'\ud83d\udd28',fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],"char":'\u2692',fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],"char":'\ud83d\udee0',fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],"char":'\u26cf',fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],"char":'\ud83d\udd29',fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],"char":'\u2699',fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],"char":'\ud83e\uddf1',fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],"char":'\u26d3',fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],"char":'\ud83e\uddf2',fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],"char":'\ud83d\udd2b',fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],"char":'\ud83d\udca3',fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],"char":'\ud83e\udde8',fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],"char":'\ud83d\udd2a',fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],"char":'\ud83d\udde1',fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],"char":'\u2694',fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],"char":'\ud83d\udee1',fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],"char":'\ud83d\udeac',fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],"char":'\u2620',fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"char":'\u26b0',fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],"char":'\u26b1',fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],"char":'\ud83c\udffa',fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],"char":'\ud83d\udd2e',fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],"char":'\ud83d\udcff',fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],"char":'\ud83e\uddff',fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],"char":'\ud83d\udc88',fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],"char":'\u2697',fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],"char":'\ud83d\udd2d',fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],"char":'\ud83d\udd2c',fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],"char":'\ud83d\udd73',fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],"char":'\ud83d\udc8a',fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"char":'\ud83d\udc89',fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],"char":'\ud83e\uddec',fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],"char":'\ud83e\udda0',fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],"char":'\ud83e\uddeb',fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],"char":'\ud83e\uddea',fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],"char":'\ud83c\udf21',fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],"char":'\ud83e\uddf9',fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],"char":'\ud83e\uddfa',fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],"char":'\ud83e\uddfb',fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],"char":'\ud83c\udff7',fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],"char":'\ud83d\udd16',fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],"char":'\ud83d\udebd',fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],"char":'\ud83d\udebf',fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],"char":'\ud83d\udec1',fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],"char":'\ud83e\uddfc',fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],"char":'\ud83e\uddfd',fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],"char":'\ud83e\uddf4',fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],"char":'\ud83d\udd11',fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],"char":'\ud83d\udddd',fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],"char":'\ud83d\udecb',fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],"char":'\ud83d\udecc',fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],"char":'\ud83d\udecf',fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],"char":'\ud83d\udeaa',fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],"char":'\ud83d\udece',fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],"char":'\ud83e\uddf8',fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],"char":'\ud83d\uddbc',fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],"char":'\ud83d\uddfa',fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],"char":'\u26f1',fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],"char":'\ud83d\uddff',fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],"char":'\ud83d\udecd',fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],"char":'\ud83d\uded2',fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],"char":'\ud83c\udf88',fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],"char":'\ud83c\udf8f',fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],"char":'\ud83c\udf80',fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],"char":'\ud83c\udf81',fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],"char":'\ud83c\udf8a',fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],"char":'\ud83c\udf89',fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],"char":'\ud83c\udf8e',fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],"char":'\ud83c\udf90',fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],"char":'\ud83c\udf8c',fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],"char":'\ud83c\udfee',fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],"char":'\ud83e\udde7',fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],"char":'\u2709\ufe0f',fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],"char":'\ud83d\udce9',fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],"char":'\ud83d\udce8',fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],"char":'\ud83d\udce7',fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],"char":'\ud83d\udc8c',fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],"char":'\ud83d\udcee',fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],"char":'\ud83d\udcea',fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],"char":'\ud83d\udceb',fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],"char":'\ud83d\udcec',fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],"char":'\ud83d\udced',fitzpatrick_scale:!1,category:"objects"},"package":{keywords:["mail","gift","cardboard","box","moving"],"char":'\ud83d\udce6',fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],"char":'\ud83d\udcef',fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],"char":'\ud83d\udce5',fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],"char":'\ud83d\udce4',fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],"char":'\ud83d\udcdc',fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],"char":'\ud83d\udcc3',fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],"char":'\ud83d\udcd1',fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],"char":'\ud83e\uddfe',fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],"char":'\ud83d\udcca',fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"char":'\ud83d\udcc8',fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"char":'\ud83d\udcc9',fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],"char":'\ud83d\udcc4',fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],"char":'\ud83d\udcc5',fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],"char":'\ud83d\udcc6',fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],"char":'\ud83d\uddd3',fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],"char":'\ud83d\udcc7',fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],"char":'\ud83d\uddc3',fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],"char":'\ud83d\uddf3',fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],"char":'\ud83d\uddc4',fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],"char":'\ud83d\udccb',fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],"char":'\ud83d\uddd2',fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],"char":'\ud83d\udcc1',fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],"char":'\ud83d\udcc2',fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],"char":'\ud83d\uddc2',fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],"char":'\ud83d\uddde',fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],"char":'\ud83d\udcf0',fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],"char":'\ud83d\udcd3',fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],"char":'\ud83d\udcd5',fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],"char":'\ud83d\udcd7',fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],"char":'\ud83d\udcd8',fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],"char":'\ud83d\udcd9',fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],"char":'\ud83d\udcd4',fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],"char":'\ud83d\udcd2',fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],"char":'\ud83d\udcda',fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],"char":'\ud83d\udcd6',fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],"char":'\ud83e\uddf7',fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],"char":'\ud83d\udd17',fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],"char":'\ud83d\udcce',fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],"char":'\ud83d\udd87',fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],"char":'\u2702\ufe0f',fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],"char":'\ud83d\udcd0',fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],"char":'\ud83d\udccf',fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],"char":'\ud83e\uddee',fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],"char":'\ud83d\udccc',fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],"char":'\ud83d\udccd',fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],"char":'\ud83d\udea9',fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],"char":'\ud83c\udff3',fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],"char":'\ud83c\udff4',fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"char":'\ud83c\udff3\ufe0f\u200d\ud83c\udf08',fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],"char":'\ud83d\udd10',fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],"char":'\ud83d\udd12',fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],"char":'\ud83d\udd13',fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],"char":'\ud83d\udd0f',fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],"char":'\ud83d\udd8a',fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],"char":'\ud83d\udd8b',fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],"char":'\u2712\ufe0f',fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"char":'\ud83d\udcdd',fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],"char":'\u270f\ufe0f',fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],"char":'\ud83d\udd8d',fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],"char":'\ud83d\udd8c',fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],"char":'\ud83d\udd0d',fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],"char":'\ud83d\udd0e',fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],"char":'\u2764\ufe0f',fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83e\udde1',fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9b',fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9a',fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc99',fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9c',fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],"char":'\ud83d\udda4',fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],"char":'\ud83d\udc94',fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],"char":'\u2763',fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],"char":'\ud83d\udc95',fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9e',fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],"char":'\ud83d\udc93',fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],"char":'\ud83d\udc97',fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc96',fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],"char":'\ud83d\udc98',fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],"char":'\ud83d\udc9d',fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],"char":'\ud83d\udc9f',fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],"char":'\u262e',fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],"char":'\u271d',fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],"char":'\u262a',fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":'\ud83d\udd49',fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":'\u2638',fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],"char":'\u2721',fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],"char":'\ud83d\udd2f',fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],"char":'\ud83d\udd4e',fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],"char":'\u262f',fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],"char":'\u2626',fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],"char":'\ud83d\uded0',fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],"char":'\u26ce',fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u2648',fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],"char":'\u2649',fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u264a',fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u264b',fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u264c',fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u264d',fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u264e',fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],"char":'\u264f',fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u2650',fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u2651',fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u2652',fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],"char":'\u2653',fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],"char":'\ud83c\udd94',fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],"char":'\u269b',fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],"char":'\ud83c\ude33',fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],"char":'\ud83c\ude39',fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],"char":'\u2622',fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],"char":'\u2623',fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],"char":'\ud83d\udcf4',fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],"char":'\ud83d\udcf3',fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],"char":'\ud83c\ude36',fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],"char":'\ud83c\ude1a',fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],"char":'\ud83c\ude38',fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],"char":'\ud83c\ude3a',fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],"char":'\ud83c\ude37\ufe0f',fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],"char":'\u2734\ufe0f',fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],"char":'\ud83c\udd9a',fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],"char":'\ud83c\ude51',fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],"char":'\ud83d\udcae',fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],"char":'\ud83c\ude50',fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],"char":'\u3299\ufe0f',fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],"char":'\u3297\ufe0f',fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],"char":'\ud83c\ude34',fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],"char":'\ud83c\ude35',fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"char":'\ud83c\ude32',fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],"char":'\ud83c\udd70\ufe0f',fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],"char":'\ud83c\udd71\ufe0f',fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],"char":'\ud83c\udd8e',fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],"char":'\ud83c\udd91',fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],"char":'\ud83c\udd7e\ufe0f',fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],"char":'\ud83c\udd98',fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],"char":'\u26d4',fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],"char":'\ud83d\udcdb',fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],"char":'\ud83d\udeab',fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],"char":'\u274c',fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],"char":'\u2b55',fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],"char":'\ud83d\uded1',fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],"char":'\ud83d\udca2',fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],"char":'\u2668\ufe0f',fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],"char":'\ud83d\udeb7',fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],"char":'\ud83d\udeaf',fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],"char":'\ud83d\udeb3',fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],"char":'\ud83d\udeb1',fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],"char":'\ud83d\udd1e',fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],"char":'\ud83d\udcf5',fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"char":'\u2757',fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],"char":'\u2755',fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],"char":'\u2753',fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],"char":'\u2754',fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],"char":'\u203c\ufe0f',fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],"char":'\u2049\ufe0f',fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],"char":'\ud83d\udd05',fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],"char":'\ud83d\udd06',fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],"char":'\ud83d\udd31',fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],"char":'\u269c',fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],"char":'\u303d\ufe0f',fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],"char":'\u26a0\ufe0f',fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],"char":'\ud83d\udeb8',fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],"char":'\ud83d\udd30',fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],"char":'\u267b\ufe0f',fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],"char":'\ud83c\ude2f',fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],"char":'\ud83d\udcb9',fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],"char":'\u2747\ufe0f',fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],"char":'\u2733\ufe0f',fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],"char":'\u274e',fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],"char":'\u2705',fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],"char":'\ud83d\udca0',fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"char":'\ud83c\udf00',fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],"char":'\u27bf',fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],"char":'\ud83c\udf10',fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],"char":'\u24c2\ufe0f',fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],"char":'\ud83c\udfe7',fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],"char":'\ud83c\ude02\ufe0f',fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],"char":'\ud83d\udec2',fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],"char":'\ud83d\udec3',fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],"char":'\ud83d\udec4',fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],"char":'\ud83d\udec5',fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],"char":'\u267f',fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],"char":'\ud83d\udead',fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],"char":'\ud83d\udebe',fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],"char":'\ud83c\udd7f\ufe0f',fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],"char":'\ud83d\udeb0',fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],"char":'\ud83d\udeb9',fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],"char":'\ud83d\udeba',fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],"char":'\ud83d\udebc',fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],"char":'\ud83d\udebb',fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],"char":'\ud83d\udeae',fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],"char":'\ud83c\udfa6',fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"char":'\ud83d\udcf6',fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],"char":'\ud83c\ude01',fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],"char":'\ud83c\udd96',fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],"char":'\ud83c\udd97',fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],"char":'\ud83c\udd99',fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],"char":'\ud83c\udd92',fitzpatrick_scale:!1,category:"symbols"},"new":{keywords:["blue-square","words","start"],"char":'\ud83c\udd95',fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],"char":'\ud83c\udd93',fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],"char":'0\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],"char":'1\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],"char":'2\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],"char":'3\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],"char":'4\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],"char":'5\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],"char":'6\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],"char":'7\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],"char":'8\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],"char":'9\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],"char":'\ud83d\udd1f',fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],"char":'*\u20e3',fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],"char":'\u23cf\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],"char":'\u25b6\ufe0f',fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],"char":'\u23f8',fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],"char":'\u23ed',fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],"char":'\u23f9',fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],"char":'\u23fa',fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],"char":'\u23ef',fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],"char":'\u23ee',fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],"char":'\u23e9',fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],"char":'\u23ea',fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],"char":'\ud83d\udd00',fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],"char":'\ud83d\udd01',fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],"char":'\ud83d\udd02',fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],"char":'\u25c0\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],"char":'\ud83d\udd3c',fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],"char":'\ud83d\udd3d',fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],"char":'\u23eb',fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],"char":'\u23ec',fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],"char":'\u27a1\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],"char":'\u2b05\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],"char":'\u2b06\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],"char":'\u2b07\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],"char":'\u2197\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],"char":'\u2198\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],"char":'\u2199\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],"char":'\u2196\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],"char":'\u2195\ufe0f',fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],"char":'\u2194\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],"char":'\ud83d\udd04',fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],"char":'\u21aa\ufe0f',fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],"char":'\u21a9\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],"char":'\u2934\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],"char":'\u2935\ufe0f',fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],"char":'#\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],"char":'\u2139\ufe0f',fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],"char":'\ud83d\udd24',fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],"char":'\ud83d\udd21',fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],"char":'\ud83d\udd20',fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],"char":'\ud83d\udd23',fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],"char":'\ud83c\udfb5',fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],"char":'\ud83c\udfb6',fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],"char":'\u3030\ufe0f',fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],"char":'\u27b0',fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],"char":'\u2714\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],"char":'\ud83d\udd03',fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],"char":'\u2795',fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],"char":'\u2796',fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],"char":'\u2797',fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],"char":'\u2716\ufe0f',fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],"char":'\u267e',fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],"char":'\ud83d\udcb2',fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],"char":'\ud83d\udcb1',fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],"char":'\xa9\ufe0f',fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],"char":'\xae\ufe0f',fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],"char":'\u2122\ufe0f',fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],"char":'\ud83d\udd1a',fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],"char":'\ud83d\udd19',fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],"char":'\ud83d\udd1b',fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],"char":'\ud83d\udd1d',fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],"char":'\ud83d\udd1c',fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],"char":'\u2611\ufe0f',fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],"char":'\ud83d\udd18',fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],"char":'\u26aa',fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],"char":'\u26ab',fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],"char":'\ud83d\udd34',fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],"char":'\ud83d\udd35',fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd38',fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd39',fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd36',fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd37',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],"char":'\ud83d\udd3a',fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],"char":'\u25aa\ufe0f',fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],"char":'\u25ab\ufe0f',fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],"char":'\u2b1b',fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],"char":'\u2b1c',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],"char":'\ud83d\udd3b',fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],"char":'\u25fc\ufe0f',fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],"char":'\u25fb\ufe0f',fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],"char":'\u25fe',fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],"char":'\u25fd',fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],"char":'\ud83d\udd32',fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],"char":'\ud83d\udd33',fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],"char":'\ud83d\udd08',fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],"char":'\ud83d\udd09',fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],"char":'\ud83d\udd0a',fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],"char":'\ud83d\udd07',fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],"char":'\ud83d\udce3',fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],"char":'\ud83d\udce2',fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],"char":'\ud83d\udd14',fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],"char":'\ud83d\udd15',fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],"char":'\ud83c\udccf',fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],"char":'\ud83c\udc04',fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],"char":'\u2660\ufe0f',fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],"char":'\u2663\ufe0f',fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],"char":'\u2665\ufe0f',fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],"char":'\u2666\ufe0f',fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],"char":'\ud83c\udfb4',fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],"char":'\ud83d\udcad',fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],"char":'\ud83d\uddef',fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],"char":'\ud83d\udcac',fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],"char":'\ud83d\udde8',fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd50',fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd51',fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd52',fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd53',fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd54',fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],"char":'\ud83d\udd55',fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd56',fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd57',fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd58',fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd59',fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5a',fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],"char":'\ud83d\udd5b',fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5c',fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5d',fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5e',fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5f',fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd60',fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd61',fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd62',fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd63',fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd64',fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd65',fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd66',fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd67',fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],"char":'\ud83c\udde8\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],"char":'\ud83c\uddea\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],"char":'\ud83c\uddeb\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],"char":'\ud83c\udde9\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],"char":'\ud83c\uddef\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],"char":'\ud83c\uddef\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],"char":'\ud83c\uddef\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],"char":'\ud83c\uddef\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],"char":'\ud83c\uddfd\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],"char":'\ud83c\uddfe\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],"char":'\ud83c\uddf4\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],"char":'\ud83c\uddf6\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],"char":'\ud83c\uddfc\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],"char":'\ud83c\uddff\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],"char":'\ud83c\uddec\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],"char":'\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f',fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],"char":'\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f',fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],"char":'\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f',fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],"char":'\ud83c\uddfc\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],"char":'\ud83c\uddfe\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],"char":'\ud83c\uddff\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],"char":'\ud83c\uddff\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],"char":'\ud83c\uddfa\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],"char":'\ud83c\udff4\u200d\u2620\ufe0f',fitzpatrick_scale:!1,category:"flags"}}); \ No newline at end of file +window.tinymce.Resource.add("tinymce.plugins.emoticons",{100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],"char":'\ud83d\udcaf',fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],"char":'\ud83d\udd22',fitzpatrick_scale:!1,category:"symbols"},grinning:{keywords:["face","smile","happy","joy",":D","grin"],"char":'\ud83d\ude00',fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],"char":'\ud83d\ude2c',fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],"char":'\ud83d\ude01',fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],"char":'\ud83d\ude02',fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],"char":'\ud83e\udd23',fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],"char":'\ud83e\udd73',fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],"char":'\ud83d\ude03',fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],"char":'\ud83d\ude04',fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],"char":'\ud83d\ude05',fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"char":'\ud83d\ude06',fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],"char":'\ud83d\ude07',fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],"char":'\ud83d\ude09',fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],"char":'\ud83d\ude0a',fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],"char":'\ud83d\ude42',fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],"char":'\ud83d\ude43',fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],"char":'\u263a\ufe0f',fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"char":'\ud83d\ude0b',fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],"char":'\ud83d\ude0c',fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],"char":'\ud83d\ude0d',fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],"char":'\ud83e\udd70',fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":'\ud83d\ude18',fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],"char":'\ud83d\ude17',fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],"char":'\ud83d\ude19',fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":'\ud83d\ude1a',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],"char":'\ud83d\ude1c',fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],"char":'\ud83e\udd2a',fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],"char":'\ud83e\udd28',fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],"char":'\ud83e\uddd0',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],"char":'\ud83d\ude1d',fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],"char":'\ud83d\ude1b',fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],"char":'\ud83e\udd11',fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],"char":'\ud83e\udd13',fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],"char":'\ud83d\ude0e',fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],"char":'\ud83e\udd29',fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],"char":'\ud83e\udd21',fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],"char":'\ud83e\udd20',fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],"char":'\ud83e\udd17',fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],"char":'\ud83d\ude0f',fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],"char":'\ud83d\ude36',fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],"char":'\ud83d\ude10',fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],"char":'\ud83d\ude11',fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],"char":'\ud83d\ude12',fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],"char":'\ud83d\ude44',fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],"char":'\ud83e\udd14',fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],"char":'\ud83e\udd25',fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],"char":'\ud83e\udd2d',fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],"char":'\ud83e\udd2b',fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],"char":'\ud83e\udd2c',fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],"char":'\ud83e\udd2f',fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],"char":'\ud83d\ude33',fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],"char":'\ud83d\ude1e',fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],"char":'\ud83d\ude1f',fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],"char":'\ud83d\ude20',fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],"char":'\ud83d\ude21',fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],"char":'\ud83d\ude14',fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],"char":'\ud83d\ude15',fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],"char":'\ud83d\ude41',fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],"char":'\u2639',fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],"char":'\ud83d\ude23',fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],"char":'\ud83d\ude16',fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],"char":'\ud83d\ude2b',fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],"char":'\ud83d\ude29',fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],"char":'\ud83e\udd7a',fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],"char":'\ud83d\ude24',fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],"char":'\ud83d\ude2e',fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],"char":'\ud83d\ude31',fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],"char":'\ud83d\ude28',fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],"char":'\ud83d\ude30',fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],"char":'\ud83d\ude2f',fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],"char":'\ud83d\ude26',fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],"char":'\ud83d\ude27',fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],"char":'\ud83d\ude22',fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],"char":'\ud83d\ude25',fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],"char":'\ud83e\udd24',fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],"char":'\ud83d\ude2a',fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],"char":'\ud83d\ude13',fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],"char":'\ud83e\udd75',fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],"char":'\ud83e\udd76',fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],"char":'\ud83d\ude2d',fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],"char":'\ud83d\ude35',fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],"char":'\ud83d\ude32',fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],"char":'\ud83e\udd10',fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],"char":'\ud83e\udd22',fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],"char":'\ud83e\udd27',fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],"char":'\ud83e\udd2e',fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],"char":'\ud83d\ude37',fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],"char":'\ud83e\udd12',fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],"char":'\ud83e\udd15',fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],"char":'\ud83e\udd74',fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],"char":'\ud83d\ude34',fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],"char":'\ud83d\udca4',fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],"char":'\ud83d\udca9',fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],"char":'\ud83d\ude08',fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],"char":'\ud83d\udc7f',fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],"char":'\ud83d\udc79',fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],"char":'\ud83d\udc7a',fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],"char":'\ud83d\udc80',fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],"char":'\ud83d\udc7b',fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],"char":'\ud83d\udc7d',fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],"char":'\ud83e\udd16',fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],"char":'\ud83d\ude3a',fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],"char":'\ud83d\ude38',fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],"char":'\ud83d\ude39',fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],"char":'\ud83d\ude3b',fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],"char":'\ud83d\ude3c',fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],"char":'\ud83d\ude3d',fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],"char":'\ud83d\ude40',fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],"char":'\ud83d\ude3f',fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],"char":'\ud83d\ude3e',fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],"char":'\ud83e\udd32',fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],"char":'\ud83d\ude4c',fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],"char":'\ud83d\udc4f',fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"char":'\ud83d\udc4b',fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],"char":'\ud83e\udd19',fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"char":'\ud83d\udc4d',fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],"char":'\ud83d\udc4e',fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],"char":'\ud83d\udc4a',fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],"char":'\u270a',fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],"char":'\ud83e\udd1b',fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],"char":'\ud83e\udd1c',fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],"char":'\u270c',fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],"char":'\ud83d\udc4c',fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],"char":'\u270b',fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],"char":'\ud83e\udd1a',fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],"char":'\ud83d\udc50',fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],"char":'\ud83d\udcaa',fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],"char":'\ud83d\ude4f',fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],"char":'\ud83e\uddb6',fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],"char":'\ud83e\uddb5',fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],"char":'\ud83e\udd1d',fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],"char":'\u261d',fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],"char":'\ud83d\udc46',fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],"char":'\ud83d\udc47',fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],"char":'\ud83d\udc48',fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],"char":'\ud83d\udc49',fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],"char":'\ud83d\udd95',fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],"char":'\ud83d\udd90',fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],"char":'\ud83e\udd1f',fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],"char":'\ud83e\udd18',fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],"char":'\ud83e\udd1e',fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],"char":'\ud83d\udd96',fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],"char":'\u270d',fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],"char":'\ud83e\udd33',fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],"char":'\ud83d\udc85',fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],"char":'\ud83d\udc44',fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],"char":'\ud83e\uddb7',fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],"char":'\ud83d\udc45',fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],"char":'\ud83d\udc42',fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],"char":'\ud83d\udc43',fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],"char":'\ud83d\udc41',fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],"char":'\ud83d\udc40',fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],"char":'\ud83e\udde0',fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],"char":'\ud83d\udc64',fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],"char":'\ud83d\udc65',fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],"char":'\ud83d\udde3',fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],"char":'\ud83d\udc76',fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],"char":'\ud83e\uddd2',fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],"char":'\ud83d\udc66',fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],"char":'\ud83d\udc67',fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],"char":'\ud83e\uddd1',fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],"char":'\ud83d\udc68',fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],"char":'\ud83d\udc69',fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],"char":'\ud83d\udc71\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],"char":'\ud83d\udc71',fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],"char":'\ud83e\uddd4',fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],"char":'\ud83e\uddd3',fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],"char":'\ud83d\udc74',fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],"char":'\ud83d\udc75',fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],"char":'\ud83d\udc72',fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],"char":'\ud83e\uddd5',fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],"char":'\ud83d\udc73\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],"char":'\ud83d\udc73',fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],"char":'\ud83d\udc6e\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],"char":'\ud83d\udc6e',fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],"char":'\ud83d\udc77\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],"char":'\ud83d\udc77',fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],"char":'\ud83d\udc82\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],"char":'\ud83d\udc82',fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],"char":'\ud83d\udd75\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],"char":'\ud83d\udd75',fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],"char":'\ud83d\udc69\u200d\u2695\ufe0f',fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],"char":'\ud83d\udc68\u200d\u2695\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udf3e',fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udf3e',fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udf73',fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udf73',fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udf93',fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udf93',fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfa4',fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfa4',fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfeb',fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfeb',fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfed',fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfed',fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"char":'\ud83d\udc69\u200d\ud83d\udcbb',fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],"char":'\ud83d\udc68\u200d\ud83d\udcbb',fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\udcbc',fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],"char":'\ud83d\udc68\u200d\ud83d\udcbc',fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],"char":'\ud83d\udc69\u200d\ud83d\udd27',fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],"char":'\ud83d\udc68\u200d\ud83d\udd27',fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\udd2c',fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],"char":'\ud83d\udc68\u200d\ud83d\udd2c',fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],"char":'\ud83d\udc69\u200d\ud83c\udfa8',fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],"char":'\ud83d\udc68\u200d\ud83c\udfa8',fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\ude92',fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],"char":'\ud83d\udc68\u200d\ud83d\ude92',fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],"char":'\ud83d\udc69\u200d\u2708\ufe0f',fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],"char":'\ud83d\udc68\u200d\u2708\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],"char":'\ud83d\udc69\u200d\ud83d\ude80',fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],"char":'\ud83d\udc68\u200d\ud83d\ude80',fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],"char":'\ud83d\udc69\u200d\u2696\ufe0f',fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],"char":'\ud83d\udc68\u200d\u2696\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],"char":'\ud83e\uddb8\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],"char":'\ud83e\uddb8\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],"char":'\ud83e\uddb9\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],"char":'\ud83e\uddb9\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],"char":'\ud83e\udd36',fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],"char":'\ud83c\udf85',fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],"char":'\ud83e\uddd9\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],"char":'\ud83e\uddd9\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],"char":'\ud83e\udddd\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],"char":'\ud83e\udddd\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],"char":'\ud83e\udddb\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],"char":'\ud83e\udddb\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],"char":'\ud83e\udddf\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],"char":'\ud83e\udddf\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],"char":'\ud83e\uddde\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],"char":'\ud83e\uddde\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],"char":'\ud83e\udddc\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],"char":'\ud83e\udddc\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],"char":'\ud83e\uddda\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],"char":'\ud83e\uddda\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],"char":'\ud83d\udc7c',fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],"char":'\ud83e\udd30',fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],"char":'\ud83e\udd31',fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],"char":'\ud83d\udc78',fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],"char":'\ud83e\udd34',fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],"char":'\ud83d\udc70',fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],"char":'\ud83e\udd35',fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],"char":'\ud83c\udfc3\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],"char":'\ud83c\udfc3',fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],"char":'\ud83d\udeb6\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],"char":'\ud83d\udeb6',fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],"char":'\ud83d\udc83',fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],"char":'\ud83d\udd7a',fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],"char":'\ud83d\udc6f',fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],"char":'\ud83d\udc6f\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],"char":'\ud83d\udc6b',fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],"char":'\ud83d\udc6c',fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],"char":'\ud83d\udc6d',fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],"char":'\ud83d\ude47\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],"char":'\ud83d\ude47',fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],"char":'\ud83e\udd26\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],"char":'\ud83e\udd26\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],"char":'\ud83e\udd37',fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],"char":'\ud83e\udd37\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],"char":'\ud83d\udc81',fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],"char":'\ud83d\udc81\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],"char":'\ud83d\ude45',fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],"char":'\ud83d\ude45\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],"char":'\ud83d\ude46',fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],"char":'\ud83d\ude46\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],"char":'\ud83d\ude4b',fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],"char":'\ud83d\ude4b\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],"char":'\ud83d\ude4e',fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],"char":'\ud83d\ude4e\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],"char":'\ud83d\ude4d',fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],"char":'\ud83d\ude4d\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],"char":'\ud83d\udc87',fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],"char":'\ud83d\udc87\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],"char":'\ud83d\udc86',fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],"char":'\ud83d\udc86\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],"char":'\ud83e\uddd6\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],"char":'\ud83e\uddd6\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":'\ud83d\udc91',fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":'\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69',fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":'\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68',fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":'\ud83d\udc8f',fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":'\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69',fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],"char":'\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],"char":'\ud83d\udc6a',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc69\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc69\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc68\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],"char":'\ud83d\udc68\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66',fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],"char":'\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67',fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],"char":'\ud83e\uddf6',fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],"char":'\ud83e\uddf5',fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],"char":'\ud83e\udde5',fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],"char":'\ud83e\udd7c',fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],"char":'\ud83d\udc5a',fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],"char":'\ud83d\udc55',fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],"char":'\ud83d\udc56',fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],"char":'\ud83d\udc54',fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],"char":'\ud83d\udc57',fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],"char":'\ud83d\udc59',fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],"char":'\ud83d\udc58',fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],"char":'\ud83d\udc84',fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],"char":'\ud83d\udc8b',fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],"char":'\ud83d\udc63',fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],"char":'\ud83e\udd7f',fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],"char":'\ud83d\udc60',fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],"char":'\ud83d\udc61',fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],"char":'\ud83d\udc62',fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],"char":'\ud83d\udc5e',fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],"char":'\ud83d\udc5f',fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],"char":'\ud83e\udd7e',fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],"char":'\ud83e\udde6',fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],"char":'\ud83e\udde4',fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],"char":'\ud83e\udde3',fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],"char":'\ud83d\udc52',fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],"char":'\ud83c\udfa9',fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],"char":'\ud83e\udde2',fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],"char":'\u26d1',fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],"char":'\ud83c\udf93',fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],"char":'\ud83d\udc51',fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],"char":'\ud83c\udf92',fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],"char":'\ud83e\uddf3',fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],"char":'\ud83d\udc5d',fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],"char":'\ud83d\udc5b',fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],"char":'\ud83d\udc5c',fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],"char":'\ud83d\udcbc',fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],"char":'\ud83d\udc53',fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],"char":'\ud83d\udd76',fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],"char":'\ud83e\udd7d',fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"char":'\ud83d\udc8d',fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],"char":'\ud83c\udf02',fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],"char":'\ud83d\udc36',fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],"char":'\ud83d\udc31',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],"char":'\ud83d\udc2d',fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],"char":'\ud83d\udc39',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],"char":'\ud83d\udc30',fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],"char":'\ud83e\udd8a',fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],"char":'\ud83d\udc3b',fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],"char":'\ud83d\udc3c',fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],"char":'\ud83d\udc28',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],"char":'\ud83d\udc2f',fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],"char":'\ud83e\udd81',fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],"char":'\ud83d\udc2e',fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],"char":'\ud83d\udc37',fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],"char":'\ud83d\udc3d',fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],"char":'\ud83d\udc38',fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],"char":'\ud83e\udd91',fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],"char":'\ud83d\udc19',fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],"char":'\ud83e\udd90',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],"char":'\ud83d\udc35',fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],"char":'\ud83e\udd8d',fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],"char":'\ud83d\ude48',fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],"char":'\ud83d\ude49',fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],"char":'\ud83d\ude4a',fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],"char":'\ud83d\udc12',fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],"char":'\ud83d\udc14',fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],"char":'\ud83d\udc27',fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],"char":'\ud83d\udc26',fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],"char":'\ud83d\udc24',fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],"char":'\ud83d\udc23',fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],"char":'\ud83d\udc25',fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],"char":'\ud83e\udd86',fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],"char":'\ud83e\udd85',fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],"char":'\ud83e\udd89',fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],"char":'\ud83e\udd87',fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],"char":'\ud83d\udc3a',fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],"char":'\ud83d\udc17',fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],"char":'\ud83d\udc34',fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],"char":'\ud83e\udd84',fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],"char":'\ud83d\udc1d',fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],"char":'\ud83d\udc1b',fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],"char":'\ud83e\udd8b',fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],"char":'\ud83d\udc0c',fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],"char":'\ud83d\udc1e',fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],"char":'\ud83d\udc1c',fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],"char":'\ud83e\udd97',fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],"char":'\ud83d\udd77',fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],"char":'\ud83e\udd82',fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],"char":'\ud83e\udd80',fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],"char":'\ud83d\udc0d',fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],"char":'\ud83e\udd8e',fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],"char":'\ud83e\udd96',fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"char":'\ud83e\udd95',fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],"char":'\ud83d\udc22',fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],"char":'\ud83d\udc20',fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],"char":'\ud83d\udc1f',fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],"char":'\ud83d\udc21',fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],"char":'\ud83d\udc2c',fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],"char":'\ud83e\udd88',fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],"char":'\ud83d\udc33',fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],"char":'\ud83d\udc0b',fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],"char":'\ud83d\udc0a',fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],"char":'\ud83d\udc06',fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],"char":'\ud83e\udd93',fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],"char":'\ud83d\udc05',fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],"char":'\ud83d\udc03',fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],"char":'\ud83d\udc02',fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],"char":'\ud83d\udc04',fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],"char":'\ud83e\udd8c',fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],"char":'\ud83d\udc2a',fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],"char":'\ud83d\udc2b',fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],"char":'\ud83e\udd92',fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],"char":'\ud83d\udc18',fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],"char":'\ud83e\udd8f',fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],"char":'\ud83d\udc10',fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],"char":'\ud83d\udc0f',fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],"char":'\ud83d\udc11',fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],"char":'\ud83d\udc0e',fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],"char":'\ud83d\udc16',fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],"char":'\ud83d\udc00',fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],"char":'\ud83d\udc01',fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],"char":'\ud83d\udc13',fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],"char":'\ud83e\udd83',fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],"char":'\ud83d\udd4a',fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],"char":'\ud83d\udc15',fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],"char":'\ud83d\udc29',fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],"char":'\ud83d\udc08',fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],"char":'\ud83d\udc07',fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],"char":'\ud83d\udc3f',fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],"char":'\ud83e\udd94',fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],"char":'\ud83e\udd9d',fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],"char":'\ud83e\udd99',fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],"char":'\ud83e\udd9b',fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],"char":'\ud83e\udd98',fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],"char":'\ud83e\udda1',fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],"char":'\ud83e\udda2',fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],"char":'\ud83e\udd9a',fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],"char":'\ud83e\udd9c',fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],"char":'\ud83e\udd9e',fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],"char":'\ud83e\udd9f',fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],"char":'\ud83d\udc3e',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],"char":'\ud83d\udc09',fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],"char":'\ud83d\udc32',fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],"char":'\ud83c\udf35',fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],"char":'\ud83c\udf84',fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],"char":'\ud83c\udf32',fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],"char":'\ud83c\udf33',fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],"char":'\ud83c\udf34',fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],"char":'\ud83c\udf31',fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],"char":'\ud83c\udf3f',fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],"char":'\u2618',fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],"char":'\ud83c\udf40',fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],"char":'\ud83c\udf8d',fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],"char":'\ud83c\udf8b',fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],"char":'\ud83c\udf43',fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],"char":'\ud83c\udf42',fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],"char":'\ud83c\udf41',fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],"char":'\ud83c\udf3e',fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],"char":'\ud83c\udf3a',fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],"char":'\ud83c\udf3b',fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],"char":'\ud83c\udf39',fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],"char":'\ud83e\udd40',fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],"char":'\ud83c\udf37',fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],"char":'\ud83c\udf3c',fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],"char":'\ud83c\udf38',fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],"char":'\ud83d\udc90',fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],"char":'\ud83c\udf44',fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],"char":'\ud83c\udf30',fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],"char":'\ud83c\udf83',fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],"char":'\ud83d\udc1a',fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],"char":'\ud83d\udd78',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],"char":'\ud83c\udf0e',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],"char":'\ud83c\udf0d',fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],"char":'\ud83c\udf0f',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf15',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"char":'\ud83c\udf16',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf17',fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf18',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf11',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf12',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf13',fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"char":'\ud83c\udf14',fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1a',fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1d',fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1b',fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":'\ud83c\udf1c',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],"char":'\ud83c\udf1e',fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],"char":'\ud83c\udf19',fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],"char":'\u2b50',fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],"char":'\ud83c\udf1f',fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],"char":'\ud83d\udcab',fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],"char":'\u2728',fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],"char":'\u2604',fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],"char":'\u2600\ufe0f',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],"char":'\ud83c\udf24',fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],"char":'\u26c5',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],"char":'\ud83c\udf25',fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],"char":'\ud83c\udf26',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],"char":'\u2601\ufe0f',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],"char":'\ud83c\udf27',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],"char":'\u26c8',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],"char":'\ud83c\udf29',fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],"char":'\u26a1',fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],"char":'\ud83d\udd25',fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],"char":'\ud83d\udca5',fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],"char":'\u2744\ufe0f',fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],"char":'\ud83c\udf28',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"char":'\u26c4',fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],"char":'\u2603',fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],"char":'\ud83c\udf2c',fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],"char":'\ud83d\udca8',fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],"char":'\ud83c\udf2a',fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],"char":'\ud83c\udf2b',fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],"char":'\u2602',fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],"char":'\u2614',fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],"char":'\ud83d\udca7',fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],"char":'\ud83d\udca6',fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],"char":'\ud83c\udf0a',fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],"char":'\ud83c\udf4f',fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],"char":'\ud83c\udf4e',fitzpatrick_scale:!1,category:"food_and_drink"},laytp:{keywords:["fruit","nature","food"],"char":'\ud83c\udf50',fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],"char":'\ud83c\udf4a',fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],"char":'\ud83c\udf4b',fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],"char":'\ud83c\udf4c',fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],"char":'\ud83c\udf49',fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],"char":'\ud83c\udf47',fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],"char":'\ud83c\udf53',fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],"char":'\ud83c\udf48',fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],"char":'\ud83c\udf52',fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],"char":'\ud83c\udf51',fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],"char":'\ud83c\udf4d',fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],"char":'\ud83e\udd65',fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],"char":'\ud83e\udd5d',fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],"char":'\ud83e\udd6d',fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],"char":'\ud83e\udd51',fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],"char":'\ud83e\udd66',fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],"char":'\ud83c\udf45',fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],"char":'\ud83c\udf46',fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],"char":'\ud83e\udd52',fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],"char":'\ud83e\udd55',fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],"char":'\ud83c\udf36',fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],"char":'\ud83e\udd54',fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],"char":'\ud83c\udf3d',fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],"char":'\ud83e\udd6c',fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],"char":'\ud83c\udf60',fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],"char":'\ud83e\udd5c',fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],"char":'\ud83c\udf6f',fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],"char":'\ud83e\udd50',fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],"char":'\ud83c\udf5e',fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],"char":'\ud83e\udd56',fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],"char":'\ud83e\udd6f',fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],"char":'\ud83e\udd68',fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],"char":'\ud83e\uddc0',fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],"char":'\ud83e\udd5a',fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],"char":'\ud83e\udd53',fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],"char":'\ud83e\udd69',fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],"char":'\ud83e\udd5e',fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],"char":'\ud83c\udf57',fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],"char":'\ud83c\udf56',fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],"char":'\ud83e\uddb4',fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],"char":'\ud83c\udf64',fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],"char":'\ud83c\udf73',fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"char":'\ud83c\udf54',fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],"char":'\ud83c\udf5f',fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],"char":'\ud83e\udd59',fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],"char":'\ud83c\udf2d',fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],"char":'\ud83c\udf55',fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],"char":'\ud83e\udd6a',fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],"char":'\ud83e\udd6b',fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],"char":'\ud83c\udf5d',fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],"char":'\ud83c\udf2e',fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],"char":'\ud83c\udf2f',fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],"char":'\ud83e\udd57',fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],"char":'\ud83e\udd58',fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],"char":'\ud83c\udf5c',fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],"char":'\ud83c\udf72',fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"char":'\ud83c\udf65',fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],"char":'\ud83e\udd60',fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],"char":'\ud83c\udf63',fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],"char":'\ud83c\udf71',fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],"char":'\ud83c\udf5b',fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],"char":'\ud83c\udf59',fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],"char":'\ud83c\udf5a',fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],"char":'\ud83c\udf58',fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],"char":'\ud83c\udf62',fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],"char":'\ud83c\udf61',fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],"char":'\ud83c\udf67',fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],"char":'\ud83c\udf68',fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],"char":'\ud83c\udf66',fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],"char":'\ud83e\udd67',fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],"char":'\ud83c\udf70',fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],"char":'\ud83e\uddc1',fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],"char":'\ud83e\udd6e',fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],"char":'\ud83c\udf82',fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],"char":'\ud83c\udf6e',fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],"char":'\ud83c\udf6c',fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],"char":'\ud83c\udf6d',fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],"char":'\ud83c\udf6b',fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],"char":'\ud83c\udf7f',fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],"char":'\ud83e\udd5f',fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],"char":'\ud83c\udf69',fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],"char":'\ud83c\udf6a',fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],"char":'\ud83e\udd5b',fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":'\ud83c\udf7a',fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":'\ud83c\udf7b',fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"char":'\ud83e\udd42',fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],"char":'\ud83c\udf77',fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"char":'\ud83e\udd43',fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],"char":'\ud83c\udf78',fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"char":'\ud83c\udf79',fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],"char":'\ud83c\udf7e',fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],"char":'\ud83c\udf76',fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],"char":'\ud83c\udf75',fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],"char":'\ud83e\udd64',fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],"char":'\u2615',fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],"char":'\ud83c\udf7c',fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],"char":'\ud83e\uddc2',fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],"char":'\ud83e\udd44',fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],"char":'\ud83c\udf74',fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],"char":'\ud83c\udf7d',fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],"char":'\ud83e\udd63',fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],"char":'\ud83e\udd61',fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],"char":'\ud83e\udd62',fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],"char":'\u26bd',fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],"char":'\ud83c\udfc0',fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],"char":'\ud83c\udfc8',fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],"char":'\u26be',fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],"char":'\ud83e\udd4e',fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],"char":'\ud83c\udfbe',fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],"char":'\ud83c\udfd0',fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],"char":'\ud83c\udfc9',fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],"char":'\ud83e\udd4f',fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],"char":'\ud83c\udfb1',fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],"char":'\u26f3',fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],"char":'\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],"char":'\ud83c\udfcc',fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],"char":'\ud83c\udfd3',fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],"char":'\ud83c\udff8',fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],"char":'\ud83e\udd45',fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],"char":'\ud83c\udfd2',fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],"char":'\ud83c\udfd1',fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],"char":'\ud83e\udd4d',fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],"char":'\ud83c\udfcf',fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],"char":'\ud83c\udfbf',fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],"char":'\u26f7',fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],"char":'\ud83c\udfc2',fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],"char":'\ud83e\udd3a',fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],"char":'\ud83e\udd3c\u200d\u2640\ufe0f',fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],"char":'\ud83e\udd3c\u200d\u2642\ufe0f',fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],"char":'\ud83e\udd38\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],"char":'\ud83e\udd38\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],"char":'\ud83e\udd3e\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],"char":'\ud83e\udd3e\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],"char":'\u26f8',fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],"char":'\ud83e\udd4c',fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],"char":'\ud83d\udef9',fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],"char":'\ud83d\udef7',fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],"char":'\ud83c\udff9',fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],"char":'\ud83c\udfa3',fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],"char":'\ud83e\udd4a',fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],"char":'\ud83e\udd4b',fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],"char":'\ud83d\udea3\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],"char":'\ud83d\udea3',fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],"char":'\ud83e\uddd7\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],"char":'\ud83e\uddd7\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],"char":'\ud83c\udfca\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],"char":'\ud83c\udfca',fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],"char":'\ud83e\udd3d\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],"char":'\ud83e\udd3d\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],"char":'\ud83e\uddd8\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],"char":'\ud83e\uddd8\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],"char":'\ud83c\udfc4\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],"char":'\ud83c\udfc4',fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],"char":'\ud83d\udec0',fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],"char":'\u26f9\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],"char":'\u26f9',fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],"char":'\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],"char":'\ud83c\udfcb',fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],"char":'\ud83d\udeb4\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],"char":'\ud83d\udeb4',fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],"char":'\ud83d\udeb5\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],"char":'\ud83d\udeb5',fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],"char":'\ud83c\udfc7',fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],"char":'\ud83d\udd74',fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],"char":'\ud83c\udfc6',fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],"char":'\ud83c\udfbd',fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],"char":'\ud83c\udfc5',fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],"char":'\ud83c\udf96',fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],"char":'\ud83e\udd47',fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],"char":'\ud83e\udd48',fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],"char":'\ud83e\udd49',fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],"char":'\ud83c\udf97',fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],"char":'\ud83c\udff5',fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],"char":'\ud83c\udfab',fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],"char":'\ud83c\udf9f',fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],"char":'\ud83c\udfad',fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],"char":'\ud83c\udfa8',fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],"char":'\ud83c\udfaa',fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],"char":'\ud83e\udd39\u200d\u2640\ufe0f',fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],"char":'\ud83e\udd39\u200d\u2642\ufe0f',fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],"char":'\ud83c\udfa4',fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],"char":'\ud83c\udfa7',fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],"char":'\ud83c\udfbc',fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],"char":'\ud83c\udfb9',fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],"char":'\ud83e\udd41',fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],"char":'\ud83c\udfb7',fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],"char":'\ud83c\udfba',fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],"char":'\ud83c\udfb8',fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],"char":'\ud83c\udfbb',fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],"char":'\ud83c\udfac',fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],"char":'\ud83c\udfae',fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],"char":'\ud83d\udc7e',fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],"char":'\ud83c\udfaf',fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],"char":'\ud83c\udfb2',fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],"char":"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],"char":'\ud83c\udfb0',fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],"char":'\ud83e\udde9',fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],"char":'\ud83c\udfb3',fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],"char":'\ud83d\ude97',fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],"char":'\ud83d\ude95',fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],"char":'\ud83d\ude99',fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],"char":'\ud83d\ude8c',fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],"char":'\ud83d\ude8e',fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],"char":'\ud83c\udfce',fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],"char":'\ud83d\ude93',fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],"char":'\ud83d\ude91',fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],"char":'\ud83d\ude92',fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],"char":'\ud83d\ude90',fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],"char":'\ud83d\ude9a',fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],"char":'\ud83d\ude9b',fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],"char":'\ud83d\ude9c',fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],"char":'\ud83d\udef4',fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],"char":'\ud83c\udfcd',fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],"char":'\ud83d\udeb2',fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],"char":'\ud83d\udef5',fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],"char":'\ud83d\udea8',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],"char":'\ud83d\ude94',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],"char":'\ud83d\ude8d',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],"char":'\ud83d\ude98',fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],"char":'\ud83d\ude96',fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],"char":'\ud83d\udea1',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],"char":'\ud83d\udea0',fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],"char":'\ud83d\ude9f',fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],"char":'\ud83d\ude83',fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],"char":'\ud83d\ude8b',fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],"char":'\ud83d\ude9d',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],"char":'\ud83d\ude84',fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],"char":'\ud83d\ude85',fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],"char":'\ud83d\ude88',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],"char":'\ud83d\ude9e',fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],"char":'\ud83d\ude82',fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],"char":'\ud83d\ude86',fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],"char":'\ud83d\ude87',fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],"char":'\ud83d\ude8a',fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],"char":'\ud83d\ude89',fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],"char":'\ud83d\udef8',fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],"char":'\ud83d\ude81',fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],"char":'\ud83d\udee9',fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],"char":'\u2708\ufe0f',fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],"char":'\ud83d\udeeb',fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],"char":'\ud83d\udeec',fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],"char":'\u26f5',fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],"char":'\ud83d\udee5',fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],"char":'\ud83d\udea4',fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],"char":'\u26f4',fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],"char":'\ud83d\udef3',fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],"char":'\ud83d\ude80',fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],"char":'\ud83d\udef0',fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],"char":'\ud83d\udcba',fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],"char":'\ud83d\udef6',fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],"char":'\u2693',fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],"char":'\ud83d\udea7',fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],"char":'\u26fd',fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],"char":'\ud83d\ude8f',fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],"char":'\ud83d\udea6',fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],"char":'\ud83d\udea5',fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],"char":'\ud83c\udfc1',fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],"char":'\ud83d\udea2',fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],"char":'\ud83c\udfa1',fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],"char":'\ud83c\udfa2',fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],"char":'\ud83c\udfa0',fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],"char":'\ud83c\udfd7',fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],"char":'\ud83c\udf01',fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],"char":'\ud83d\uddfc',fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],"char":'\ud83c\udfed',fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],"char":'\u26f2',fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],"char":'\ud83c\udf91',fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],"char":'\u26f0',fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],"char":'\ud83c\udfd4',fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],"char":'\ud83d\uddfb',fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],"char":'\ud83c\udf0b',fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],"char":'\ud83d\uddfe',fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],"char":'\ud83c\udfd5',fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],"char":'\u26fa',fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],"char":'\ud83c\udfde',fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],"char":'\ud83d\udee3',fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],"char":'\ud83d\udee4',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],"char":'\ud83c\udf05',fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],"char":'\ud83c\udf04',fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],"char":'\ud83c\udfdc',fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],"char":'\ud83c\udfd6',fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],"char":'\ud83c\udfdd',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],"char":'\ud83c\udf07',fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],"char":'\ud83c\udf06',fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],"char":'\ud83c\udfd9',fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],"char":'\ud83c\udf03',fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],"char":'\ud83c\udf09',fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],"char":'\ud83c\udf0c',fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],"char":'\ud83c\udf20',fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],"char":'\ud83c\udf87',fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],"char":'\ud83c\udf86',fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],"char":'\ud83c\udf08',fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],"char":'\ud83c\udfd8',fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],"char":'\ud83c\udff0',fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],"char":'\ud83c\udfef',fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],"char":'\ud83c\udfdf',fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],"char":'\ud83d\uddfd',fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],"char":'\ud83c\udfe0',fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],"char":'\ud83c\udfe1',fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],"char":'\ud83c\udfda',fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],"char":'\ud83c\udfe2',fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],"char":'\ud83c\udfec',fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],"char":'\ud83c\udfe3',fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],"char":'\ud83c\udfe4',fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],"char":'\ud83c\udfe5',fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],"char":'\ud83c\udfe6',fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],"char":'\ud83c\udfe8',fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],"char":'\ud83c\udfea',fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],"char":'\ud83c\udfeb',fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],"char":'\ud83c\udfe9',fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],"char":'\ud83d\udc92',fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],"char":'\ud83c\udfdb',fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],"char":'\u26ea',fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],"char":'\ud83d\udd4c',fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],"char":'\ud83d\udd4d',fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],"char":'\ud83d\udd4b',fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],"char":'\u26e9',fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],"char":'\u231a',fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],"char":'\ud83d\udcf1',fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],"char":'\ud83d\udcf2',fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],"char":'\ud83d\udcbb',fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],"char":'\u2328',fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],"char":'\ud83d\udda5',fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],"char":'\ud83d\udda8',fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],"char":'\ud83d\uddb1',fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],"char":'\ud83d\uddb2',fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],"char":'\ud83d\udd79',fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],"char":'\ud83d\udddc',fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],"char":'\ud83d\udcbd',fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],"char":'\ud83d\udcbe',fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],"char":'\ud83d\udcbf',fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],"char":'\ud83d\udcc0',fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],"char":'\ud83d\udcfc',fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],"char":'\ud83d\udcf7',fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],"char":'\ud83d\udcf8',fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],"char":'\ud83d\udcf9',fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],"char":'\ud83c\udfa5',fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],"char":'\ud83d\udcfd',fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],"char":'\ud83c\udf9e',fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],"char":'\ud83d\udcde',fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],"char":'\u260e\ufe0f',fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],"char":'\ud83d\udcdf',fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],"char":'\ud83d\udce0',fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],"char":'\ud83d\udcfa',fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],"char":'\ud83d\udcfb',fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],"char":'\ud83c\udf99',fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],"char":'\ud83c\udf9a',fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],"char":'\ud83c\udf9b',fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],"char":'\ud83e\udded',fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],"char":'\u23f1',fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],"char":'\u23f2',fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],"char":'\u23f0',fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],"char":'\ud83d\udd70',fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],"char":'\u23f3',fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],"char":'\u231b',fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],"char":'\ud83d\udce1',fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],"char":'\ud83d\udd0b',fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],"char":'\ud83d\udd0c',fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],"char":'\ud83d\udca1',fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],"char":'\ud83d\udd26',fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],"char":'\ud83d\udd6f',fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],"char":'\ud83e\uddef',fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],"char":'\ud83d\uddd1',fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],"char":'\ud83d\udee2',fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],"char":'\ud83d\udcb8',fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],"char":'\ud83d\udcb5',fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],"char":'\ud83d\udcb4',fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],"char":'\ud83d\udcb6',fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],"char":'\ud83d\udcb7',fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],"char":'\ud83d\udcb0',fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],"char":'\ud83d\udcb3',fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],"char":'\ud83d\udc8e',fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],"char":'\u2696',fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],"char":'\ud83e\uddf0',fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],"char":'\ud83d\udd27',fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],"char":'\ud83d\udd28',fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],"char":'\u2692',fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],"char":'\ud83d\udee0',fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],"char":'\u26cf',fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],"char":'\ud83d\udd29',fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],"char":'\u2699',fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],"char":'\ud83e\uddf1',fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],"char":'\u26d3',fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],"char":'\ud83e\uddf2',fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],"char":'\ud83d\udd2b',fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],"char":'\ud83d\udca3',fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],"char":'\ud83e\udde8',fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],"char":'\ud83d\udd2a',fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],"char":'\ud83d\udde1',fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],"char":'\u2694',fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],"char":'\ud83d\udee1',fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],"char":'\ud83d\udeac',fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],"char":'\u2620',fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"char":'\u26b0',fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],"char":'\u26b1',fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],"char":'\ud83c\udffa',fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],"char":'\ud83d\udd2e',fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],"char":'\ud83d\udcff',fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],"char":'\ud83e\uddff',fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],"char":'\ud83d\udc88',fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],"char":'\u2697',fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],"char":'\ud83d\udd2d',fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],"char":'\ud83d\udd2c',fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],"char":'\ud83d\udd73',fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],"char":'\ud83d\udc8a',fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"char":'\ud83d\udc89',fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],"char":'\ud83e\uddec',fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],"char":'\ud83e\udda0',fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],"char":'\ud83e\uddeb',fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],"char":'\ud83e\uddea',fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],"char":'\ud83c\udf21',fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],"char":'\ud83e\uddf9',fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],"char":'\ud83e\uddfa',fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],"char":'\ud83e\uddfb',fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],"char":'\ud83c\udff7',fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],"char":'\ud83d\udd16',fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],"char":'\ud83d\udebd',fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],"char":'\ud83d\udebf',fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],"char":'\ud83d\udec1',fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],"char":'\ud83e\uddfc',fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],"char":'\ud83e\uddfd',fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],"char":'\ud83e\uddf4',fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],"char":'\ud83d\udd11',fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],"char":'\ud83d\udddd',fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],"char":'\ud83d\udecb',fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],"char":'\ud83d\udecc',fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],"char":'\ud83d\udecf',fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],"char":'\ud83d\udeaa',fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],"char":'\ud83d\udece',fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],"char":'\ud83e\uddf8',fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],"char":'\ud83d\uddbc',fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],"char":'\ud83d\uddfa',fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],"char":'\u26f1',fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],"char":'\ud83d\uddff',fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],"char":'\ud83d\udecd',fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],"char":'\ud83d\uded2',fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],"char":'\ud83c\udf88',fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],"char":'\ud83c\udf8f',fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],"char":'\ud83c\udf80',fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],"char":'\ud83c\udf81',fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],"char":'\ud83c\udf8a',fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],"char":'\ud83c\udf89',fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],"char":'\ud83c\udf8e',fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],"char":'\ud83c\udf90',fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],"char":'\ud83c\udf8c',fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],"char":'\ud83c\udfee',fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],"char":'\ud83e\udde7',fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],"char":'\u2709\ufe0f',fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],"char":'\ud83d\udce9',fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],"char":'\ud83d\udce8',fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],"char":'\ud83d\udce7',fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],"char":'\ud83d\udc8c',fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],"char":'\ud83d\udcee',fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],"char":'\ud83d\udcea',fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],"char":'\ud83d\udceb',fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],"char":'\ud83d\udcec',fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],"char":'\ud83d\udced',fitzpatrick_scale:!1,category:"objects"},"package":{keywords:["mail","gift","cardboard","box","moving"],"char":'\ud83d\udce6',fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],"char":'\ud83d\udcef',fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],"char":'\ud83d\udce5',fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],"char":'\ud83d\udce4',fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],"char":'\ud83d\udcdc',fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],"char":'\ud83d\udcc3',fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],"char":'\ud83d\udcd1',fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],"char":'\ud83e\uddfe',fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],"char":'\ud83d\udcca',fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"char":'\ud83d\udcc8',fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"char":'\ud83d\udcc9',fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],"char":'\ud83d\udcc4',fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],"char":'\ud83d\udcc5',fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],"char":'\ud83d\udcc6',fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],"char":'\ud83d\uddd3',fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],"char":'\ud83d\udcc7',fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],"char":'\ud83d\uddc3',fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],"char":'\ud83d\uddf3',fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],"char":'\ud83d\uddc4',fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],"char":'\ud83d\udccb',fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],"char":'\ud83d\uddd2',fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],"char":'\ud83d\udcc1',fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],"char":'\ud83d\udcc2',fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],"char":'\ud83d\uddc2',fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],"char":'\ud83d\uddde',fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],"char":'\ud83d\udcf0',fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],"char":'\ud83d\udcd3',fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],"char":'\ud83d\udcd5',fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],"char":'\ud83d\udcd7',fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],"char":'\ud83d\udcd8',fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],"char":'\ud83d\udcd9',fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],"char":'\ud83d\udcd4',fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],"char":'\ud83d\udcd2',fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],"char":'\ud83d\udcda',fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],"char":'\ud83d\udcd6',fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],"char":'\ud83e\uddf7',fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],"char":'\ud83d\udd17',fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],"char":'\ud83d\udcce',fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],"char":'\ud83d\udd87',fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],"char":'\u2702\ufe0f',fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],"char":'\ud83d\udcd0',fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],"char":'\ud83d\udccf',fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],"char":'\ud83e\uddee',fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],"char":'\ud83d\udccc',fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],"char":'\ud83d\udccd',fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],"char":'\ud83d\udea9',fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],"char":'\ud83c\udff3',fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],"char":'\ud83c\udff4',fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"char":'\ud83c\udff3\ufe0f\u200d\ud83c\udf08',fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],"char":'\ud83d\udd10',fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],"char":'\ud83d\udd12',fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],"char":'\ud83d\udd13',fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],"char":'\ud83d\udd0f',fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],"char":'\ud83d\udd8a',fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],"char":'\ud83d\udd8b',fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],"char":'\u2712\ufe0f',fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"char":'\ud83d\udcdd',fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],"char":'\u270f\ufe0f',fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],"char":'\ud83d\udd8d',fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],"char":'\ud83d\udd8c',fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],"char":'\ud83d\udd0d',fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],"char":'\ud83d\udd0e',fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],"char":'\u2764\ufe0f',fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83e\udde1',fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9b',fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9a',fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc99',fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9c',fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],"char":'\ud83d\udda4',fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],"char":'\ud83d\udc94',fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],"char":'\u2763',fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],"char":'\ud83d\udc95',fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc9e',fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],"char":'\ud83d\udc93',fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],"char":'\ud83d\udc97',fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],"char":'\ud83d\udc96',fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],"char":'\ud83d\udc98',fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],"char":'\ud83d\udc9d',fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],"char":'\ud83d\udc9f',fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],"char":'\u262e',fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],"char":'\u271d',fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],"char":'\u262a',fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":'\ud83d\udd49',fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":'\u2638',fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],"char":'\u2721',fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],"char":'\ud83d\udd2f',fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],"char":'\ud83d\udd4e',fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],"char":'\u262f',fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],"char":'\u2626',fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],"char":'\ud83d\uded0',fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],"char":'\u26ce',fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u2648',fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],"char":'\u2649',fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u264a',fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u264b',fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u264c',fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u264d',fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u264e',fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],"char":'\u264f',fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u2650',fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],"char":'\u2651',fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],"char":'\u2652',fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],"char":'\u2653',fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],"char":'\ud83c\udd94',fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],"char":'\u269b',fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],"char":'\ud83c\ude33',fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],"char":'\ud83c\ude39',fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],"char":'\u2622',fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],"char":'\u2623',fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],"char":'\ud83d\udcf4',fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],"char":'\ud83d\udcf3',fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],"char":'\ud83c\ude36',fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],"char":'\ud83c\ude1a',fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],"char":'\ud83c\ude38',fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],"char":'\ud83c\ude3a',fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],"char":'\ud83c\ude37\ufe0f',fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],"char":'\u2734\ufe0f',fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],"char":'\ud83c\udd9a',fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],"char":'\ud83c\ude51',fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],"char":'\ud83d\udcae',fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],"char":'\ud83c\ude50',fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],"char":'\u3299\ufe0f',fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],"char":'\u3297\ufe0f',fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],"char":'\ud83c\ude34',fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],"char":'\ud83c\ude35',fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"char":'\ud83c\ude32',fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],"char":'\ud83c\udd70\ufe0f',fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],"char":'\ud83c\udd71\ufe0f',fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],"char":'\ud83c\udd8e',fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],"char":'\ud83c\udd91',fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],"char":'\ud83c\udd7e\ufe0f',fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],"char":'\ud83c\udd98',fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],"char":'\u26d4',fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],"char":'\ud83d\udcdb',fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],"char":'\ud83d\udeab',fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],"char":'\u274c',fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],"char":'\u2b55',fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],"char":'\ud83d\uded1',fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],"char":'\ud83d\udca2',fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],"char":'\u2668\ufe0f',fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],"char":'\ud83d\udeb7',fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],"char":'\ud83d\udeaf',fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],"char":'\ud83d\udeb3',fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],"char":'\ud83d\udeb1',fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],"char":'\ud83d\udd1e',fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],"char":'\ud83d\udcf5',fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"char":'\u2757',fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],"char":'\u2755',fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],"char":'\u2753',fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],"char":'\u2754',fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],"char":'\u203c\ufe0f',fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],"char":'\u2049\ufe0f',fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],"char":'\ud83d\udd05',fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],"char":'\ud83d\udd06',fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","slaytp"],"char":'\ud83d\udd31',fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],"char":'\u269c',fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],"char":'\u303d\ufe0f',fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],"char":'\u26a0\ufe0f',fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],"char":'\ud83d\udeb8',fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],"char":'\ud83d\udd30',fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],"char":'\u267b\ufe0f',fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],"char":'\ud83c\ude2f',fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],"char":'\ud83d\udcb9',fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],"char":'\u2747\ufe0f',fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],"char":'\u2733\ufe0f',fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],"char":'\u274e',fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],"char":'\u2705',fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],"char":'\ud83d\udca0',fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"char":'\ud83c\udf00',fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],"char":'\u27bf',fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],"char":'\ud83c\udf10',fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],"char":'\u24c2\ufe0f',fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],"char":'\ud83c\udfe7',fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],"char":'\ud83c\ude02\ufe0f',fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],"char":'\ud83d\udec2',fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],"char":'\ud83d\udec3',fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],"char":'\ud83d\udec4',fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],"char":'\ud83d\udec5',fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],"char":'\u267f',fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],"char":'\ud83d\udead',fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],"char":'\ud83d\udebe',fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],"char":'\ud83c\udd7f\ufe0f',fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],"char":'\ud83d\udeb0',fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],"char":'\ud83d\udeb9',fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],"char":'\ud83d\udeba',fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],"char":'\ud83d\udebc',fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],"char":'\ud83d\udebb',fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],"char":'\ud83d\udeae',fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],"char":'\ud83c\udfa6',fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"char":'\ud83d\udcf6',fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],"char":'\ud83c\ude01',fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],"char":'\ud83c\udd96',fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],"char":'\ud83c\udd97',fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],"char":'\ud83c\udd99',fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],"char":'\ud83c\udd92',fitzpatrick_scale:!1,category:"symbols"},"new":{keywords:["blue-square","words","start"],"char":'\ud83c\udd95',fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],"char":'\ud83c\udd93',fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],"char":'0\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],"char":'1\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],"char":'2\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],"char":'3\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],"char":'4\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],"char":'5\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],"char":'6\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],"char":'7\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],"char":'8\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],"char":'9\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],"char":'\ud83d\udd1f',fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],"char":'*\u20e3',fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],"char":'\u23cf\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],"char":'\u25b6\ufe0f',fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],"char":'\u23f8',fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],"char":'\u23ed',fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],"char":'\u23f9',fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],"char":'\u23fa',fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],"char":'\u23ef',fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],"char":'\u23ee',fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],"char":'\u23e9',fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],"char":'\u23ea',fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],"char":'\ud83d\udd00',fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],"char":'\ud83d\udd01',fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],"char":'\ud83d\udd02',fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],"char":'\u25c0\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],"char":'\ud83d\udd3c',fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],"char":'\ud83d\udd3d',fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],"char":'\u23eb',fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],"char":'\u23ec',fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],"char":'\u27a1\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],"char":'\u2b05\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],"char":'\u2b06\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],"char":'\u2b07\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],"char":'\u2197\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],"char":'\u2198\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],"char":'\u2199\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],"char":'\u2196\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],"char":'\u2195\ufe0f',fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],"char":'\u2194\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],"char":'\ud83d\udd04',fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],"char":'\u21aa\ufe0f',fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],"char":'\u21a9\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],"char":'\u2934\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],"char":'\u2935\ufe0f',fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],"char":'#\ufe0f\u20e3',fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],"char":'\u2139\ufe0f',fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],"char":'\ud83d\udd24',fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],"char":'\ud83d\udd21',fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],"char":'\ud83d\udd20',fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],"char":'\ud83d\udd23',fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],"char":'\ud83c\udfb5',fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],"char":'\ud83c\udfb6',fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],"char":'\u3030\ufe0f',fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],"char":'\u27b0',fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],"char":'\u2714\ufe0f',fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],"char":'\ud83d\udd03',fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],"char":'\u2795',fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],"char":'\u2796',fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],"char":'\u2797',fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],"char":'\u2716\ufe0f',fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],"char":'\u267e',fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],"char":'\ud83d\udcb2',fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],"char":'\ud83d\udcb1',fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],"char":'\xa9\ufe0f',fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],"char":'\xae\ufe0f',fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],"char":'\u2122\ufe0f',fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],"char":'\ud83d\udd1a',fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],"char":'\ud83d\udd19',fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],"char":'\ud83d\udd1b',fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],"char":'\ud83d\udd1d',fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],"char":'\ud83d\udd1c',fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],"char":'\u2611\ufe0f',fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],"char":'\ud83d\udd18',fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],"char":'\u26aa',fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],"char":'\u26ab',fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],"char":'\ud83d\udd34',fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],"char":'\ud83d\udd35',fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd38',fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd39',fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd36',fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],"char":'\ud83d\udd37',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],"char":'\ud83d\udd3a',fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],"char":'\u25aa\ufe0f',fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],"char":'\u25ab\ufe0f',fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],"char":'\u2b1b',fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],"char":'\u2b1c',fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],"char":'\ud83d\udd3b',fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],"char":'\u25fc\ufe0f',fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],"char":'\u25fb\ufe0f',fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],"char":'\u25fe',fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],"char":'\u25fd',fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],"char":'\ud83d\udd32',fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],"char":'\ud83d\udd33',fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],"char":'\ud83d\udd08',fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],"char":'\ud83d\udd09',fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],"char":'\ud83d\udd0a',fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],"char":'\ud83d\udd07',fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],"char":'\ud83d\udce3',fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],"char":'\ud83d\udce2',fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],"char":'\ud83d\udd14',fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],"char":'\ud83d\udd15',fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],"char":'\ud83c\udccf',fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],"char":'\ud83c\udc04',fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],"char":'\u2660\ufe0f',fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],"char":'\u2663\ufe0f',fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],"char":'\u2665\ufe0f',fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],"char":'\u2666\ufe0f',fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],"char":'\ud83c\udfb4',fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],"char":'\ud83d\udcad',fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],"char":'\ud83d\uddef',fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],"char":'\ud83d\udcac',fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],"char":'\ud83d\udde8',fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd50',fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd51',fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd52',fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd53',fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd54',fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],"char":'\ud83d\udd55',fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd56',fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd57',fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd58',fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd59',fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5a',fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],"char":'\ud83d\udd5b',fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5c',fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5d',fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5e',fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd5f',fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd60',fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd61',fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd62',fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd63',fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd64',fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd65',fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd66',fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],"char":'\ud83d\udd67',fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],"char":'\ud83c\udde8\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],"char":'\ud83c\udde9\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],"char":'\ud83c\uddea\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],"char":'\ud83c\uddeb\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],"char":'\ud83c\udde9\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],"char":'\ud83c\udded\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],"char":'\ud83c\uddee\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],"char":'\ud83c\uddef\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],"char":'\ud83c\uddef\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],"char":'\ud83c\uddef\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],"char":'\ud83c\uddef\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],"char":'\ud83c\uddfd\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf6',fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],"char":'\ud83c\uddfe\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],"char":'\ud83c\uddeb\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],"char":'\ud83c\uddf2\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf5',fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],"char":'\ud83c\uddf3\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],"char":'\ud83c\uddf4\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],"char":'\ud83c\uddf6\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],"char":'\ud83c\udde7\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],"char":'\ud83c\uddf5\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],"char":'\ud83c\uddfc\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],"char":'\ud83c\uddf7\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddfd',fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],"char":'\ud83c\uddff\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],"char":'\ud83c\uddec\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],"char":'\ud83c\uddf0\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],"char":'\ud83c\uddf1\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\udde9',fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],"char":'\ud83c\udde8\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],"char":'\ud83c\uddf8\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddef',fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf1',fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf0',fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf4',fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf9',fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf7',fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\udde8',fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],"char":'\ud83c\uddf9\ud83c\uddfb',fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddec',fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],"char":'\ud83c\udde6\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],"char":'\ud83c\uddec\ud83c\udde7',fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],"char":'\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f',fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],"char":'\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f',fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],"char":'\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f',fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddf8',fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddee',fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddfe',fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],"char":'\ud83c\uddfa\ud83c\uddff',fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddfa',fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\udde6',fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],"char":'\ud83c\uddfb\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],"char":'\ud83c\uddfc\ud83c\uddeb',fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],"char":'\ud83c\uddea\ud83c\udded',fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],"char":'\ud83c\uddfe\ud83c\uddea',fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],"char":'\ud83c\uddff\ud83c\uddf2',fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],"char":'\ud83c\uddff\ud83c\uddfc',fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],"char":'\ud83c\uddfa\ud83c\uddf3',fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],"char":'\ud83c\udff4\u200d\u2620\ufe0f',fitzpatrick_scale:!1,category:"flags"}}); \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojis.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojis.js index 4adb59b0cf764289b4f86f4ecd4e82f1d71713bf..9cfbadd1908106457b3121941ce4c5cfc4aca339 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojis.js +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojis.js @@ -3150,7 +3150,7 @@ window.tinymce.Resource.add("tinymce.plugins.emoticons", { fitzpatrick_scale: false, category: "food_and_drink" }, - pear: { + laytp: { keywords: [ "fruit", "nature", "food" ], "char": "\ud83c\udf50", fitzpatrick_scale: false, @@ -6823,7 +6823,7 @@ window.tinymce.Resource.add("tinymce.plugins.emoticons", { category: "symbols" }, trident: { - keywords: [ "weapon", "spear" ], + keywords: [ "weapon", "slaytp" ], "char": "\ud83d\udd31", fitzpatrick_scale: false, category: "symbols" diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojis.min.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojis.min.js index 8295d5a5c94225301212eb5078236cc7000ac2b9..0550b5d052ce3cff902b8c6e6ed9d989eebcc29d 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojis.min.js +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/emoticons/js/emojis.min.js @@ -1,2 +1,2 @@ // Source: npm package: emojilib, file:emojis.json -window.tinymce.Resource.add("tinymce.plugins.emoticons",{grinning:{keywords:["face","smile","happy","joy",":D","grin"],"char":"\ud83d\ude00",fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],"char":"\ud83d\ude2c",fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],"char":"\ud83d\ude01",fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],"char":"\ud83d\ude02",fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],"char":"\ud83e\udd23",fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],"char":"\ud83e\udd73",fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],"char":"\ud83d\ude03",fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],"char":"\ud83d\ude04",fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],"char":"\ud83d\ude05",fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"char":"\ud83d\ude06",fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],"char":"\ud83d\ude07",fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],"char":"\ud83d\ude09",fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],"char":"\ud83d\ude0a",fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],"char":"\ud83d\ude42",fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],"char":"\ud83d\ude43",fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],"char":"\u263a\ufe0f",fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"char":"\ud83d\ude0b",fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],"char":"\ud83d\ude0c",fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],"char":"\ud83d\ude0d",fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],"char":"\ud83e\udd70",fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude18",fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],"char":"\ud83d\ude17",fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude19",fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude1a",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],"char":"\ud83d\ude1c",fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],"char":"\ud83e\udd2a",fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],"char":"\ud83e\udd28",fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],"char":"\ud83e\uddd0",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1d",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1b",fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],"char":"\ud83e\udd11",fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],"char":"\ud83e\udd13",fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],"char":"\ud83d\ude0e",fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],"char":"\ud83e\udd29",fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],"char":"\ud83e\udd21",fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],"char":"\ud83e\udd20",fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],"char":"\ud83e\udd17",fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],"char":"\ud83d\ude0f",fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],"char":"\ud83d\ude36",fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],"char":"\ud83d\ude10",fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],"char":"\ud83d\ude11",fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],"char":"\ud83d\ude12",fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],"char":"\ud83d\ude44",fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],"char":"\ud83e\udd14",fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],"char":"\ud83e\udd25",fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],"char":"\ud83e\udd2d",fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],"char":"\ud83e\udd2b",fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],"char":"\ud83e\udd2c",fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],"char":"\ud83e\udd2f",fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],"char":"\ud83d\ude33",fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],"char":"\ud83d\ude1e",fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],"char":"\ud83d\ude1f",fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],"char":"\ud83d\ude20",fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],"char":"\ud83d\ude21",fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],"char":"\ud83d\ude14",fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],"char":"\ud83d\ude15",fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],"char":"\ud83d\ude41",fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],"char":"\u2639",fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],"char":"\ud83d\ude23",fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],"char":"\ud83d\ude16",fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],"char":"\ud83d\ude2b",fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],"char":"\ud83d\ude29",fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],"char":"\ud83e\udd7a",fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],"char":"\ud83d\ude24",fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],"char":"\ud83d\ude2e",fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],"char":"\ud83d\ude31",fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],"char":"\ud83d\ude28",fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],"char":"\ud83d\ude30",fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],"char":"\ud83d\ude2f",fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],"char":"\ud83d\ude26",fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],"char":"\ud83d\ude27",fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],"char":"\ud83d\ude22",fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],"char":"\ud83d\ude25",fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],"char":"\ud83e\udd24",fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],"char":"\ud83d\ude2a",fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],"char":"\ud83d\ude13",fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],"char":"\ud83e\udd75",fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],"char":"\ud83e\udd76",fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],"char":"\ud83d\ude2d",fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],"char":"\ud83d\ude35",fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],"char":"\ud83d\ude32",fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],"char":"\ud83e\udd10",fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],"char":"\ud83e\udd22",fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],"char":"\ud83e\udd27",fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],"char":"\ud83e\udd2e",fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],"char":"\ud83d\ude37",fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],"char":"\ud83e\udd12",fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],"char":"\ud83e\udd15",fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],"char":"\ud83e\udd74",fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],"char":"\ud83d\ude34",fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],"char":"\ud83d\udca4",fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],"char":"\ud83d\udca9",fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],"char":"\ud83d\ude08",fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],"char":"\ud83d\udc7f",fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],"char":"\ud83d\udc79",fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],"char":"\ud83d\udc7a",fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],"char":"\ud83d\udc80",fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],"char":"\ud83d\udc7b",fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],"char":"\ud83d\udc7d",fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],"char":"\ud83e\udd16",fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],"char":"\ud83d\ude3a",fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],"char":"\ud83d\ude38",fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],"char":"\ud83d\ude39",fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],"char":"\ud83d\ude3b",fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],"char":"\ud83d\ude3c",fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],"char":"\ud83d\ude3d",fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],"char":"\ud83d\ude40",fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],"char":"\ud83d\ude3f",fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],"char":"\ud83d\ude3e",fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],"char":"\ud83e\udd32",fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],"char":"\ud83d\ude4c",fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],"char":"\ud83d\udc4f",fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"char":"\ud83d\udc4b",fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],"char":"\ud83e\udd19",fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"char":"\ud83d\udc4d",fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],"char":"\ud83d\udc4e",fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],"char":"\ud83d\udc4a",fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],"char":"\u270a",fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],"char":"\ud83e\udd1b",fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],"char":"\ud83e\udd1c",fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],"char":"\u270c",fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],"char":"\ud83d\udc4c",fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],"char":"\u270b",fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],"char":"\ud83e\udd1a",fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],"char":"\ud83d\udc50",fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],"char":"\ud83d\udcaa",fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],"char":"\ud83d\ude4f",fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],"char":"\ud83e\uddb6",fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],"char":"\ud83e\uddb5",fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],"char":"\ud83e\udd1d",fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],"char":"\u261d",fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],"char":"\ud83d\udc46",fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],"char":"\ud83d\udc47",fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],"char":"\ud83d\udc48",fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],"char":"\ud83d\udc49",fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],"char":"\ud83d\udd95",fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],"char":"\ud83d\udd90",fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],"char":"\ud83e\udd1f",fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],"char":"\ud83e\udd18",fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],"char":"\ud83e\udd1e",fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],"char":"\ud83d\udd96",fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],"char":"\u270d",fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],"char":"\ud83e\udd33",fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],"char":"\ud83d\udc85",fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],"char":"\ud83d\udc44",fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],"char":"\ud83e\uddb7",fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],"char":"\ud83d\udc45",fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],"char":"\ud83d\udc42",fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],"char":"\ud83d\udc43",fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],"char":"\ud83d\udc41",fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],"char":"\ud83d\udc40",fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],"char":"\ud83e\udde0",fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],"char":"\ud83d\udc64",fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],"char":"\ud83d\udc65",fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],"char":"\ud83d\udde3",fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],"char":"\ud83d\udc76",fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],"char":"\ud83e\uddd2",fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],"char":"\ud83d\udc66",fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],"char":"\ud83d\udc67",fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],"char":"\ud83e\uddd1",fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],"char":"\ud83d\udc68",fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],"char":"\ud83d\udc69",fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],"char":"\ud83d\udc71\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],"char":"\ud83d\udc71",fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],"char":"\ud83e\uddd4",fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],"char":"\ud83e\uddd3",fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],"char":"\ud83d\udc74",fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],"char":"\ud83d\udc75",fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],"char":"\ud83d\udc72",fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],"char":"\ud83e\uddd5",fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],"char":"\ud83d\udc73\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],"char":"\ud83d\udc73",fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],"char":"\ud83d\udc6e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],"char":"\ud83d\udc6e",fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],"char":"\ud83d\udc77\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],"char":"\ud83d\udc77",fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],"char":"\ud83d\udc82\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],"char":"\ud83d\udc82",fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],"char":"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],"char":"\ud83d\udd75",fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],"char":"\ud83d\udc69\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],"char":"\ud83d\udc68\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"char":"\ud83d\udc69\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],"char":"\ud83d\udc68\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],"char":"\ud83d\udc69\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],"char":"\ud83d\udc68\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],"char":"\ud83d\udc69\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],"char":"\ud83d\udc68\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],"char":"\ud83d\udc69\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],"char":"\ud83d\udc68\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],"char":"\ud83e\uddb8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],"char":"\ud83e\uddb8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],"char":"\ud83e\uddb9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],"char":"\ud83e\uddb9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],"char":"\ud83e\udd36",fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],"char":"\ud83c\udf85",fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],"char":"\ud83e\uddd9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],"char":"\ud83e\uddd9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],"char":"\ud83e\udddd\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],"char":"\ud83e\udddd\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],"char":"\ud83e\udddb\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],"char":"\ud83e\udddb\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],"char":"\ud83e\uddde\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],"char":"\ud83e\uddde\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],"char":"\ud83e\udddc\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],"char":"\ud83e\udddc\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],"char":"\ud83e\uddda\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],"char":"\ud83e\uddda\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],"char":"\ud83d\udc7c",fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],"char":"\ud83e\udd30",fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],"char":"\ud83e\udd31",fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],"char":"\ud83d\udc78",fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],"char":"\ud83e\udd34",fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],"char":"\ud83d\udc70",fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],"char":"\ud83e\udd35",fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],"char":"\ud83c\udfc3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],"char":"\ud83c\udfc3",fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],"char":"\ud83d\udeb6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],"char":"\ud83d\udeb6",fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],"char":"\ud83d\udc83",fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],"char":"\ud83d\udd7a",fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],"char":"\ud83d\udc6f",fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],"char":"\ud83d\udc6f\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],"char":"\ud83d\udc6b",fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],"char":"\ud83d\udc6c",fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],"char":"\ud83d\udc6d",fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],"char":"\ud83d\ude47\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],"char":"\ud83d\ude47",fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],"char":"\ud83e\udd26\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],"char":"\ud83e\udd26\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],"char":"\ud83e\udd37",fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],"char":"\ud83e\udd37\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],"char":"\ud83d\udc81",fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],"char":"\ud83d\udc81\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],"char":"\ud83d\ude45",fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],"char":"\ud83d\ude45\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],"char":"\ud83d\ude46",fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],"char":"\ud83d\ude46\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4b",fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4b\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4e",fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d",fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],"char":"\ud83d\udc87",fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],"char":"\ud83d\udc87\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],"char":"\ud83d\udc86",fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],"char":"\ud83d\udc86\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc91",fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc8f",fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],"char":"\ud83d\udc6a",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],"char":"\ud83e\uddf6",fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],"char":"\ud83e\uddf5",fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],"char":"\ud83e\udde5",fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],"char":"\ud83e\udd7c",fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],"char":"\ud83d\udc5a",fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],"char":"\ud83d\udc55",fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],"char":"\ud83d\udc56",fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],"char":"\ud83d\udc54",fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],"char":"\ud83d\udc57",fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],"char":"\ud83d\udc59",fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],"char":"\ud83d\udc58",fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],"char":"\ud83d\udc84",fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],"char":"\ud83d\udc8b",fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],"char":"\ud83d\udc63",fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],"char":"\ud83e\udd7f",fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],"char":"\ud83d\udc60",fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],"char":"\ud83d\udc61",fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],"char":"\ud83d\udc62",fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],"char":"\ud83d\udc5e",fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],"char":"\ud83d\udc5f",fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],"char":"\ud83e\udd7e",fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],"char":"\ud83e\udde6",fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],"char":"\ud83e\udde4",fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],"char":"\ud83e\udde3",fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],"char":"\ud83d\udc52",fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],"char":"\ud83c\udfa9",fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],"char":"\ud83e\udde2",fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],"char":"\u26d1",fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],"char":"\ud83c\udf93",fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],"char":"\ud83d\udc51",fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],"char":"\ud83c\udf92",fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],"char":"\ud83e\uddf3",fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],"char":"\ud83d\udc5d",fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],"char":"\ud83d\udc5b",fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],"char":"\ud83d\udc5c",fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],"char":"\ud83d\udcbc",fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],"char":"\ud83d\udc53",fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],"char":"\ud83d\udd76",fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],"char":"\ud83e\udd7d",fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"char":"\ud83d\udc8d",fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],"char":"\ud83c\udf02",fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],"char":"\ud83d\udc36",fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],"char":"\ud83d\udc31",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],"char":"\ud83d\udc2d",fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],"char":"\ud83d\udc39",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],"char":"\ud83d\udc30",fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],"char":"\ud83e\udd8a",fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3b",fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],"char":"\ud83d\udc3c",fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],"char":"\ud83d\udc28",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],"char":"\ud83d\udc2f",fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],"char":"\ud83e\udd81",fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc2e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],"char":"\ud83d\udc37",fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],"char":"\ud83d\udc3d",fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],"char":"\ud83d\udc38",fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],"char":"\ud83e\udd91",fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],"char":"\ud83d\udc19",fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],"char":"\ud83e\udd90",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],"char":"\ud83d\udc35",fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],"char":"\ud83e\udd8d",fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],"char":"\ud83d\ude48",fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],"char":"\ud83d\ude49",fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],"char":"\ud83d\ude4a",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],"char":"\ud83d\udc12",fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],"char":"\ud83d\udc14",fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],"char":"\ud83d\udc27",fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],"char":"\ud83d\udc26",fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],"char":"\ud83d\udc24",fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],"char":"\ud83d\udc23",fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],"char":"\ud83d\udc25",fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],"char":"\ud83e\udd86",fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],"char":"\ud83e\udd85",fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],"char":"\ud83e\udd89",fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],"char":"\ud83e\udd87",fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3a",fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],"char":"\ud83d\udc17",fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],"char":"\ud83d\udc34",fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],"char":"\ud83e\udd84",fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],"char":"\ud83d\udc1d",fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],"char":"\ud83d\udc1b",fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],"char":"\ud83e\udd8b",fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],"char":"\ud83d\udc0c",fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],"char":"\ud83d\udc1e",fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],"char":"\ud83d\udc1c",fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],"char":"\ud83e\udd97",fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],"char":"\ud83d\udd77",fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],"char":"\ud83e\udd82",fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],"char":"\ud83e\udd80",fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],"char":"\ud83d\udc0d",fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],"char":"\ud83e\udd8e",fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],"char":"\ud83e\udd96",fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"char":"\ud83e\udd95",fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],"char":"\ud83d\udc22",fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],"char":"\ud83d\udc20",fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],"char":"\ud83d\udc1f",fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],"char":"\ud83d\udc21",fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],"char":"\ud83d\udc2c",fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],"char":"\ud83e\udd88",fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc33",fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc0b",fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],"char":"\ud83d\udc0a",fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],"char":"\ud83d\udc06",fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],"char":"\ud83e\udd93",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],"char":"\ud83d\udc05",fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],"char":"\ud83d\udc03",fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],"char":"\ud83d\udc02",fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc04",fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],"char":"\ud83e\udd8c",fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],"char":"\ud83d\udc2a",fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],"char":"\ud83d\udc2b",fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],"char":"\ud83e\udd92",fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],"char":"\ud83d\udc18",fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],"char":"\ud83e\udd8f",fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],"char":"\ud83d\udc10",fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],"char":"\ud83d\udc0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],"char":"\ud83d\udc11",fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],"char":"\ud83d\udc0e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],"char":"\ud83d\udc16",fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],"char":"\ud83d\udc00",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],"char":"\ud83d\udc01",fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],"char":"\ud83d\udc13",fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],"char":"\ud83e\udd83",fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],"char":"\ud83d\udd4a",fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],"char":"\ud83d\udc15",fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],"char":"\ud83d\udc29",fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],"char":"\ud83d\udc08",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],"char":"\ud83d\udc07",fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],"char":"\ud83d\udc3f",fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],"char":"\ud83e\udd94",fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],"char":"\ud83e\udd9d",fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],"char":"\ud83e\udd99",fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],"char":"\ud83e\udd9b",fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],"char":"\ud83e\udd98",fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],"char":"\ud83e\udda1",fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],"char":"\ud83e\udda2",fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],"char":"\ud83e\udd9a",fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],"char":"\ud83e\udd9c",fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],"char":"\ud83e\udd9e",fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],"char":"\ud83e\udd9f",fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],"char":"\ud83d\udc3e",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc09",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc32",fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],"char":"\ud83c\udf35",fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],"char":"\ud83c\udf84",fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],"char":"\ud83c\udf32",fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],"char":"\ud83c\udf33",fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],"char":"\ud83c\udf34",fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],"char":"\ud83c\udf31",fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],"char":"\ud83c\udf3f",fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],"char":"\u2618",fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],"char":"\ud83c\udf40",fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],"char":"\ud83c\udf8d",fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],"char":"\ud83c\udf8b",fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],"char":"\ud83c\udf43",fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],"char":"\ud83c\udf42",fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],"char":"\ud83c\udf41",fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],"char":"\ud83c\udf3e",fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],"char":"\ud83c\udf3a",fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],"char":"\ud83c\udf3b",fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],"char":"\ud83c\udf39",fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],"char":"\ud83e\udd40",fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],"char":"\ud83c\udf37",fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],"char":"\ud83c\udf3c",fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],"char":"\ud83c\udf38",fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],"char":"\ud83d\udc90",fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],"char":"\ud83c\udf44",fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],"char":"\ud83c\udf30",fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],"char":"\ud83c\udf83",fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],"char":"\ud83d\udc1a",fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],"char":"\ud83d\udd78",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],"char":"\ud83c\udf0e",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],"char":"\ud83c\udf0d",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],"char":"\ud83c\udf0f",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf15",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"char":"\ud83c\udf16",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf17",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf18",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf11",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf12",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf13",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"char":"\ud83c\udf14",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1a",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1d",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1b",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1c",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],"char":"\ud83c\udf1e",fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],"char":"\ud83c\udf19",fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],"char":"\u2b50",fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],"char":"\ud83c\udf1f",fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],"char":"\ud83d\udcab",fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],"char":"\u2728",fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],"char":"\u2604",fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],"char":"\u2600\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],"char":"\ud83c\udf24",fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],"char":"\u26c5",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],"char":"\ud83c\udf25",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],"char":"\ud83c\udf26",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],"char":"\u2601\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],"char":"\ud83c\udf27",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],"char":"\u26c8",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],"char":"\ud83c\udf29",fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],"char":"\u26a1",fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],"char":"\ud83d\udd25",fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],"char":"\ud83d\udca5",fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],"char":"\u2744\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],"char":"\ud83c\udf28",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"char":"\u26c4",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],"char":"\u2603",fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],"char":"\ud83c\udf2c",fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],"char":"\ud83d\udca8",fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],"char":"\ud83c\udf2a",fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],"char":"\ud83c\udf2b",fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],"char":"\u2602",fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],"char":"\u2614",fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],"char":"\ud83d\udca7",fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],"char":"\ud83d\udca6",fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],"char":"\ud83c\udf0a",fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],"char":"\ud83c\udf4f",fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],"char":"\ud83c\udf4e",fitzpatrick_scale:!1,category:"food_and_drink"},pear:{keywords:["fruit","nature","food"],"char":"\ud83c\udf50",fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],"char":"\ud83c\udf4a",fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],"char":"\ud83c\udf4b",fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],"char":"\ud83c\udf4c",fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],"char":"\ud83c\udf49",fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],"char":"\ud83c\udf47",fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],"char":"\ud83c\udf53",fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],"char":"\ud83c\udf48",fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],"char":"\ud83c\udf52",fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],"char":"\ud83c\udf51",fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],"char":"\ud83c\udf4d",fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],"char":"\ud83e\udd65",fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],"char":"\ud83e\udd5d",fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],"char":"\ud83e\udd6d",fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],"char":"\ud83e\udd51",fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],"char":"\ud83e\udd66",fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],"char":"\ud83c\udf45",fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],"char":"\ud83c\udf46",fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],"char":"\ud83e\udd52",fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],"char":"\ud83e\udd55",fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],"char":"\ud83c\udf36",fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],"char":"\ud83e\udd54",fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],"char":"\ud83c\udf3d",fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],"char":"\ud83e\udd6c",fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],"char":"\ud83c\udf60",fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],"char":"\ud83e\udd5c",fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],"char":"\ud83c\udf6f",fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],"char":"\ud83e\udd50",fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],"char":"\ud83c\udf5e",fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],"char":"\ud83e\udd56",fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],"char":"\ud83e\udd6f",fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],"char":"\ud83e\udd68",fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],"char":"\ud83e\uddc0",fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],"char":"\ud83e\udd5a",fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],"char":"\ud83e\udd53",fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],"char":"\ud83e\udd69",fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],"char":"\ud83e\udd5e",fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],"char":"\ud83c\udf57",fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],"char":"\ud83c\udf56",fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],"char":"\ud83e\uddb4",fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],"char":"\ud83c\udf64",fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],"char":"\ud83c\udf73",fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"char":"\ud83c\udf54",fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],"char":"\ud83c\udf5f",fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],"char":"\ud83e\udd59",fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],"char":"\ud83c\udf2d",fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],"char":"\ud83c\udf55",fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],"char":"\ud83e\udd6a",fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],"char":"\ud83e\udd6b",fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],"char":"\ud83c\udf5d",fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],"char":"\ud83c\udf2e",fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],"char":"\ud83c\udf2f",fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],"char":"\ud83e\udd57",fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],"char":"\ud83e\udd58",fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],"char":"\ud83c\udf5c",fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],"char":"\ud83c\udf72",fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"char":"\ud83c\udf65",fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],"char":"\ud83e\udd60",fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],"char":"\ud83c\udf63",fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],"char":"\ud83c\udf71",fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],"char":"\ud83c\udf5b",fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],"char":"\ud83c\udf59",fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],"char":"\ud83c\udf5a",fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],"char":"\ud83c\udf58",fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],"char":"\ud83c\udf62",fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],"char":"\ud83c\udf61",fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],"char":"\ud83c\udf67",fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],"char":"\ud83c\udf68",fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],"char":"\ud83c\udf66",fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],"char":"\ud83e\udd67",fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],"char":"\ud83c\udf70",fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],"char":"\ud83e\uddc1",fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],"char":"\ud83e\udd6e",fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],"char":"\ud83c\udf82",fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],"char":"\ud83c\udf6e",fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],"char":"\ud83c\udf6c",fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],"char":"\ud83c\udf6d",fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],"char":"\ud83c\udf6b",fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],"char":"\ud83c\udf7f",fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],"char":"\ud83e\udd5f",fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],"char":"\ud83c\udf69",fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],"char":"\ud83c\udf6a",fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],"char":"\ud83e\udd5b",fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7a",fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7b",fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"char":"\ud83e\udd42",fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],"char":"\ud83c\udf77",fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"char":"\ud83e\udd43",fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],"char":"\ud83c\udf78",fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"char":"\ud83c\udf79",fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],"char":"\ud83c\udf7e",fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],"char":"\ud83c\udf76",fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],"char":"\ud83c\udf75",fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],"char":"\ud83e\udd64",fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],"char":"\u2615",fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],"char":"\ud83c\udf7c",fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],"char":"\ud83e\uddc2",fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],"char":"\ud83e\udd44",fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],"char":"\ud83c\udf74",fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],"char":"\ud83c\udf7d",fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],"char":"\ud83e\udd63",fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],"char":"\ud83e\udd61",fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],"char":"\ud83e\udd62",fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],"char":"\u26bd",fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],"char":"\ud83c\udfc0",fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],"char":"\ud83c\udfc8",fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],"char":"\u26be",fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],"char":"\ud83e\udd4e",fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],"char":"\ud83c\udfbe",fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],"char":"\ud83c\udfd0",fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],"char":"\ud83c\udfc9",fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],"char":"\ud83e\udd4f",fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],"char":"\ud83c\udfb1",fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],"char":"\u26f3",fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],"char":"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],"char":"\ud83c\udfcc",fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],"char":"\ud83c\udfd3",fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],"char":"\ud83c\udff8",fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],"char":"\ud83e\udd45",fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],"char":"\ud83c\udfd2",fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],"char":"\ud83c\udfd1",fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],"char":"\ud83e\udd4d",fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],"char":"\ud83c\udfcf",fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],"char":"\ud83c\udfbf",fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],"char":"\u26f7",fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],"char":"\ud83c\udfc2",fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],"char":"\ud83e\udd3a",fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],"char":"\u26f8",fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],"char":"\ud83e\udd4c",fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],"char":"\ud83d\udef9",fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],"char":"\ud83d\udef7",fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],"char":"\ud83c\udff9",fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],"char":"\ud83c\udfa3",fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],"char":"\ud83e\udd4a",fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],"char":"\ud83e\udd4b",fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],"char":"\ud83d\udea3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],"char":"\ud83d\udea3",fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],"char":"\ud83e\uddd7\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],"char":"\ud83e\uddd7\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],"char":"\ud83c\udfca\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],"char":"\ud83c\udfca",fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],"char":"\ud83c\udfc4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],"char":"\ud83c\udfc4",fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec0",fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],"char":"\u26f9\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],"char":"\u26f9",fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],"char":"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],"char":"\ud83c\udfcb",fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],"char":"\ud83d\udeb4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],"char":"\ud83d\udeb4",fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],"char":"\ud83d\udeb5\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],"char":"\ud83d\udeb5",fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],"char":"\ud83c\udfc7",fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],"char":"\ud83d\udd74",fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],"char":"\ud83c\udfc6",fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],"char":"\ud83c\udfbd",fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],"char":"\ud83c\udfc5",fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],"char":"\ud83c\udf96",fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],"char":"\ud83e\udd47",fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],"char":"\ud83e\udd48",fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],"char":"\ud83e\udd49",fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],"char":"\ud83c\udf97",fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],"char":"\ud83c\udff5",fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],"char":"\ud83c\udfab",fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],"char":"\ud83c\udf9f",fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],"char":"\ud83c\udfad",fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],"char":"\ud83c\udfa8",fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],"char":"\ud83c\udfaa",fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],"char":"\ud83c\udfa4",fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],"char":"\ud83c\udfa7",fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],"char":"\ud83c\udfbc",fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],"char":"\ud83c\udfb9",fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],"char":"\ud83e\udd41",fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],"char":"\ud83c\udfb7",fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],"char":"\ud83c\udfba",fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],"char":"\ud83c\udfb8",fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],"char":"\ud83c\udfbb",fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],"char":"\ud83c\udfac",fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],"char":"\ud83c\udfae",fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],"char":"\ud83d\udc7e",fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],"char":"\ud83c\udfaf",fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],"char":"\ud83c\udfb2",fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],"char":"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],"char":"\ud83c\udfb0",fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],"char":"\ud83e\udde9",fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],"char":"\ud83c\udfb3",fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],"char":"\ud83d\ude97",fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],"char":"\ud83d\ude95",fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude99",fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude8c",fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],"char":"\ud83d\ude8e",fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],"char":"\ud83c\udfce",fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],"char":"\ud83d\ude93",fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],"char":"\ud83d\ude91",fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],"char":"\ud83d\ude92",fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],"char":"\ud83d\ude90",fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],"char":"\ud83d\ude9a",fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],"char":"\ud83d\ude9b",fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],"char":"\ud83d\ude9c",fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],"char":"\ud83d\udef4",fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],"char":"\ud83c\udfcd",fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],"char":"\ud83d\udeb2",fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],"char":"\ud83d\udef5",fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],"char":"\ud83d\udea8",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],"char":"\ud83d\ude94",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],"char":"\ud83d\ude8d",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude98",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],"char":"\ud83d\ude96",fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea1",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea0",fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],"char":"\ud83d\ude9f",fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude83",fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],"char":"\ud83d\ude8b",fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9d",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],"char":"\ud83d\ude84",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],"char":"\ud83d\ude85",fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude88",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9e",fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],"char":"\ud83d\ude82",fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],"char":"\ud83d\ude86",fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],"char":"\ud83d\ude87",fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],"char":"\ud83d\ude8a",fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],"char":"\ud83d\ude89",fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],"char":"\ud83d\udef8",fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],"char":"\ud83d\ude81",fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],"char":"\ud83d\udee9",fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],"char":"\u2708\ufe0f",fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],"char":"\ud83d\udeeb",fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],"char":"\ud83d\udeec",fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],"char":"\u26f5",fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],"char":"\ud83d\udee5",fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],"char":"\ud83d\udea4",fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],"char":"\u26f4",fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],"char":"\ud83d\udef3",fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],"char":"\ud83d\ude80",fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],"char":"\ud83d\udef0",fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],"char":"\ud83d\udcba",fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],"char":"\ud83d\udef6",fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],"char":"\u2693",fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],"char":"\ud83d\udea7",fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],"char":"\u26fd",fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],"char":"\ud83d\ude8f",fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],"char":"\ud83d\udea6",fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],"char":"\ud83d\udea5",fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],"char":"\ud83c\udfc1",fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],"char":"\ud83d\udea2",fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],"char":"\ud83c\udfa1",fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],"char":"\ud83c\udfa2",fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],"char":"\ud83c\udfa0",fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],"char":"\ud83c\udfd7",fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],"char":"\ud83c\udf01",fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],"char":"\ud83d\uddfc",fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],"char":"\ud83c\udfed",fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],"char":"\u26f2",fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],"char":"\ud83c\udf91",fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],"char":"\u26f0",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],"char":"\ud83c\udfd4",fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],"char":"\ud83d\uddfb",fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],"char":"\ud83c\udf0b",fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],"char":"\ud83d\uddfe",fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],"char":"\ud83c\udfd5",fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],"char":"\u26fa",fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],"char":"\ud83c\udfde",fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],"char":"\ud83d\udee3",fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],"char":"\ud83d\udee4",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],"char":"\ud83c\udf05",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],"char":"\ud83c\udf04",fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],"char":"\ud83c\udfdc",fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],"char":"\ud83c\udfd6",fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],"char":"\ud83c\udfdd",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],"char":"\ud83c\udf07",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],"char":"\ud83c\udf06",fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],"char":"\ud83c\udfd9",fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],"char":"\ud83c\udf03",fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],"char":"\ud83c\udf09",fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],"char":"\ud83c\udf0c",fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],"char":"\ud83c\udf20",fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],"char":"\ud83c\udf87",fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],"char":"\ud83c\udf86",fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],"char":"\ud83c\udf08",fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],"char":"\ud83c\udfd8",fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],"char":"\ud83c\udff0",fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],"char":"\ud83c\udfef",fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],"char":"\ud83c\udfdf",fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],"char":"\ud83d\uddfd",fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],"char":"\ud83c\udfe0",fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],"char":"\ud83c\udfe1",fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],"char":"\ud83c\udfda",fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],"char":"\ud83c\udfe2",fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],"char":"\ud83c\udfec",fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],"char":"\ud83c\udfe3",fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],"char":"\ud83c\udfe4",fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],"char":"\ud83c\udfe5",fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],"char":"\ud83c\udfe6",fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],"char":"\ud83c\udfe8",fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],"char":"\ud83c\udfea",fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],"char":"\ud83c\udfeb",fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],"char":"\ud83c\udfe9",fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],"char":"\ud83d\udc92",fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],"char":"\ud83c\udfdb",fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],"char":"\u26ea",fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],"char":"\ud83d\udd4c",fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],"char":"\ud83d\udd4d",fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],"char":"\ud83d\udd4b",fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],"char":"\u26e9",fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],"char":"\u231a",fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],"char":"\ud83d\udcf1",fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],"char":"\ud83d\udcf2",fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],"char":"\ud83d\udcbb",fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],"char":"\u2328",fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],"char":"\ud83d\udda5",fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],"char":"\ud83d\udda8",fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],"char":"\ud83d\uddb1",fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],"char":"\ud83d\uddb2",fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],"char":"\ud83d\udd79",fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],"char":"\ud83d\udddc",fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],"char":"\ud83d\udcbd",fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],"char":"\ud83d\udcbe",fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],"char":"\ud83d\udcbf",fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],"char":"\ud83d\udcc0",fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],"char":"\ud83d\udcfc",fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],"char":"\ud83d\udcf7",fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],"char":"\ud83d\udcf8",fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],"char":"\ud83d\udcf9",fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],"char":"\ud83c\udfa5",fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],"char":"\ud83d\udcfd",fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],"char":"\ud83c\udf9e",fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],"char":"\ud83d\udcde",fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],"char":"\u260e\ufe0f",fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],"char":"\ud83d\udcdf",fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],"char":"\ud83d\udce0",fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],"char":"\ud83d\udcfa",fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],"char":"\ud83d\udcfb",fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],"char":"\ud83c\udf99",fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],"char":"\ud83c\udf9a",fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],"char":"\ud83c\udf9b",fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],"char":"\ud83e\udded",fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],"char":"\u23f1",fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],"char":"\u23f2",fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],"char":"\u23f0",fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],"char":"\ud83d\udd70",fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],"char":"\u23f3",fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],"char":"\u231b",fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],"char":"\ud83d\udce1",fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],"char":"\ud83d\udd0b",fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],"char":"\ud83d\udd0c",fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],"char":"\ud83d\udca1",fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],"char":"\ud83d\udd26",fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],"char":"\ud83d\udd6f",fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],"char":"\ud83e\uddef",fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],"char":"\ud83d\uddd1",fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],"char":"\ud83d\udee2",fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],"char":"\ud83d\udcb8",fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],"char":"\ud83d\udcb5",fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],"char":"\ud83d\udcb4",fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],"char":"\ud83d\udcb6",fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],"char":"\ud83d\udcb7",fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],"char":"\ud83d\udcb0",fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],"char":"\ud83d\udcb3",fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],"char":"\ud83d\udc8e",fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],"char":"\u2696",fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],"char":"\ud83e\uddf0",fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],"char":"\ud83d\udd27",fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],"char":"\ud83d\udd28",fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],"char":"\u2692",fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],"char":"\ud83d\udee0",fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],"char":"\u26cf",fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],"char":"\ud83d\udd29",fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],"char":"\u2699",fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],"char":"\ud83e\uddf1",fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],"char":"\u26d3",fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],"char":"\ud83e\uddf2",fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],"char":"\ud83d\udd2b",fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],"char":"\ud83d\udca3",fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],"char":"\ud83e\udde8",fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],"char":"\ud83d\udd2a",fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],"char":"\ud83d\udde1",fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],"char":"\u2694",fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],"char":"\ud83d\udee1",fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],"char":"\ud83d\udeac",fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],"char":"\u2620",fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"char":"\u26b0",fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],"char":"\u26b1",fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],"char":"\ud83c\udffa",fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],"char":"\ud83d\udd2e",fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],"char":"\ud83d\udcff",fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],"char":"\ud83e\uddff",fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],"char":"\ud83d\udc88",fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],"char":"\u2697",fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],"char":"\ud83d\udd2d",fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],"char":"\ud83d\udd2c",fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],"char":"\ud83d\udd73",fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],"char":"\ud83d\udc8a",fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"char":"\ud83d\udc89",fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],"char":"\ud83e\uddec",fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],"char":"\ud83e\udda0",fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],"char":"\ud83e\uddeb",fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],"char":"\ud83e\uddea",fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],"char":"\ud83c\udf21",fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],"char":"\ud83e\uddf9",fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],"char":"\ud83e\uddfa",fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],"char":"\ud83e\uddfb",fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],"char":"\ud83c\udff7",fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],"char":"\ud83d\udd16",fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],"char":"\ud83d\udebd",fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],"char":"\ud83d\udebf",fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec1",fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],"char":"\ud83e\uddfc",fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],"char":"\ud83e\uddfd",fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],"char":"\ud83e\uddf4",fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],"char":"\ud83d\udd11",fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],"char":"\ud83d\udddd",fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],"char":"\ud83d\udecb",fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],"char":"\ud83d\udecc",fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],"char":"\ud83d\udecf",fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],"char":"\ud83d\udeaa",fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],"char":"\ud83d\udece",fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],"char":"\ud83e\uddf8",fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],"char":"\ud83d\uddbc",fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],"char":"\ud83d\uddfa",fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],"char":"\u26f1",fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],"char":"\ud83d\uddff",fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],"char":"\ud83d\udecd",fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],"char":"\ud83d\uded2",fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],"char":"\ud83c\udf88",fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],"char":"\ud83c\udf8f",fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],"char":"\ud83c\udf80",fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],"char":"\ud83c\udf81",fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],"char":"\ud83c\udf8a",fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],"char":"\ud83c\udf89",fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],"char":"\ud83c\udf8e",fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],"char":"\ud83c\udf90",fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],"char":"\ud83c\udf8c",fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],"char":"\ud83c\udfee",fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],"char":"\ud83e\udde7",fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],"char":"\u2709\ufe0f",fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],"char":"\ud83d\udce9",fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],"char":"\ud83d\udce8",fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],"char":"\ud83d\udce7",fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],"char":"\ud83d\udc8c",fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],"char":"\ud83d\udcee",fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],"char":"\ud83d\udcea",fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],"char":"\ud83d\udceb",fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],"char":"\ud83d\udcec",fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],"char":"\ud83d\udced",fitzpatrick_scale:!1,category:"objects"},"package":{keywords:["mail","gift","cardboard","box","moving"],"char":"\ud83d\udce6",fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],"char":"\ud83d\udcef",fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],"char":"\ud83d\udce5",fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],"char":"\ud83d\udce4",fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],"char":"\ud83d\udcdc",fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],"char":"\ud83d\udcc3",fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],"char":"\ud83d\udcd1",fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],"char":"\ud83e\uddfe",fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],"char":"\ud83d\udcca",fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"char":"\ud83d\udcc8",fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"char":"\ud83d\udcc9",fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],"char":"\ud83d\udcc4",fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],"char":"\ud83d\udcc5",fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],"char":"\ud83d\udcc6",fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],"char":"\ud83d\uddd3",fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],"char":"\ud83d\udcc7",fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],"char":"\ud83d\uddc3",fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],"char":"\ud83d\uddf3",fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],"char":"\ud83d\uddc4",fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],"char":"\ud83d\udccb",fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],"char":"\ud83d\uddd2",fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],"char":"\ud83d\udcc1",fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],"char":"\ud83d\udcc2",fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],"char":"\ud83d\uddc2",fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],"char":"\ud83d\uddde",fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],"char":"\ud83d\udcf0",fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],"char":"\ud83d\udcd3",fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],"char":"\ud83d\udcd5",fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],"char":"\ud83d\udcd7",fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],"char":"\ud83d\udcd8",fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],"char":"\ud83d\udcd9",fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],"char":"\ud83d\udcd4",fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],"char":"\ud83d\udcd2",fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],"char":"\ud83d\udcda",fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],"char":"\ud83d\udcd6",fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],"char":"\ud83e\uddf7",fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],"char":"\ud83d\udd17",fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],"char":"\ud83d\udcce",fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],"char":"\ud83d\udd87",fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],"char":"\u2702\ufe0f",fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],"char":"\ud83d\udcd0",fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],"char":"\ud83d\udccf",fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],"char":"\ud83e\uddee",fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],"char":"\ud83d\udccc",fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],"char":"\ud83d\udccd",fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],"char":"\ud83d\udea9",fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],"char":"\ud83c\udff3",fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],"char":"\ud83c\udff4",fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"char":"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],"char":"\ud83d\udd10",fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],"char":"\ud83d\udd12",fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],"char":"\ud83d\udd13",fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],"char":"\ud83d\udd0f",fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8a",fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8b",fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],"char":"\u2712\ufe0f",fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"char":"\ud83d\udcdd",fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],"char":"\u270f\ufe0f",fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],"char":"\ud83d\udd8d",fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],"char":"\ud83d\udd8c",fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0d",fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0e",fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],"char":"\u2764\ufe0f",fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83e\udde1",fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9b",fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9a",fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc99",fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9c",fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],"char":"\ud83d\udda4",fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],"char":"\ud83d\udc94",fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],"char":"\u2763",fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],"char":"\ud83d\udc95",fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9e",fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],"char":"\ud83d\udc93",fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],"char":"\ud83d\udc97",fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc96",fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],"char":"\ud83d\udc98",fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],"char":"\ud83d\udc9d",fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],"char":"\ud83d\udc9f",fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],"char":"\u262e",fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],"char":"\u271d",fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],"char":"\u262a",fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\ud83d\udd49",fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\u2638",fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],"char":"\u2721",fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],"char":"\ud83d\udd2f",fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],"char":"\ud83d\udd4e",fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],"char":"\u262f",fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],"char":"\u2626",fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],"char":"\ud83d\uded0",fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],"char":"\u26ce",fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2648",fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2649",fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264a",fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264b",fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264c",fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264d",fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264e",fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],"char":"\u264f",fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2650",fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2651",fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2652",fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2653",fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],"char":"\ud83c\udd94",fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],"char":"\u269b",fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],"char":"\ud83c\ude33",fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],"char":"\ud83c\ude39",fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],"char":"\u2622",fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],"char":"\u2623",fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],"char":"\ud83d\udcf4",fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],"char":"\ud83d\udcf3",fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],"char":"\ud83c\ude36",fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],"char":"\ud83c\ude1a",fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],"char":"\ud83c\ude38",fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],"char":"\ud83c\ude3a",fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],"char":"\ud83c\ude37\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],"char":"\u2734\ufe0f",fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],"char":"\ud83c\udd9a",fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],"char":"\ud83c\ude51",fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],"char":"\ud83d\udcae",fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],"char":"\ud83c\ude50",fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],"char":"\u3299\ufe0f",fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],"char":"\u3297\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],"char":"\ud83c\ude34",fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],"char":"\ud83c\ude35",fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"char":"\ud83c\ude32",fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd70\ufe0f",fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd71\ufe0f",fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],"char":"\ud83c\udd8e",fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],"char":"\ud83c\udd91",fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],"char":"\ud83c\udd7e\ufe0f",fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],"char":"\ud83c\udd98",fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],"char":"\u26d4",fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],"char":"\ud83d\udcdb",fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],"char":"\ud83d\udeab",fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],"char":"\u274c",fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],"char":"\u2b55",fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],"char":"\ud83d\uded1",fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],"char":"\ud83d\udca2",fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],"char":"\u2668\ufe0f",fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],"char":"\ud83d\udeb7",fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],"char":"\ud83d\udeaf",fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],"char":"\ud83d\udeb3",fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],"char":"\ud83d\udeb1",fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],"char":"\ud83d\udd1e",fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],"char":"\ud83d\udcf5",fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"char":"\u2757",fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],"char":"\u2755",fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],"char":"\u2753",fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],"char":"\u2754",fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],"char":"\u203c\ufe0f",fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],"char":"\u2049\ufe0f",fitzpatrick_scale:!1,category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],"char":"\ud83d\udcaf",fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],"char":"\ud83d\udd05",fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],"char":"\ud83d\udd06",fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","spear"],"char":"\ud83d\udd31",fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],"char":"\u269c",fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],"char":"\u303d\ufe0f",fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],"char":"\u26a0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],"char":"\ud83d\udeb8",fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],"char":"\ud83d\udd30",fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],"char":"\u267b\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],"char":"\ud83c\ude2f",fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],"char":"\ud83d\udcb9",fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],"char":"\u2747\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],"char":"\u2733\ufe0f",fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],"char":"\u274e",fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],"char":"\u2705",fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],"char":"\ud83d\udca0",fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"char":"\ud83c\udf00",fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],"char":"\u27bf",fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],"char":"\ud83c\udf10",fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],"char":"\u24c2\ufe0f",fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],"char":"\ud83c\udfe7",fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],"char":"\ud83c\ude02\ufe0f",fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],"char":"\ud83d\udec2",fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],"char":"\ud83d\udec3",fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],"char":"\ud83d\udec4",fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],"char":"\ud83d\udec5",fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],"char":"\u267f",fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],"char":"\ud83d\udead",fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],"char":"\ud83d\udebe",fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],"char":"\ud83c\udd7f\ufe0f",fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],"char":"\ud83d\udeb0",fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],"char":"\ud83d\udeb9",fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],"char":"\ud83d\udeba",fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],"char":"\ud83d\udebc",fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],"char":"\ud83d\udebb",fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],"char":"\ud83d\udeae",fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],"char":"\ud83c\udfa6",fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"char":"\ud83d\udcf6",fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],"char":"\ud83c\ude01",fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],"char":"\ud83c\udd96",fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],"char":"\ud83c\udd97",fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],"char":"\ud83c\udd99",fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],"char":"\ud83c\udd92",fitzpatrick_scale:!1,category:"symbols"},"new":{keywords:["blue-square","words","start"],"char":"\ud83c\udd95",fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],"char":"\ud83c\udd93",fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],"char":"0\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],"char":"1\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],"char":"2\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],"char":"3\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],"char":"4\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],"char":"5\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],"char":"6\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],"char":"7\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],"char":"8\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],"char":"9\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],"char":"\ud83d\udd1f",fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],"char":"*\u20e3",fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],"char":"\ud83d\udd22",fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],"char":"\u23cf\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],"char":"\u25b6\ufe0f",fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],"char":"\u23f8",fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],"char":"\u23ed",fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],"char":"\u23f9",fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],"char":"\u23fa",fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],"char":"\u23ef",fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],"char":"\u23ee",fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],"char":"\u23e9",fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],"char":"\u23ea",fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],"char":"\ud83d\udd00",fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],"char":"\ud83d\udd01",fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],"char":"\ud83d\udd02",fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],"char":"\u25c0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],"char":"\ud83d\udd3c",fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],"char":"\ud83d\udd3d",fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],"char":"\u23eb",fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],"char":"\u23ec",fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],"char":"\u27a1\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],"char":"\u2b05\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],"char":"\u2b06\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],"char":"\u2b07\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],"char":"\u2197\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],"char":"\u2198\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],"char":"\u2199\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],"char":"\u2196\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],"char":"\u2195\ufe0f",fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],"char":"\u2194\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],"char":"\ud83d\udd04",fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],"char":"\u21aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],"char":"\u21a9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],"char":"\u2934\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],"char":"\u2935\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],"char":"#\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],"char":"\u2139\ufe0f",fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd24",fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd21",fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],"char":"\ud83d\udd20",fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],"char":"\ud83d\udd23",fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],"char":"\ud83c\udfb5",fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],"char":"\ud83c\udfb6",fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],"char":"\u3030\ufe0f",fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],"char":"\u27b0",fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],"char":"\u2714\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],"char":"\ud83d\udd03",fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],"char":"\u2795",fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],"char":"\u2796",fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],"char":"\u2797",fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],"char":"\u2716\ufe0f",fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],"char":"\u267e",fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],"char":"\ud83d\udcb2",fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],"char":"\ud83d\udcb1",fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],"char":"\xa9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],"char":"\xae\ufe0f",fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],"char":"\u2122\ufe0f",fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],"char":"\ud83d\udd1a",fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],"char":"\ud83d\udd19",fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],"char":"\ud83d\udd1b",fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],"char":"\ud83d\udd1d",fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],"char":"\ud83d\udd1c",fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],"char":"\u2611\ufe0f",fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],"char":"\ud83d\udd18",fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],"char":"\u26aa",fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],"char":"\u26ab",fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],"char":"\ud83d\udd34",fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],"char":"\ud83d\udd35",fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd38",fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd39",fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd36",fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd37",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],"char":"\ud83d\udd3a",fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],"char":"\u25aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],"char":"\u25ab\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],"char":"\u2b1b",fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],"char":"\u2b1c",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],"char":"\ud83d\udd3b",fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],"char":"\u25fc\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],"char":"\u25fb\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],"char":"\u25fe",fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],"char":"\u25fd",fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],"char":"\ud83d\udd32",fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],"char":"\ud83d\udd33",fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],"char":"\ud83d\udd08",fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],"char":"\ud83d\udd09",fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],"char":"\ud83d\udd0a",fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],"char":"\ud83d\udd07",fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],"char":"\ud83d\udce3",fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],"char":"\ud83d\udce2",fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],"char":"\ud83d\udd14",fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],"char":"\ud83d\udd15",fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],"char":"\ud83c\udccf",fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],"char":"\ud83c\udc04",fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],"char":"\u2660\ufe0f",fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],"char":"\u2663\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],"char":"\u2665\ufe0f",fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],"char":"\u2666\ufe0f",fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],"char":"\ud83c\udfb4",fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],"char":"\ud83d\udcad",fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],"char":"\ud83d\uddef",fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],"char":"\ud83d\udcac",fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],"char":"\ud83d\udde8",fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd50",fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd51",fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd52",fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd53",fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd54",fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],"char":"\ud83d\udd55",fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd56",fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd57",fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd58",fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd59",fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5a",fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],"char":"\ud83d\udd5b",fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5c",fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5d",fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5e",fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5f",fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd60",fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd61",fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd62",fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd63",fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd64",fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd65",fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd66",fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd67",fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],"char":"\ud83c\udde8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],"char":"\ud83c\uddea\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],"char":"\ud83c\uddeb\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],"char":"\ud83c\udde9\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],"char":"\ud83c\uddef\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],"char":"\ud83c\uddfd\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],"char":"\ud83c\uddf4\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],"char":"\ud83c\uddf6\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],"char":"\ud83c\uddec\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],"char":"\ud83c\uddfa\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],"char":"\ud83c\udff4\u200d\u2620\ufe0f",fitzpatrick_scale:!1,category:"flags"}}); \ No newline at end of file +window.tinymce.Resource.add("tinymce.plugins.emoticons",{grinning:{keywords:["face","smile","happy","joy",":D","grin"],"char":"\ud83d\ude00",fitzpatrick_scale:!1,category:"people"},grimacing:{keywords:["face","grimace","teeth"],"char":"\ud83d\ude2c",fitzpatrick_scale:!1,category:"people"},grin:{keywords:["face","happy","smile","joy","kawaii"],"char":"\ud83d\ude01",fitzpatrick_scale:!1,category:"people"},joy:{keywords:["face","cry","tears","weep","happy","happytears","haha"],"char":"\ud83d\ude02",fitzpatrick_scale:!1,category:"people"},rofl:{keywords:["face","rolling","floor","laughing","lol","haha"],"char":"\ud83e\udd23",fitzpatrick_scale:!1,category:"people"},partying:{keywords:["face","celebration","woohoo"],"char":"\ud83e\udd73",fitzpatrick_scale:!1,category:"people"},smiley:{keywords:["face","happy","joy","haha",":D",":)","smile","funny"],"char":"\ud83d\ude03",fitzpatrick_scale:!1,category:"people"},smile:{keywords:["face","happy","joy","funny","haha","laugh","like",":D",":)"],"char":"\ud83d\ude04",fitzpatrick_scale:!1,category:"people"},sweat_smile:{keywords:["face","hot","happy","laugh","sweat","smile","relief"],"char":"\ud83d\ude05",fitzpatrick_scale:!1,category:"people"},laughing:{keywords:["happy","joy","lol","satisfied","haha","face","glad","XD","laugh"],"char":"\ud83d\ude06",fitzpatrick_scale:!1,category:"people"},innocent:{keywords:["face","angel","heaven","halo"],"char":"\ud83d\ude07",fitzpatrick_scale:!1,category:"people"},wink:{keywords:["face","happy","mischievous","secret",";)","smile","eye"],"char":"\ud83d\ude09",fitzpatrick_scale:!1,category:"people"},blush:{keywords:["face","smile","happy","flushed","crush","embarrassed","shy","joy"],"char":"\ud83d\ude0a",fitzpatrick_scale:!1,category:"people"},slightly_smiling_face:{keywords:["face","smile"],"char":"\ud83d\ude42",fitzpatrick_scale:!1,category:"people"},upside_down_face:{keywords:["face","flipped","silly","smile"],"char":"\ud83d\ude43",fitzpatrick_scale:!1,category:"people"},relaxed:{keywords:["face","blush","massage","happiness"],"char":"\u263a\ufe0f",fitzpatrick_scale:!1,category:"people"},yum:{keywords:["happy","joy","tongue","smile","face","silly","yummy","nom","delicious","savouring"],"char":"\ud83d\ude0b",fitzpatrick_scale:!1,category:"people"},relieved:{keywords:["face","relaxed","phew","massage","happiness"],"char":"\ud83d\ude0c",fitzpatrick_scale:!1,category:"people"},heart_eyes:{keywords:["face","love","like","affection","valentines","infatuation","crush","heart"],"char":"\ud83d\ude0d",fitzpatrick_scale:!1,category:"people"},smiling_face_with_three_hearts:{keywords:["face","love","like","affection","valentines","infatuation","crush","hearts","adore"],"char":"\ud83e\udd70",fitzpatrick_scale:!1,category:"people"},kissing_heart:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude18",fitzpatrick_scale:!1,category:"people"},kissing:{keywords:["love","like","face","3","valentines","infatuation","kiss"],"char":"\ud83d\ude17",fitzpatrick_scale:!1,category:"people"},kissing_smiling_eyes:{keywords:["face","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude19",fitzpatrick_scale:!1,category:"people"},kissing_closed_eyes:{keywords:["face","love","like","affection","valentines","infatuation","kiss"],"char":"\ud83d\ude1a",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_winking_eye:{keywords:["face","prank","childish","playful","mischievous","smile","wink","tongue"],"char":"\ud83d\ude1c",fitzpatrick_scale:!1,category:"people"},zany:{keywords:["face","goofy","crazy"],"char":"\ud83e\udd2a",fitzpatrick_scale:!1,category:"people"},raised_eyebrow:{keywords:["face","distrust","scepticism","disapproval","disbelief","surprise"],"char":"\ud83e\udd28",fitzpatrick_scale:!1,category:"people"},monocle:{keywords:["face","stuffy","wealthy"],"char":"\ud83e\uddd0",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue_closed_eyes:{keywords:["face","prank","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1d",fitzpatrick_scale:!1,category:"people"},stuck_out_tongue:{keywords:["face","prank","childish","playful","mischievous","smile","tongue"],"char":"\ud83d\ude1b",fitzpatrick_scale:!1,category:"people"},money_mouth_face:{keywords:["face","rich","dollar","money"],"char":"\ud83e\udd11",fitzpatrick_scale:!1,category:"people"},nerd_face:{keywords:["face","nerdy","geek","dork"],"char":"\ud83e\udd13",fitzpatrick_scale:!1,category:"people"},sunglasses:{keywords:["face","cool","smile","summer","beach","sunglass"],"char":"\ud83d\ude0e",fitzpatrick_scale:!1,category:"people"},star_struck:{keywords:["face","smile","starry","eyes","grinning"],"char":"\ud83e\udd29",fitzpatrick_scale:!1,category:"people"},clown_face:{keywords:["face"],"char":"\ud83e\udd21",fitzpatrick_scale:!1,category:"people"},cowboy_hat_face:{keywords:["face","cowgirl","hat"],"char":"\ud83e\udd20",fitzpatrick_scale:!1,category:"people"},hugs:{keywords:["face","smile","hug"],"char":"\ud83e\udd17",fitzpatrick_scale:!1,category:"people"},smirk:{keywords:["face","smile","mean","prank","smug","sarcasm"],"char":"\ud83d\ude0f",fitzpatrick_scale:!1,category:"people"},no_mouth:{keywords:["face","hellokitty"],"char":"\ud83d\ude36",fitzpatrick_scale:!1,category:"people"},neutral_face:{keywords:["indifference","meh",":|","neutral"],"char":"\ud83d\ude10",fitzpatrick_scale:!1,category:"people"},expressionless:{keywords:["face","indifferent","-_-","meh","deadpan"],"char":"\ud83d\ude11",fitzpatrick_scale:!1,category:"people"},unamused:{keywords:["indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"],"char":"\ud83d\ude12",fitzpatrick_scale:!1,category:"people"},roll_eyes:{keywords:["face","eyeroll","frustrated"],"char":"\ud83d\ude44",fitzpatrick_scale:!1,category:"people"},thinking:{keywords:["face","hmmm","think","consider"],"char":"\ud83e\udd14",fitzpatrick_scale:!1,category:"people"},lying_face:{keywords:["face","lie","pinocchio"],"char":"\ud83e\udd25",fitzpatrick_scale:!1,category:"people"},hand_over_mouth:{keywords:["face","whoops","shock","surprise"],"char":"\ud83e\udd2d",fitzpatrick_scale:!1,category:"people"},shushing:{keywords:["face","quiet","shhh"],"char":"\ud83e\udd2b",fitzpatrick_scale:!1,category:"people"},symbols_over_mouth:{keywords:["face","swearing","cursing","cussing","profanity","expletive"],"char":"\ud83e\udd2c",fitzpatrick_scale:!1,category:"people"},exploding_head:{keywords:["face","shocked","mind","blown"],"char":"\ud83e\udd2f",fitzpatrick_scale:!1,category:"people"},flushed:{keywords:["face","blush","shy","flattered"],"char":"\ud83d\ude33",fitzpatrick_scale:!1,category:"people"},disappointed:{keywords:["face","sad","upset","depressed",":("],"char":"\ud83d\ude1e",fitzpatrick_scale:!1,category:"people"},worried:{keywords:["face","concern","nervous",":("],"char":"\ud83d\ude1f",fitzpatrick_scale:!1,category:"people"},angry:{keywords:["mad","face","annoyed","frustrated"],"char":"\ud83d\ude20",fitzpatrick_scale:!1,category:"people"},rage:{keywords:["angry","mad","hate","despise"],"char":"\ud83d\ude21",fitzpatrick_scale:!1,category:"people"},pensive:{keywords:["face","sad","depressed","upset"],"char":"\ud83d\ude14",fitzpatrick_scale:!1,category:"people"},confused:{keywords:["face","indifference","huh","weird","hmmm",":/"],"char":"\ud83d\ude15",fitzpatrick_scale:!1,category:"people"},slightly_frowning_face:{keywords:["face","frowning","disappointed","sad","upset"],"char":"\ud83d\ude41",fitzpatrick_scale:!1,category:"people"},frowning_face:{keywords:["face","sad","upset","frown"],"char":"\u2639",fitzpatrick_scale:!1,category:"people"},persevere:{keywords:["face","sick","no","upset","oops"],"char":"\ud83d\ude23",fitzpatrick_scale:!1,category:"people"},confounded:{keywords:["face","confused","sick","unwell","oops",":S"],"char":"\ud83d\ude16",fitzpatrick_scale:!1,category:"people"},tired_face:{keywords:["sick","whine","upset","frustrated"],"char":"\ud83d\ude2b",fitzpatrick_scale:!1,category:"people"},weary:{keywords:["face","tired","sleepy","sad","frustrated","upset"],"char":"\ud83d\ude29",fitzpatrick_scale:!1,category:"people"},pleading:{keywords:["face","begging","mercy"],"char":"\ud83e\udd7a",fitzpatrick_scale:!1,category:"people"},triumph:{keywords:["face","gas","phew","proud","pride"],"char":"\ud83d\ude24",fitzpatrick_scale:!1,category:"people"},open_mouth:{keywords:["face","surprise","impressed","wow","whoa",":O"],"char":"\ud83d\ude2e",fitzpatrick_scale:!1,category:"people"},scream:{keywords:["face","munch","scared","omg"],"char":"\ud83d\ude31",fitzpatrick_scale:!1,category:"people"},fearful:{keywords:["face","scared","terrified","nervous","oops","huh"],"char":"\ud83d\ude28",fitzpatrick_scale:!1,category:"people"},cold_sweat:{keywords:["face","nervous","sweat"],"char":"\ud83d\ude30",fitzpatrick_scale:!1,category:"people"},hushed:{keywords:["face","woo","shh"],"char":"\ud83d\ude2f",fitzpatrick_scale:!1,category:"people"},frowning:{keywords:["face","aw","what"],"char":"\ud83d\ude26",fitzpatrick_scale:!1,category:"people"},anguished:{keywords:["face","stunned","nervous"],"char":"\ud83d\ude27",fitzpatrick_scale:!1,category:"people"},cry:{keywords:["face","tears","sad","depressed","upset",":'("],"char":"\ud83d\ude22",fitzpatrick_scale:!1,category:"people"},disappointed_relieved:{keywords:["face","phew","sweat","nervous"],"char":"\ud83d\ude25",fitzpatrick_scale:!1,category:"people"},drooling_face:{keywords:["face"],"char":"\ud83e\udd24",fitzpatrick_scale:!1,category:"people"},sleepy:{keywords:["face","tired","rest","nap"],"char":"\ud83d\ude2a",fitzpatrick_scale:!1,category:"people"},sweat:{keywords:["face","hot","sad","tired","exercise"],"char":"\ud83d\ude13",fitzpatrick_scale:!1,category:"people"},hot:{keywords:["face","feverish","heat","red","sweating"],"char":"\ud83e\udd75",fitzpatrick_scale:!1,category:"people"},cold:{keywords:["face","blue","freezing","frozen","frostbite","icicles"],"char":"\ud83e\udd76",fitzpatrick_scale:!1,category:"people"},sob:{keywords:["face","cry","tears","sad","upset","depressed"],"char":"\ud83d\ude2d",fitzpatrick_scale:!1,category:"people"},dizzy_face:{keywords:["spent","unconscious","xox","dizzy"],"char":"\ud83d\ude35",fitzpatrick_scale:!1,category:"people"},astonished:{keywords:["face","xox","surprised","poisoned"],"char":"\ud83d\ude32",fitzpatrick_scale:!1,category:"people"},zipper_mouth_face:{keywords:["face","sealed","zipper","secret"],"char":"\ud83e\udd10",fitzpatrick_scale:!1,category:"people"},nauseated_face:{keywords:["face","vomit","gross","green","sick","throw up","ill"],"char":"\ud83e\udd22",fitzpatrick_scale:!1,category:"people"},sneezing_face:{keywords:["face","gesundheit","sneeze","sick","allergy"],"char":"\ud83e\udd27",fitzpatrick_scale:!1,category:"people"},vomiting:{keywords:["face","sick"],"char":"\ud83e\udd2e",fitzpatrick_scale:!1,category:"people"},mask:{keywords:["face","sick","ill","disease"],"char":"\ud83d\ude37",fitzpatrick_scale:!1,category:"people"},face_with_thermometer:{keywords:["sick","temperature","thermometer","cold","fever"],"char":"\ud83e\udd12",fitzpatrick_scale:!1,category:"people"},face_with_head_bandage:{keywords:["injured","clumsy","bandage","hurt"],"char":"\ud83e\udd15",fitzpatrick_scale:!1,category:"people"},woozy:{keywords:["face","dizzy","intoxicated","tipsy","wavy"],"char":"\ud83e\udd74",fitzpatrick_scale:!1,category:"people"},sleeping:{keywords:["face","tired","sleepy","night","zzz"],"char":"\ud83d\ude34",fitzpatrick_scale:!1,category:"people"},zzz:{keywords:["sleepy","tired","dream"],"char":"\ud83d\udca4",fitzpatrick_scale:!1,category:"people"},poop:{keywords:["hankey","shitface","fail","turd","shit"],"char":"\ud83d\udca9",fitzpatrick_scale:!1,category:"people"},smiling_imp:{keywords:["devil","horns"],"char":"\ud83d\ude08",fitzpatrick_scale:!1,category:"people"},imp:{keywords:["devil","angry","horns"],"char":"\ud83d\udc7f",fitzpatrick_scale:!1,category:"people"},japanese_ogre:{keywords:["monster","red","mask","halloween","scary","creepy","devil","demon","japanese","ogre"],"char":"\ud83d\udc79",fitzpatrick_scale:!1,category:"people"},japanese_goblin:{keywords:["red","evil","mask","monster","scary","creepy","japanese","goblin"],"char":"\ud83d\udc7a",fitzpatrick_scale:!1,category:"people"},skull:{keywords:["dead","skeleton","creepy","death"],"char":"\ud83d\udc80",fitzpatrick_scale:!1,category:"people"},ghost:{keywords:["halloween","spooky","scary"],"char":"\ud83d\udc7b",fitzpatrick_scale:!1,category:"people"},alien:{keywords:["UFO","paul","weird","outer_space"],"char":"\ud83d\udc7d",fitzpatrick_scale:!1,category:"people"},robot:{keywords:["computer","machine","bot"],"char":"\ud83e\udd16",fitzpatrick_scale:!1,category:"people"},smiley_cat:{keywords:["animal","cats","happy","smile"],"char":"\ud83d\ude3a",fitzpatrick_scale:!1,category:"people"},smile_cat:{keywords:["animal","cats","smile"],"char":"\ud83d\ude38",fitzpatrick_scale:!1,category:"people"},joy_cat:{keywords:["animal","cats","haha","happy","tears"],"char":"\ud83d\ude39",fitzpatrick_scale:!1,category:"people"},heart_eyes_cat:{keywords:["animal","love","like","affection","cats","valentines","heart"],"char":"\ud83d\ude3b",fitzpatrick_scale:!1,category:"people"},smirk_cat:{keywords:["animal","cats","smirk"],"char":"\ud83d\ude3c",fitzpatrick_scale:!1,category:"people"},kissing_cat:{keywords:["animal","cats","kiss"],"char":"\ud83d\ude3d",fitzpatrick_scale:!1,category:"people"},scream_cat:{keywords:["animal","cats","munch","scared","scream"],"char":"\ud83d\ude40",fitzpatrick_scale:!1,category:"people"},crying_cat_face:{keywords:["animal","tears","weep","sad","cats","upset","cry"],"char":"\ud83d\ude3f",fitzpatrick_scale:!1,category:"people"},pouting_cat:{keywords:["animal","cats"],"char":"\ud83d\ude3e",fitzpatrick_scale:!1,category:"people"},palms_up:{keywords:["hands","gesture","cupped","prayer"],"char":"\ud83e\udd32",fitzpatrick_scale:!0,category:"people"},raised_hands:{keywords:["gesture","hooray","yea","celebration","hands"],"char":"\ud83d\ude4c",fitzpatrick_scale:!0,category:"people"},clap:{keywords:["hands","praise","applause","congrats","yay"],"char":"\ud83d\udc4f",fitzpatrick_scale:!0,category:"people"},wave:{keywords:["hands","gesture","goodbye","solong","farewell","hello","hi","palm"],"char":"\ud83d\udc4b",fitzpatrick_scale:!0,category:"people"},call_me_hand:{keywords:["hands","gesture"],"char":"\ud83e\udd19",fitzpatrick_scale:!0,category:"people"},"+1":{keywords:["thumbsup","yes","awesome","good","agree","accept","cool","hand","like"],"char":"\ud83d\udc4d",fitzpatrick_scale:!0,category:"people"},"-1":{keywords:["thumbsdown","no","dislike","hand"],"char":"\ud83d\udc4e",fitzpatrick_scale:!0,category:"people"},facepunch:{keywords:["angry","violence","fist","hit","attack","hand"],"char":"\ud83d\udc4a",fitzpatrick_scale:!0,category:"people"},fist:{keywords:["fingers","hand","grasp"],"char":"\u270a",fitzpatrick_scale:!0,category:"people"},fist_left:{keywords:["hand","fistbump"],"char":"\ud83e\udd1b",fitzpatrick_scale:!0,category:"people"},fist_right:{keywords:["hand","fistbump"],"char":"\ud83e\udd1c",fitzpatrick_scale:!0,category:"people"},v:{keywords:["fingers","ohyeah","hand","peace","victory","two"],"char":"\u270c",fitzpatrick_scale:!0,category:"people"},ok_hand:{keywords:["fingers","limbs","perfect","ok","okay"],"char":"\ud83d\udc4c",fitzpatrick_scale:!0,category:"people"},raised_hand:{keywords:["fingers","stop","highfive","palm","ban"],"char":"\u270b",fitzpatrick_scale:!0,category:"people"},raised_back_of_hand:{keywords:["fingers","raised","backhand"],"char":"\ud83e\udd1a",fitzpatrick_scale:!0,category:"people"},open_hands:{keywords:["fingers","butterfly","hands","open"],"char":"\ud83d\udc50",fitzpatrick_scale:!0,category:"people"},muscle:{keywords:["arm","flex","hand","summer","strong","biceps"],"char":"\ud83d\udcaa",fitzpatrick_scale:!0,category:"people"},pray:{keywords:["please","hope","wish","namaste","highfive"],"char":"\ud83d\ude4f",fitzpatrick_scale:!0,category:"people"},foot:{keywords:["kick","stomp"],"char":"\ud83e\uddb6",fitzpatrick_scale:!0,category:"people"},leg:{keywords:["kick","limb"],"char":"\ud83e\uddb5",fitzpatrick_scale:!0,category:"people"},handshake:{keywords:["agreement","shake"],"char":"\ud83e\udd1d",fitzpatrick_scale:!1,category:"people"},point_up:{keywords:["hand","fingers","direction","up"],"char":"\u261d",fitzpatrick_scale:!0,category:"people"},point_up_2:{keywords:["fingers","hand","direction","up"],"char":"\ud83d\udc46",fitzpatrick_scale:!0,category:"people"},point_down:{keywords:["fingers","hand","direction","down"],"char":"\ud83d\udc47",fitzpatrick_scale:!0,category:"people"},point_left:{keywords:["direction","fingers","hand","left"],"char":"\ud83d\udc48",fitzpatrick_scale:!0,category:"people"},point_right:{keywords:["fingers","hand","direction","right"],"char":"\ud83d\udc49",fitzpatrick_scale:!0,category:"people"},fu:{keywords:["hand","fingers","rude","middle","flipping"],"char":"\ud83d\udd95",fitzpatrick_scale:!0,category:"people"},raised_hand_with_fingers_splayed:{keywords:["hand","fingers","palm"],"char":"\ud83d\udd90",fitzpatrick_scale:!0,category:"people"},love_you:{keywords:["hand","fingers","gesture"],"char":"\ud83e\udd1f",fitzpatrick_scale:!0,category:"people"},metal:{keywords:["hand","fingers","evil_eye","sign_of_horns","rock_on"],"char":"\ud83e\udd18",fitzpatrick_scale:!0,category:"people"},crossed_fingers:{keywords:["good","lucky"],"char":"\ud83e\udd1e",fitzpatrick_scale:!0,category:"people"},vulcan_salute:{keywords:["hand","fingers","spock","star trek"],"char":"\ud83d\udd96",fitzpatrick_scale:!0,category:"people"},writing_hand:{keywords:["lower_left_ballpoint_pen","stationery","write","compose"],"char":"\u270d",fitzpatrick_scale:!0,category:"people"},selfie:{keywords:["camera","phone"],"char":"\ud83e\udd33",fitzpatrick_scale:!0,category:"people"},nail_care:{keywords:["beauty","manicure","finger","fashion","nail"],"char":"\ud83d\udc85",fitzpatrick_scale:!0,category:"people"},lips:{keywords:["mouth","kiss"],"char":"\ud83d\udc44",fitzpatrick_scale:!1,category:"people"},tooth:{keywords:["teeth","dentist"],"char":"\ud83e\uddb7",fitzpatrick_scale:!1,category:"people"},tongue:{keywords:["mouth","playful"],"char":"\ud83d\udc45",fitzpatrick_scale:!1,category:"people"},ear:{keywords:["face","hear","sound","listen"],"char":"\ud83d\udc42",fitzpatrick_scale:!0,category:"people"},nose:{keywords:["smell","sniff"],"char":"\ud83d\udc43",fitzpatrick_scale:!0,category:"people"},eye:{keywords:["face","look","see","watch","stare"],"char":"\ud83d\udc41",fitzpatrick_scale:!1,category:"people"},eyes:{keywords:["look","watch","stalk","peek","see"],"char":"\ud83d\udc40",fitzpatrick_scale:!1,category:"people"},brain:{keywords:["smart","intelligent"],"char":"\ud83e\udde0",fitzpatrick_scale:!1,category:"people"},bust_in_silhouette:{keywords:["user","person","human"],"char":"\ud83d\udc64",fitzpatrick_scale:!1,category:"people"},busts_in_silhouette:{keywords:["user","person","human","group","team"],"char":"\ud83d\udc65",fitzpatrick_scale:!1,category:"people"},speaking_head:{keywords:["user","person","human","sing","say","talk"],"char":"\ud83d\udde3",fitzpatrick_scale:!1,category:"people"},baby:{keywords:["child","boy","girl","toddler"],"char":"\ud83d\udc76",fitzpatrick_scale:!0,category:"people"},child:{keywords:["gender-neutral","young"],"char":"\ud83e\uddd2",fitzpatrick_scale:!0,category:"people"},boy:{keywords:["man","male","guy","teenager"],"char":"\ud83d\udc66",fitzpatrick_scale:!0,category:"people"},girl:{keywords:["female","woman","teenager"],"char":"\ud83d\udc67",fitzpatrick_scale:!0,category:"people"},adult:{keywords:["gender-neutral","person"],"char":"\ud83e\uddd1",fitzpatrick_scale:!0,category:"people"},man:{keywords:["mustache","father","dad","guy","classy","sir","moustache"],"char":"\ud83d\udc68",fitzpatrick_scale:!0,category:"people"},woman:{keywords:["female","girls","lady"],"char":"\ud83d\udc69",fitzpatrick_scale:!0,category:"people"},blonde_woman:{keywords:["woman","female","girl","blonde","person"],"char":"\ud83d\udc71\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},blonde_man:{keywords:["man","male","boy","blonde","guy","person"],"char":"\ud83d\udc71",fitzpatrick_scale:!0,category:"people"},bearded_person:{keywords:["person","bewhiskered"],"char":"\ud83e\uddd4",fitzpatrick_scale:!0,category:"people"},older_adult:{keywords:["human","elder","senior","gender-neutral"],"char":"\ud83e\uddd3",fitzpatrick_scale:!0,category:"people"},older_man:{keywords:["human","male","men","old","elder","senior"],"char":"\ud83d\udc74",fitzpatrick_scale:!0,category:"people"},older_woman:{keywords:["human","female","women","lady","old","elder","senior"],"char":"\ud83d\udc75",fitzpatrick_scale:!0,category:"people"},man_with_gua_pi_mao:{keywords:["male","boy","chinese"],"char":"\ud83d\udc72",fitzpatrick_scale:!0,category:"people"},woman_with_headscarf:{keywords:["female","hijab","mantilla","tichel"],"char":"\ud83e\uddd5",fitzpatrick_scale:!0,category:"people"},woman_with_turban:{keywords:["female","indian","hinduism","arabs","woman"],"char":"\ud83d\udc73\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_with_turban:{keywords:["male","indian","hinduism","arabs"],"char":"\ud83d\udc73",fitzpatrick_scale:!0,category:"people"},policewoman:{keywords:["woman","police","law","legal","enforcement","arrest","911","female"],"char":"\ud83d\udc6e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},policeman:{keywords:["man","police","law","legal","enforcement","arrest","911"],"char":"\ud83d\udc6e",fitzpatrick_scale:!0,category:"people"},construction_worker_woman:{keywords:["female","human","wip","build","construction","worker","labor","woman"],"char":"\ud83d\udc77\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},construction_worker_man:{keywords:["male","human","wip","guy","build","construction","worker","labor"],"char":"\ud83d\udc77",fitzpatrick_scale:!0,category:"people"},guardswoman:{keywords:["uk","gb","british","female","royal","woman"],"char":"\ud83d\udc82\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},guardsman:{keywords:["uk","gb","british","male","guy","royal"],"char":"\ud83d\udc82",fitzpatrick_scale:!0,category:"people"},female_detective:{keywords:["human","spy","detective","female","woman"],"char":"\ud83d\udd75\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},male_detective:{keywords:["human","spy","detective"],"char":"\ud83d\udd75",fitzpatrick_scale:!0,category:"people"},woman_health_worker:{keywords:["doctor","nurse","therapist","healthcare","woman","human"],"char":"\ud83d\udc69\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},man_health_worker:{keywords:["doctor","nurse","therapist","healthcare","man","human"],"char":"\ud83d\udc68\u200d\u2695\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_farmer:{keywords:["rancher","gardener","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},man_farmer:{keywords:["rancher","gardener","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf3e",fitzpatrick_scale:!0,category:"people"},woman_cook:{keywords:["chef","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},man_cook:{keywords:["chef","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf73",fitzpatrick_scale:!0,category:"people"},woman_student:{keywords:["graduate","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},man_student:{keywords:["graduate","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udf93",fitzpatrick_scale:!0,category:"people"},woman_singer:{keywords:["rockstar","entertainer","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},man_singer:{keywords:["rockstar","entertainer","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa4",fitzpatrick_scale:!0,category:"people"},woman_teacher:{keywords:["instructor","professor","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},man_teacher:{keywords:["instructor","professor","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfeb",fitzpatrick_scale:!0,category:"people"},woman_factory_worker:{keywords:["assembly","industrial","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},man_factory_worker:{keywords:["assembly","industrial","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfed",fitzpatrick_scale:!0,category:"people"},woman_technologist:{keywords:["coder","developer","engineer","programmer","software","woman","human","laptop","computer"],"char":"\ud83d\udc69\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},man_technologist:{keywords:["coder","developer","engineer","programmer","software","man","human","laptop","computer"],"char":"\ud83d\udc68\u200d\ud83d\udcbb",fitzpatrick_scale:!0,category:"people"},woman_office_worker:{keywords:["business","manager","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},man_office_worker:{keywords:["business","manager","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udcbc",fitzpatrick_scale:!0,category:"people"},woman_mechanic:{keywords:["plumber","woman","human","wrench"],"char":"\ud83d\udc69\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},man_mechanic:{keywords:["plumber","man","human","wrench"],"char":"\ud83d\udc68\u200d\ud83d\udd27",fitzpatrick_scale:!0,category:"people"},woman_scientist:{keywords:["biologist","chemist","engineer","physicist","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},man_scientist:{keywords:["biologist","chemist","engineer","physicist","man","human"],"char":"\ud83d\udc68\u200d\ud83d\udd2c",fitzpatrick_scale:!0,category:"people"},woman_artist:{keywords:["painter","woman","human"],"char":"\ud83d\udc69\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},man_artist:{keywords:["painter","man","human"],"char":"\ud83d\udc68\u200d\ud83c\udfa8",fitzpatrick_scale:!0,category:"people"},woman_firefighter:{keywords:["fireman","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},man_firefighter:{keywords:["fireman","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude92",fitzpatrick_scale:!0,category:"people"},woman_pilot:{keywords:["aviator","plane","woman","human"],"char":"\ud83d\udc69\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},man_pilot:{keywords:["aviator","plane","man","human"],"char":"\ud83d\udc68\u200d\u2708\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_astronaut:{keywords:["space","rocket","woman","human"],"char":"\ud83d\udc69\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},man_astronaut:{keywords:["space","rocket","man","human"],"char":"\ud83d\udc68\u200d\ud83d\ude80",fitzpatrick_scale:!0,category:"people"},woman_judge:{keywords:["justice","court","woman","human"],"char":"\ud83d\udc69\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},man_judge:{keywords:["justice","court","man","human"],"char":"\ud83d\udc68\u200d\u2696\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_superhero:{keywords:["woman","female","good","heroine","superpowers"],"char":"\ud83e\uddb8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_superhero:{keywords:["man","male","good","hero","superpowers"],"char":"\ud83e\uddb8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_supervillain:{keywords:["woman","female","evil","bad","criminal","heroine","superpowers"],"char":"\ud83e\uddb9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_supervillain:{keywords:["man","male","evil","bad","criminal","hero","superpowers"],"char":"\ud83e\uddb9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},mrs_claus:{keywords:["woman","female","xmas","mother christmas"],"char":"\ud83e\udd36",fitzpatrick_scale:!0,category:"people"},santa:{keywords:["festival","man","male","xmas","father christmas"],"char":"\ud83c\udf85",fitzpatrick_scale:!0,category:"people"},sorceress:{keywords:["woman","female","mage","witch"],"char":"\ud83e\uddd9\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},wizard:{keywords:["man","male","mage","sorcerer"],"char":"\ud83e\uddd9\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_elf:{keywords:["woman","female"],"char":"\ud83e\udddd\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_elf:{keywords:["man","male"],"char":"\ud83e\udddd\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_vampire:{keywords:["woman","female"],"char":"\ud83e\udddb\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_vampire:{keywords:["man","male","dracula"],"char":"\ud83e\udddb\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_zombie:{keywords:["woman","female","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_zombie:{keywords:["man","male","dracula","undead","walking dead"],"char":"\ud83e\udddf\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},woman_genie:{keywords:["woman","female"],"char":"\ud83e\uddde\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"people"},man_genie:{keywords:["man","male"],"char":"\ud83e\uddde\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},mermaid:{keywords:["woman","female","merwoman","ariel"],"char":"\ud83e\udddc\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},merman:{keywords:["man","male","triton"],"char":"\ud83e\udddc\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_fairy:{keywords:["woman","female"],"char":"\ud83e\uddda\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_fairy:{keywords:["man","male"],"char":"\ud83e\uddda\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},angel:{keywords:["heaven","wings","halo"],"char":"\ud83d\udc7c",fitzpatrick_scale:!0,category:"people"},pregnant_woman:{keywords:["baby"],"char":"\ud83e\udd30",fitzpatrick_scale:!0,category:"people"},breastfeeding:{keywords:["nursing","baby"],"char":"\ud83e\udd31",fitzpatrick_scale:!0,category:"people"},princess:{keywords:["girl","woman","female","blond","crown","royal","queen"],"char":"\ud83d\udc78",fitzpatrick_scale:!0,category:"people"},prince:{keywords:["boy","man","male","crown","royal","king"],"char":"\ud83e\udd34",fitzpatrick_scale:!0,category:"people"},bride_with_veil:{keywords:["couple","marriage","wedding","woman","bride"],"char":"\ud83d\udc70",fitzpatrick_scale:!0,category:"people"},man_in_tuxedo:{keywords:["couple","marriage","wedding","groom"],"char":"\ud83e\udd35",fitzpatrick_scale:!0,category:"people"},running_woman:{keywords:["woman","walking","exercise","race","running","female"],"char":"\ud83c\udfc3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},running_man:{keywords:["man","walking","exercise","race","running"],"char":"\ud83c\udfc3",fitzpatrick_scale:!0,category:"people"},walking_woman:{keywords:["human","feet","steps","woman","female"],"char":"\ud83d\udeb6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},walking_man:{keywords:["human","feet","steps"],"char":"\ud83d\udeb6",fitzpatrick_scale:!0,category:"people"},dancer:{keywords:["female","girl","woman","fun"],"char":"\ud83d\udc83",fitzpatrick_scale:!0,category:"people"},man_dancing:{keywords:["male","boy","fun","dancer"],"char":"\ud83d\udd7a",fitzpatrick_scale:!0,category:"people"},dancing_women:{keywords:["female","bunny","women","girls"],"char":"\ud83d\udc6f",fitzpatrick_scale:!1,category:"people"},dancing_men:{keywords:["male","bunny","men","boys"],"char":"\ud83d\udc6f\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"people"},couple:{keywords:["pair","people","human","love","date","dating","like","affection","valentines","marriage"],"char":"\ud83d\udc6b",fitzpatrick_scale:!1,category:"people"},two_men_holding_hands:{keywords:["pair","couple","love","like","bromance","friendship","people","human"],"char":"\ud83d\udc6c",fitzpatrick_scale:!1,category:"people"},two_women_holding_hands:{keywords:["pair","friendship","couple","love","like","female","people","human"],"char":"\ud83d\udc6d",fitzpatrick_scale:!1,category:"people"},bowing_woman:{keywords:["woman","female","girl"],"char":"\ud83d\ude47\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},bowing_man:{keywords:["man","male","boy"],"char":"\ud83d\ude47",fitzpatrick_scale:!0,category:"people"},man_facepalming:{keywords:["man","male","boy","disbelief"],"char":"\ud83e\udd26\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_facepalming:{keywords:["woman","female","girl","disbelief"],"char":"\ud83e\udd26\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_shrugging:{keywords:["woman","female","girl","confused","indifferent","doubt"],"char":"\ud83e\udd37",fitzpatrick_scale:!0,category:"people"},man_shrugging:{keywords:["man","male","boy","confused","indifferent","doubt"],"char":"\ud83e\udd37\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},tipping_hand_woman:{keywords:["female","girl","woman","human","information"],"char":"\ud83d\udc81",fitzpatrick_scale:!0,category:"people"},tipping_hand_man:{keywords:["male","boy","man","human","information"],"char":"\ud83d\udc81\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},no_good_woman:{keywords:["female","girl","woman","nope"],"char":"\ud83d\ude45",fitzpatrick_scale:!0,category:"people"},no_good_man:{keywords:["male","boy","man","nope"],"char":"\ud83d\ude45\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},ok_woman:{keywords:["women","girl","female","pink","human","woman"],"char":"\ud83d\ude46",fitzpatrick_scale:!0,category:"people"},ok_man:{keywords:["men","boy","male","blue","human","man"],"char":"\ud83d\ude46\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},raising_hand_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4b",fitzpatrick_scale:!0,category:"people"},raising_hand_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4b\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},pouting_woman:{keywords:["female","girl","woman"],"char":"\ud83d\ude4e",fitzpatrick_scale:!0,category:"people"},pouting_man:{keywords:["male","boy","man"],"char":"\ud83d\ude4e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},frowning_woman:{keywords:["female","girl","woman","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d",fitzpatrick_scale:!0,category:"people"},frowning_man:{keywords:["male","boy","man","sad","depressed","discouraged","unhappy"],"char":"\ud83d\ude4d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},haircut_woman:{keywords:["female","girl","woman"],"char":"\ud83d\udc87",fitzpatrick_scale:!0,category:"people"},haircut_man:{keywords:["male","boy","man"],"char":"\ud83d\udc87\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},massage_woman:{keywords:["female","girl","woman","head"],"char":"\ud83d\udc86",fitzpatrick_scale:!0,category:"people"},massage_man:{keywords:["male","boy","man","head"],"char":"\ud83d\udc86\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},woman_in_steamy_room:{keywords:["female","woman","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"people"},man_in_steamy_room:{keywords:["male","man","spa","steamroom","sauna"],"char":"\ud83e\uddd6\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"people"},couple_with_heart_woman_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc91",fitzpatrick_scale:!1,category:"people"},couple_with_heart_woman_woman:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couple_with_heart_man_man:{keywords:["pair","love","like","affection","human","dating","valentines","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},couplekiss_man_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc8f",fitzpatrick_scale:!1,category:"people"},couplekiss_woman_woman:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc69\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc69",fitzpatrick_scale:!1,category:"people"},couplekiss_man_man:{keywords:["pair","valentines","love","like","dating","marriage"],"char":"\ud83d\udc68\u200d\u2764\ufe0f\u200d\ud83d\udc8b\u200d\ud83d\udc68",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy:{keywords:["home","parents","child","mom","dad","father","mother","people","human"],"char":"\ud83d\udc6a",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl:{keywords:["home","parents","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_woman_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_boy_boy:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_man_girl_girl:{keywords:["home","parents","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc69\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_woman_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_woman_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc69\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_boy:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl:{keywords:["home","parent","people","human","child"],"char":"\ud83d\udc68\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},family_man_girl_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_boy_boy:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc66\u200d\ud83d\udc66",fitzpatrick_scale:!1,category:"people"},family_man_girl_girl:{keywords:["home","parent","people","human","children"],"char":"\ud83d\udc68\u200d\ud83d\udc67\u200d\ud83d\udc67",fitzpatrick_scale:!1,category:"people"},yarn:{keywords:["ball","crochet","knit"],"char":"\ud83e\uddf6",fitzpatrick_scale:!1,category:"people"},thread:{keywords:["needle","sewing","spool","string"],"char":"\ud83e\uddf5",fitzpatrick_scale:!1,category:"people"},coat:{keywords:["jacket"],"char":"\ud83e\udde5",fitzpatrick_scale:!1,category:"people"},labcoat:{keywords:["doctor","experiment","scientist","chemist"],"char":"\ud83e\udd7c",fitzpatrick_scale:!1,category:"people"},womans_clothes:{keywords:["fashion","shopping_bags","female"],"char":"\ud83d\udc5a",fitzpatrick_scale:!1,category:"people"},tshirt:{keywords:["fashion","cloth","casual","shirt","tee"],"char":"\ud83d\udc55",fitzpatrick_scale:!1,category:"people"},jeans:{keywords:["fashion","shopping"],"char":"\ud83d\udc56",fitzpatrick_scale:!1,category:"people"},necktie:{keywords:["shirt","suitup","formal","fashion","cloth","business"],"char":"\ud83d\udc54",fitzpatrick_scale:!1,category:"people"},dress:{keywords:["clothes","fashion","shopping"],"char":"\ud83d\udc57",fitzpatrick_scale:!1,category:"people"},bikini:{keywords:["swimming","female","woman","girl","fashion","beach","summer"],"char":"\ud83d\udc59",fitzpatrick_scale:!1,category:"people"},kimono:{keywords:["dress","fashion","women","female","japanese"],"char":"\ud83d\udc58",fitzpatrick_scale:!1,category:"people"},lipstick:{keywords:["female","girl","fashion","woman"],"char":"\ud83d\udc84",fitzpatrick_scale:!1,category:"people"},kiss:{keywords:["face","lips","love","like","affection","valentines"],"char":"\ud83d\udc8b",fitzpatrick_scale:!1,category:"people"},footprints:{keywords:["feet","tracking","walking","beach"],"char":"\ud83d\udc63",fitzpatrick_scale:!1,category:"people"},flat_shoe:{keywords:["ballet","slip-on","slipper"],"char":"\ud83e\udd7f",fitzpatrick_scale:!1,category:"people"},high_heel:{keywords:["fashion","shoes","female","pumps","stiletto"],"char":"\ud83d\udc60",fitzpatrick_scale:!1,category:"people"},sandal:{keywords:["shoes","fashion","flip flops"],"char":"\ud83d\udc61",fitzpatrick_scale:!1,category:"people"},boot:{keywords:["shoes","fashion"],"char":"\ud83d\udc62",fitzpatrick_scale:!1,category:"people"},mans_shoe:{keywords:["fashion","male"],"char":"\ud83d\udc5e",fitzpatrick_scale:!1,category:"people"},athletic_shoe:{keywords:["shoes","sports","sneakers"],"char":"\ud83d\udc5f",fitzpatrick_scale:!1,category:"people"},hiking_boot:{keywords:["backpacking","camping","hiking"],"char":"\ud83e\udd7e",fitzpatrick_scale:!1,category:"people"},socks:{keywords:["stockings","clothes"],"char":"\ud83e\udde6",fitzpatrick_scale:!1,category:"people"},gloves:{keywords:["hands","winter","clothes"],"char":"\ud83e\udde4",fitzpatrick_scale:!1,category:"people"},scarf:{keywords:["neck","winter","clothes"],"char":"\ud83e\udde3",fitzpatrick_scale:!1,category:"people"},womans_hat:{keywords:["fashion","accessories","female","lady","spring"],"char":"\ud83d\udc52",fitzpatrick_scale:!1,category:"people"},tophat:{keywords:["magic","gentleman","classy","circus"],"char":"\ud83c\udfa9",fitzpatrick_scale:!1,category:"people"},billed_hat:{keywords:["cap","baseball"],"char":"\ud83e\udde2",fitzpatrick_scale:!1,category:"people"},rescue_worker_helmet:{keywords:["construction","build"],"char":"\u26d1",fitzpatrick_scale:!1,category:"people"},mortar_board:{keywords:["school","college","degree","university","graduation","cap","hat","legal","learn","education"],"char":"\ud83c\udf93",fitzpatrick_scale:!1,category:"people"},crown:{keywords:["king","kod","leader","royalty","lord"],"char":"\ud83d\udc51",fitzpatrick_scale:!1,category:"people"},school_satchel:{keywords:["student","education","bag","backpack"],"char":"\ud83c\udf92",fitzpatrick_scale:!1,category:"people"},luggage:{keywords:["packing","travel"],"char":"\ud83e\uddf3",fitzpatrick_scale:!1,category:"people"},pouch:{keywords:["bag","accessories","shopping"],"char":"\ud83d\udc5d",fitzpatrick_scale:!1,category:"people"},purse:{keywords:["fashion","accessories","money","sales","shopping"],"char":"\ud83d\udc5b",fitzpatrick_scale:!1,category:"people"},handbag:{keywords:["fashion","accessory","accessories","shopping"],"char":"\ud83d\udc5c",fitzpatrick_scale:!1,category:"people"},briefcase:{keywords:["business","documents","work","law","legal","job","career"],"char":"\ud83d\udcbc",fitzpatrick_scale:!1,category:"people"},eyeglasses:{keywords:["fashion","accessories","eyesight","nerdy","dork","geek"],"char":"\ud83d\udc53",fitzpatrick_scale:!1,category:"people"},dark_sunglasses:{keywords:["face","cool","accessories"],"char":"\ud83d\udd76",fitzpatrick_scale:!1,category:"people"},goggles:{keywords:["eyes","protection","safety"],"char":"\ud83e\udd7d",fitzpatrick_scale:!1,category:"people"},ring:{keywords:["wedding","propose","marriage","valentines","diamond","fashion","jewelry","gem","engagement"],"char":"\ud83d\udc8d",fitzpatrick_scale:!1,category:"people"},closed_umbrella:{keywords:["weather","rain","drizzle"],"char":"\ud83c\udf02",fitzpatrick_scale:!1,category:"people"},dog:{keywords:["animal","friend","nature","woof","puppy","pet","faithful"],"char":"\ud83d\udc36",fitzpatrick_scale:!1,category:"animals_and_nature"},cat:{keywords:["animal","meow","nature","pet","kitten"],"char":"\ud83d\udc31",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse:{keywords:["animal","nature","cheese_wedge","rodent"],"char":"\ud83d\udc2d",fitzpatrick_scale:!1,category:"animals_and_nature"},hamster:{keywords:["animal","nature"],"char":"\ud83d\udc39",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit:{keywords:["animal","nature","pet","spring","magic","bunny"],"char":"\ud83d\udc30",fitzpatrick_scale:!1,category:"animals_and_nature"},fox_face:{keywords:["animal","nature","face"],"char":"\ud83e\udd8a",fitzpatrick_scale:!1,category:"animals_and_nature"},bear:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3b",fitzpatrick_scale:!1,category:"animals_and_nature"},panda_face:{keywords:["animal","nature","panda"],"char":"\ud83d\udc3c",fitzpatrick_scale:!1,category:"animals_and_nature"},koala:{keywords:["animal","nature"],"char":"\ud83d\udc28",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger:{keywords:["animal","cat","danger","wild","nature","roar"],"char":"\ud83d\udc2f",fitzpatrick_scale:!1,category:"animals_and_nature"},lion:{keywords:["animal","nature"],"char":"\ud83e\udd81",fitzpatrick_scale:!1,category:"animals_and_nature"},cow:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc2e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig:{keywords:["animal","oink","nature"],"char":"\ud83d\udc37",fitzpatrick_scale:!1,category:"animals_and_nature"},pig_nose:{keywords:["animal","oink"],"char":"\ud83d\udc3d",fitzpatrick_scale:!1,category:"animals_and_nature"},frog:{keywords:["animal","nature","croak","toad"],"char":"\ud83d\udc38",fitzpatrick_scale:!1,category:"animals_and_nature"},squid:{keywords:["animal","nature","ocean","sea"],"char":"\ud83e\udd91",fitzpatrick_scale:!1,category:"animals_and_nature"},octopus:{keywords:["animal","creature","ocean","sea","nature","beach"],"char":"\ud83d\udc19",fitzpatrick_scale:!1,category:"animals_and_nature"},shrimp:{keywords:["animal","ocean","nature","seafood"],"char":"\ud83e\udd90",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey_face:{keywords:["animal","nature","circus"],"char":"\ud83d\udc35",fitzpatrick_scale:!1,category:"animals_and_nature"},gorilla:{keywords:["animal","nature","circus"],"char":"\ud83e\udd8d",fitzpatrick_scale:!1,category:"animals_and_nature"},see_no_evil:{keywords:["monkey","animal","nature","haha"],"char":"\ud83d\ude48",fitzpatrick_scale:!1,category:"animals_and_nature"},hear_no_evil:{keywords:["animal","monkey","nature"],"char":"\ud83d\ude49",fitzpatrick_scale:!1,category:"animals_and_nature"},speak_no_evil:{keywords:["monkey","animal","nature","omg"],"char":"\ud83d\ude4a",fitzpatrick_scale:!1,category:"animals_and_nature"},monkey:{keywords:["animal","nature","banana","circus"],"char":"\ud83d\udc12",fitzpatrick_scale:!1,category:"animals_and_nature"},chicken:{keywords:["animal","cluck","nature","bird"],"char":"\ud83d\udc14",fitzpatrick_scale:!1,category:"animals_and_nature"},penguin:{keywords:["animal","nature"],"char":"\ud83d\udc27",fitzpatrick_scale:!1,category:"animals_and_nature"},bird:{keywords:["animal","nature","fly","tweet","spring"],"char":"\ud83d\udc26",fitzpatrick_scale:!1,category:"animals_and_nature"},baby_chick:{keywords:["animal","chicken","bird"],"char":"\ud83d\udc24",fitzpatrick_scale:!1,category:"animals_and_nature"},hatching_chick:{keywords:["animal","chicken","egg","born","baby","bird"],"char":"\ud83d\udc23",fitzpatrick_scale:!1,category:"animals_and_nature"},hatched_chick:{keywords:["animal","chicken","baby","bird"],"char":"\ud83d\udc25",fitzpatrick_scale:!1,category:"animals_and_nature"},duck:{keywords:["animal","nature","bird","mallard"],"char":"\ud83e\udd86",fitzpatrick_scale:!1,category:"animals_and_nature"},eagle:{keywords:["animal","nature","bird"],"char":"\ud83e\udd85",fitzpatrick_scale:!1,category:"animals_and_nature"},owl:{keywords:["animal","nature","bird","hoot"],"char":"\ud83e\udd89",fitzpatrick_scale:!1,category:"animals_and_nature"},bat:{keywords:["animal","nature","blind","vampire"],"char":"\ud83e\udd87",fitzpatrick_scale:!1,category:"animals_and_nature"},wolf:{keywords:["animal","nature","wild"],"char":"\ud83d\udc3a",fitzpatrick_scale:!1,category:"animals_and_nature"},boar:{keywords:["animal","nature"],"char":"\ud83d\udc17",fitzpatrick_scale:!1,category:"animals_and_nature"},horse:{keywords:["animal","brown","nature"],"char":"\ud83d\udc34",fitzpatrick_scale:!1,category:"animals_and_nature"},unicorn:{keywords:["animal","nature","mystical"],"char":"\ud83e\udd84",fitzpatrick_scale:!1,category:"animals_and_nature"},honeybee:{keywords:["animal","insect","nature","bug","spring","honey"],"char":"\ud83d\udc1d",fitzpatrick_scale:!1,category:"animals_and_nature"},bug:{keywords:["animal","insect","nature","worm"],"char":"\ud83d\udc1b",fitzpatrick_scale:!1,category:"animals_and_nature"},butterfly:{keywords:["animal","insect","nature","caterpillar"],"char":"\ud83e\udd8b",fitzpatrick_scale:!1,category:"animals_and_nature"},snail:{keywords:["slow","animal","shell"],"char":"\ud83d\udc0c",fitzpatrick_scale:!1,category:"animals_and_nature"},beetle:{keywords:["animal","insect","nature","ladybug"],"char":"\ud83d\udc1e",fitzpatrick_scale:!1,category:"animals_and_nature"},ant:{keywords:["animal","insect","nature","bug"],"char":"\ud83d\udc1c",fitzpatrick_scale:!1,category:"animals_and_nature"},grasshopper:{keywords:["animal","cricket","chirp"],"char":"\ud83e\udd97",fitzpatrick_scale:!1,category:"animals_and_nature"},spider:{keywords:["animal","arachnid"],"char":"\ud83d\udd77",fitzpatrick_scale:!1,category:"animals_and_nature"},scorpion:{keywords:["animal","arachnid"],"char":"\ud83e\udd82",fitzpatrick_scale:!1,category:"animals_and_nature"},crab:{keywords:["animal","crustacean"],"char":"\ud83e\udd80",fitzpatrick_scale:!1,category:"animals_and_nature"},snake:{keywords:["animal","evil","nature","hiss","python"],"char":"\ud83d\udc0d",fitzpatrick_scale:!1,category:"animals_and_nature"},lizard:{keywords:["animal","nature","reptile"],"char":"\ud83e\udd8e",fitzpatrick_scale:!1,category:"animals_and_nature"},"t-rex":{keywords:["animal","nature","dinosaur","tyrannosaurus","extinct"],"char":"\ud83e\udd96",fitzpatrick_scale:!1,category:"animals_and_nature"},sauropod:{keywords:["animal","nature","dinosaur","brachiosaurus","brontosaurus","diplodocus","extinct"],"char":"\ud83e\udd95",fitzpatrick_scale:!1,category:"animals_and_nature"},turtle:{keywords:["animal","slow","nature","tortoise"],"char":"\ud83d\udc22",fitzpatrick_scale:!1,category:"animals_and_nature"},tropical_fish:{keywords:["animal","swim","ocean","beach","nemo"],"char":"\ud83d\udc20",fitzpatrick_scale:!1,category:"animals_and_nature"},fish:{keywords:["animal","food","nature"],"char":"\ud83d\udc1f",fitzpatrick_scale:!1,category:"animals_and_nature"},blowfish:{keywords:["animal","nature","food","sea","ocean"],"char":"\ud83d\udc21",fitzpatrick_scale:!1,category:"animals_and_nature"},dolphin:{keywords:["animal","nature","fish","sea","ocean","flipper","fins","beach"],"char":"\ud83d\udc2c",fitzpatrick_scale:!1,category:"animals_and_nature"},shark:{keywords:["animal","nature","fish","sea","ocean","jaws","fins","beach"],"char":"\ud83e\udd88",fitzpatrick_scale:!1,category:"animals_and_nature"},whale:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc33",fitzpatrick_scale:!1,category:"animals_and_nature"},whale2:{keywords:["animal","nature","sea","ocean"],"char":"\ud83d\udc0b",fitzpatrick_scale:!1,category:"animals_and_nature"},crocodile:{keywords:["animal","nature","reptile","lizard","alligator"],"char":"\ud83d\udc0a",fitzpatrick_scale:!1,category:"animals_and_nature"},leopard:{keywords:["animal","nature"],"char":"\ud83d\udc06",fitzpatrick_scale:!1,category:"animals_and_nature"},zebra:{keywords:["animal","nature","stripes","safari"],"char":"\ud83e\udd93",fitzpatrick_scale:!1,category:"animals_and_nature"},tiger2:{keywords:["animal","nature","roar"],"char":"\ud83d\udc05",fitzpatrick_scale:!1,category:"animals_and_nature"},water_buffalo:{keywords:["animal","nature","ox","cow"],"char":"\ud83d\udc03",fitzpatrick_scale:!1,category:"animals_and_nature"},ox:{keywords:["animal","cow","beef"],"char":"\ud83d\udc02",fitzpatrick_scale:!1,category:"animals_and_nature"},cow2:{keywords:["beef","ox","animal","nature","moo","milk"],"char":"\ud83d\udc04",fitzpatrick_scale:!1,category:"animals_and_nature"},deer:{keywords:["animal","nature","horns","venison"],"char":"\ud83e\udd8c",fitzpatrick_scale:!1,category:"animals_and_nature"},dromedary_camel:{keywords:["animal","hot","desert","hump"],"char":"\ud83d\udc2a",fitzpatrick_scale:!1,category:"animals_and_nature"},camel:{keywords:["animal","nature","hot","desert","hump"],"char":"\ud83d\udc2b",fitzpatrick_scale:!1,category:"animals_and_nature"},giraffe:{keywords:["animal","nature","spots","safari"],"char":"\ud83e\udd92",fitzpatrick_scale:!1,category:"animals_and_nature"},elephant:{keywords:["animal","nature","nose","th","circus"],"char":"\ud83d\udc18",fitzpatrick_scale:!1,category:"animals_and_nature"},rhinoceros:{keywords:["animal","nature","horn"],"char":"\ud83e\udd8f",fitzpatrick_scale:!1,category:"animals_and_nature"},goat:{keywords:["animal","nature"],"char":"\ud83d\udc10",fitzpatrick_scale:!1,category:"animals_and_nature"},ram:{keywords:["animal","sheep","nature"],"char":"\ud83d\udc0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sheep:{keywords:["animal","nature","wool","shipit"],"char":"\ud83d\udc11",fitzpatrick_scale:!1,category:"animals_and_nature"},racehorse:{keywords:["animal","gamble","luck"],"char":"\ud83d\udc0e",fitzpatrick_scale:!1,category:"animals_and_nature"},pig2:{keywords:["animal","nature"],"char":"\ud83d\udc16",fitzpatrick_scale:!1,category:"animals_and_nature"},rat:{keywords:["animal","mouse","rodent"],"char":"\ud83d\udc00",fitzpatrick_scale:!1,category:"animals_and_nature"},mouse2:{keywords:["animal","nature","rodent"],"char":"\ud83d\udc01",fitzpatrick_scale:!1,category:"animals_and_nature"},rooster:{keywords:["animal","nature","chicken"],"char":"\ud83d\udc13",fitzpatrick_scale:!1,category:"animals_and_nature"},turkey:{keywords:["animal","bird"],"char":"\ud83e\udd83",fitzpatrick_scale:!1,category:"animals_and_nature"},dove:{keywords:["animal","bird"],"char":"\ud83d\udd4a",fitzpatrick_scale:!1,category:"animals_and_nature"},dog2:{keywords:["animal","nature","friend","doge","pet","faithful"],"char":"\ud83d\udc15",fitzpatrick_scale:!1,category:"animals_and_nature"},poodle:{keywords:["dog","animal","101","nature","pet"],"char":"\ud83d\udc29",fitzpatrick_scale:!1,category:"animals_and_nature"},cat2:{keywords:["animal","meow","pet","cats"],"char":"\ud83d\udc08",fitzpatrick_scale:!1,category:"animals_and_nature"},rabbit2:{keywords:["animal","nature","pet","magic","spring"],"char":"\ud83d\udc07",fitzpatrick_scale:!1,category:"animals_and_nature"},chipmunk:{keywords:["animal","nature","rodent","squirrel"],"char":"\ud83d\udc3f",fitzpatrick_scale:!1,category:"animals_and_nature"},hedgehog:{keywords:["animal","nature","spiny"],"char":"\ud83e\udd94",fitzpatrick_scale:!1,category:"animals_and_nature"},raccoon:{keywords:["animal","nature"],"char":"\ud83e\udd9d",fitzpatrick_scale:!1,category:"animals_and_nature"},llama:{keywords:["animal","nature","alpaca"],"char":"\ud83e\udd99",fitzpatrick_scale:!1,category:"animals_and_nature"},hippopotamus:{keywords:["animal","nature"],"char":"\ud83e\udd9b",fitzpatrick_scale:!1,category:"animals_and_nature"},kangaroo:{keywords:["animal","nature","australia","joey","hop","marsupial"],"char":"\ud83e\udd98",fitzpatrick_scale:!1,category:"animals_and_nature"},badger:{keywords:["animal","nature","honey"],"char":"\ud83e\udda1",fitzpatrick_scale:!1,category:"animals_and_nature"},swan:{keywords:["animal","nature","bird"],"char":"\ud83e\udda2",fitzpatrick_scale:!1,category:"animals_and_nature"},peacock:{keywords:["animal","nature","peahen","bird"],"char":"\ud83e\udd9a",fitzpatrick_scale:!1,category:"animals_and_nature"},parrot:{keywords:["animal","nature","bird","pirate","talk"],"char":"\ud83e\udd9c",fitzpatrick_scale:!1,category:"animals_and_nature"},lobster:{keywords:["animal","nature","bisque","claws","seafood"],"char":"\ud83e\udd9e",fitzpatrick_scale:!1,category:"animals_and_nature"},mosquito:{keywords:["animal","nature","insect","malaria"],"char":"\ud83e\udd9f",fitzpatrick_scale:!1,category:"animals_and_nature"},paw_prints:{keywords:["animal","tracking","footprints","dog","cat","pet","feet"],"char":"\ud83d\udc3e",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc09",fitzpatrick_scale:!1,category:"animals_and_nature"},dragon_face:{keywords:["animal","myth","nature","chinese","green"],"char":"\ud83d\udc32",fitzpatrick_scale:!1,category:"animals_and_nature"},cactus:{keywords:["vegetable","plant","nature"],"char":"\ud83c\udf35",fitzpatrick_scale:!1,category:"animals_and_nature"},christmas_tree:{keywords:["festival","vacation","december","xmas","celebration"],"char":"\ud83c\udf84",fitzpatrick_scale:!1,category:"animals_and_nature"},evergreen_tree:{keywords:["plant","nature"],"char":"\ud83c\udf32",fitzpatrick_scale:!1,category:"animals_and_nature"},deciduous_tree:{keywords:["plant","nature"],"char":"\ud83c\udf33",fitzpatrick_scale:!1,category:"animals_and_nature"},palm_tree:{keywords:["plant","vegetable","nature","summer","beach","mojito","tropical"],"char":"\ud83c\udf34",fitzpatrick_scale:!1,category:"animals_and_nature"},seedling:{keywords:["plant","nature","grass","lawn","spring"],"char":"\ud83c\udf31",fitzpatrick_scale:!1,category:"animals_and_nature"},herb:{keywords:["vegetable","plant","medicine","weed","grass","lawn"],"char":"\ud83c\udf3f",fitzpatrick_scale:!1,category:"animals_and_nature"},shamrock:{keywords:["vegetable","plant","nature","irish","clover"],"char":"\u2618",fitzpatrick_scale:!1,category:"animals_and_nature"},four_leaf_clover:{keywords:["vegetable","plant","nature","lucky","irish"],"char":"\ud83c\udf40",fitzpatrick_scale:!1,category:"animals_and_nature"},bamboo:{keywords:["plant","nature","vegetable","panda","pine_decoration"],"char":"\ud83c\udf8d",fitzpatrick_scale:!1,category:"animals_and_nature"},tanabata_tree:{keywords:["plant","nature","branch","summer"],"char":"\ud83c\udf8b",fitzpatrick_scale:!1,category:"animals_and_nature"},leaves:{keywords:["nature","plant","tree","vegetable","grass","lawn","spring"],"char":"\ud83c\udf43",fitzpatrick_scale:!1,category:"animals_and_nature"},fallen_leaf:{keywords:["nature","plant","vegetable","leaves"],"char":"\ud83c\udf42",fitzpatrick_scale:!1,category:"animals_and_nature"},maple_leaf:{keywords:["nature","plant","vegetable","ca","fall"],"char":"\ud83c\udf41",fitzpatrick_scale:!1,category:"animals_and_nature"},ear_of_rice:{keywords:["nature","plant"],"char":"\ud83c\udf3e",fitzpatrick_scale:!1,category:"animals_and_nature"},hibiscus:{keywords:["plant","vegetable","flowers","beach"],"char":"\ud83c\udf3a",fitzpatrick_scale:!1,category:"animals_and_nature"},sunflower:{keywords:["nature","plant","fall"],"char":"\ud83c\udf3b",fitzpatrick_scale:!1,category:"animals_and_nature"},rose:{keywords:["flowers","valentines","love","spring"],"char":"\ud83c\udf39",fitzpatrick_scale:!1,category:"animals_and_nature"},wilted_flower:{keywords:["plant","nature","flower"],"char":"\ud83e\udd40",fitzpatrick_scale:!1,category:"animals_and_nature"},tulip:{keywords:["flowers","plant","nature","summer","spring"],"char":"\ud83c\udf37",fitzpatrick_scale:!1,category:"animals_and_nature"},blossom:{keywords:["nature","flowers","yellow"],"char":"\ud83c\udf3c",fitzpatrick_scale:!1,category:"animals_and_nature"},cherry_blossom:{keywords:["nature","plant","spring","flower"],"char":"\ud83c\udf38",fitzpatrick_scale:!1,category:"animals_and_nature"},bouquet:{keywords:["flowers","nature","spring"],"char":"\ud83d\udc90",fitzpatrick_scale:!1,category:"animals_and_nature"},mushroom:{keywords:["plant","vegetable"],"char":"\ud83c\udf44",fitzpatrick_scale:!1,category:"animals_and_nature"},chestnut:{keywords:["food","squirrel"],"char":"\ud83c\udf30",fitzpatrick_scale:!1,category:"animals_and_nature"},jack_o_lantern:{keywords:["halloween","light","pumpkin","creepy","fall"],"char":"\ud83c\udf83",fitzpatrick_scale:!1,category:"animals_and_nature"},shell:{keywords:["nature","sea","beach"],"char":"\ud83d\udc1a",fitzpatrick_scale:!1,category:"animals_and_nature"},spider_web:{keywords:["animal","insect","arachnid","silk"],"char":"\ud83d\udd78",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_americas:{keywords:["globe","world","USA","international"],"char":"\ud83c\udf0e",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_africa:{keywords:["globe","world","international"],"char":"\ud83c\udf0d",fitzpatrick_scale:!1,category:"animals_and_nature"},earth_asia:{keywords:["globe","world","east","international"],"char":"\ud83c\udf0f",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon:{keywords:["nature","yellow","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf15",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_gibbous_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"],"char":"\ud83c\udf16",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf17",fitzpatrick_scale:!1,category:"animals_and_nature"},waning_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf18",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf11",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_crescent_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf12",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf13",fitzpatrick_scale:!1,category:"animals_and_nature"},waxing_gibbous_moon:{keywords:["nature","night","sky","gray","twilight","planet","space","evening","sleep"],"char":"\ud83c\udf14",fitzpatrick_scale:!1,category:"animals_and_nature"},new_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1a",fitzpatrick_scale:!1,category:"animals_and_nature"},full_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1d",fitzpatrick_scale:!1,category:"animals_and_nature"},first_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1b",fitzpatrick_scale:!1,category:"animals_and_nature"},last_quarter_moon_with_face:{keywords:["nature","twilight","planet","space","night","evening","sleep"],"char":"\ud83c\udf1c",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_with_face:{keywords:["nature","morning","sky"],"char":"\ud83c\udf1e",fitzpatrick_scale:!1,category:"animals_and_nature"},crescent_moon:{keywords:["night","sleep","sky","evening","magic"],"char":"\ud83c\udf19",fitzpatrick_scale:!1,category:"animals_and_nature"},star:{keywords:["night","yellow"],"char":"\u2b50",fitzpatrick_scale:!1,category:"animals_and_nature"},star2:{keywords:["night","sparkle","awesome","good","magic"],"char":"\ud83c\udf1f",fitzpatrick_scale:!1,category:"animals_and_nature"},dizzy:{keywords:["star","sparkle","shoot","magic"],"char":"\ud83d\udcab",fitzpatrick_scale:!1,category:"animals_and_nature"},sparkles:{keywords:["stars","shine","shiny","cool","awesome","good","magic"],"char":"\u2728",fitzpatrick_scale:!1,category:"animals_and_nature"},comet:{keywords:["space"],"char":"\u2604",fitzpatrick_scale:!1,category:"animals_and_nature"},sunny:{keywords:["weather","nature","brightness","summer","beach","spring"],"char":"\u2600\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_small_cloud:{keywords:["weather"],"char":"\ud83c\udf24",fitzpatrick_scale:!1,category:"animals_and_nature"},partly_sunny:{keywords:["weather","nature","cloudy","morning","fall","spring"],"char":"\u26c5",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_large_cloud:{keywords:["weather"],"char":"\ud83c\udf25",fitzpatrick_scale:!1,category:"animals_and_nature"},sun_behind_rain_cloud:{keywords:["weather"],"char":"\ud83c\udf26",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud:{keywords:["weather","sky"],"char":"\u2601\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_rain:{keywords:["weather"],"char":"\ud83c\udf27",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning_and_rain:{keywords:["weather","lightning"],"char":"\u26c8",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_lightning:{keywords:["weather","thunder"],"char":"\ud83c\udf29",fitzpatrick_scale:!1,category:"animals_and_nature"},zap:{keywords:["thunder","weather","lightning bolt","fast"],"char":"\u26a1",fitzpatrick_scale:!1,category:"animals_and_nature"},fire:{keywords:["hot","cook","flame"],"char":"\ud83d\udd25",fitzpatrick_scale:!1,category:"animals_and_nature"},boom:{keywords:["bomb","explode","explosion","collision","blown"],"char":"\ud83d\udca5",fitzpatrick_scale:!1,category:"animals_and_nature"},snowflake:{keywords:["winter","season","cold","weather","christmas","xmas"],"char":"\u2744\ufe0f",fitzpatrick_scale:!1,category:"animals_and_nature"},cloud_with_snow:{keywords:["weather"],"char":"\ud83c\udf28",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman:{keywords:["winter","season","cold","weather","christmas","xmas","frozen","without_snow"],"char":"\u26c4",fitzpatrick_scale:!1,category:"animals_and_nature"},snowman_with_snow:{keywords:["winter","season","cold","weather","christmas","xmas","frozen"],"char":"\u2603",fitzpatrick_scale:!1,category:"animals_and_nature"},wind_face:{keywords:["gust","air"],"char":"\ud83c\udf2c",fitzpatrick_scale:!1,category:"animals_and_nature"},dash:{keywords:["wind","air","fast","shoo","fart","smoke","puff"],"char":"\ud83d\udca8",fitzpatrick_scale:!1,category:"animals_and_nature"},tornado:{keywords:["weather","cyclone","twister"],"char":"\ud83c\udf2a",fitzpatrick_scale:!1,category:"animals_and_nature"},fog:{keywords:["weather"],"char":"\ud83c\udf2b",fitzpatrick_scale:!1,category:"animals_and_nature"},open_umbrella:{keywords:["weather","spring"],"char":"\u2602",fitzpatrick_scale:!1,category:"animals_and_nature"},umbrella:{keywords:["rainy","weather","spring"],"char":"\u2614",fitzpatrick_scale:!1,category:"animals_and_nature"},droplet:{keywords:["water","drip","faucet","spring"],"char":"\ud83d\udca7",fitzpatrick_scale:!1,category:"animals_and_nature"},sweat_drops:{keywords:["water","drip","oops"],"char":"\ud83d\udca6",fitzpatrick_scale:!1,category:"animals_and_nature"},ocean:{keywords:["sea","water","wave","nature","tsunami","disaster"],"char":"\ud83c\udf0a",fitzpatrick_scale:!1,category:"animals_and_nature"},green_apple:{keywords:["fruit","nature"],"char":"\ud83c\udf4f",fitzpatrick_scale:!1,category:"food_and_drink"},apple:{keywords:["fruit","mac","school"],"char":"\ud83c\udf4e",fitzpatrick_scale:!1,category:"food_and_drink"},laytp:{keywords:["fruit","nature","food"],"char":"\ud83c\udf50",fitzpatrick_scale:!1,category:"food_and_drink"},tangerine:{keywords:["food","fruit","nature","orange"],"char":"\ud83c\udf4a",fitzpatrick_scale:!1,category:"food_and_drink"},lemon:{keywords:["fruit","nature"],"char":"\ud83c\udf4b",fitzpatrick_scale:!1,category:"food_and_drink"},banana:{keywords:["fruit","food","monkey"],"char":"\ud83c\udf4c",fitzpatrick_scale:!1,category:"food_and_drink"},watermelon:{keywords:["fruit","food","picnic","summer"],"char":"\ud83c\udf49",fitzpatrick_scale:!1,category:"food_and_drink"},grapes:{keywords:["fruit","food","wine"],"char":"\ud83c\udf47",fitzpatrick_scale:!1,category:"food_and_drink"},strawberry:{keywords:["fruit","food","nature"],"char":"\ud83c\udf53",fitzpatrick_scale:!1,category:"food_and_drink"},melon:{keywords:["fruit","nature","food"],"char":"\ud83c\udf48",fitzpatrick_scale:!1,category:"food_and_drink"},cherries:{keywords:["food","fruit"],"char":"\ud83c\udf52",fitzpatrick_scale:!1,category:"food_and_drink"},peach:{keywords:["fruit","nature","food"],"char":"\ud83c\udf51",fitzpatrick_scale:!1,category:"food_and_drink"},pineapple:{keywords:["fruit","nature","food"],"char":"\ud83c\udf4d",fitzpatrick_scale:!1,category:"food_and_drink"},coconut:{keywords:["fruit","nature","food","palm"],"char":"\ud83e\udd65",fitzpatrick_scale:!1,category:"food_and_drink"},kiwi_fruit:{keywords:["fruit","food"],"char":"\ud83e\udd5d",fitzpatrick_scale:!1,category:"food_and_drink"},mango:{keywords:["fruit","food","tropical"],"char":"\ud83e\udd6d",fitzpatrick_scale:!1,category:"food_and_drink"},avocado:{keywords:["fruit","food"],"char":"\ud83e\udd51",fitzpatrick_scale:!1,category:"food_and_drink"},broccoli:{keywords:["fruit","food","vegetable"],"char":"\ud83e\udd66",fitzpatrick_scale:!1,category:"food_and_drink"},tomato:{keywords:["fruit","vegetable","nature","food"],"char":"\ud83c\udf45",fitzpatrick_scale:!1,category:"food_and_drink"},eggplant:{keywords:["vegetable","nature","food","aubergine"],"char":"\ud83c\udf46",fitzpatrick_scale:!1,category:"food_and_drink"},cucumber:{keywords:["fruit","food","pickle"],"char":"\ud83e\udd52",fitzpatrick_scale:!1,category:"food_and_drink"},carrot:{keywords:["vegetable","food","orange"],"char":"\ud83e\udd55",fitzpatrick_scale:!1,category:"food_and_drink"},hot_pepper:{keywords:["food","spicy","chilli","chili"],"char":"\ud83c\udf36",fitzpatrick_scale:!1,category:"food_and_drink"},potato:{keywords:["food","tuber","vegatable","starch"],"char":"\ud83e\udd54",fitzpatrick_scale:!1,category:"food_and_drink"},corn:{keywords:["food","vegetable","plant"],"char":"\ud83c\udf3d",fitzpatrick_scale:!1,category:"food_and_drink"},leafy_greens:{keywords:["food","vegetable","plant","bok choy","cabbage","kale","lettuce"],"char":"\ud83e\udd6c",fitzpatrick_scale:!1,category:"food_and_drink"},sweet_potato:{keywords:["food","nature"],"char":"\ud83c\udf60",fitzpatrick_scale:!1,category:"food_and_drink"},peanuts:{keywords:["food","nut"],"char":"\ud83e\udd5c",fitzpatrick_scale:!1,category:"food_and_drink"},honey_pot:{keywords:["bees","sweet","kitchen"],"char":"\ud83c\udf6f",fitzpatrick_scale:!1,category:"food_and_drink"},croissant:{keywords:["food","bread","french"],"char":"\ud83e\udd50",fitzpatrick_scale:!1,category:"food_and_drink"},bread:{keywords:["food","wheat","breakfast","toast"],"char":"\ud83c\udf5e",fitzpatrick_scale:!1,category:"food_and_drink"},baguette_bread:{keywords:["food","bread","french"],"char":"\ud83e\udd56",fitzpatrick_scale:!1,category:"food_and_drink"},bagel:{keywords:["food","bread","bakery","schmear"],"char":"\ud83e\udd6f",fitzpatrick_scale:!1,category:"food_and_drink"},pretzel:{keywords:["food","bread","twisted"],"char":"\ud83e\udd68",fitzpatrick_scale:!1,category:"food_and_drink"},cheese:{keywords:["food","chadder"],"char":"\ud83e\uddc0",fitzpatrick_scale:!1,category:"food_and_drink"},egg:{keywords:["food","chicken","breakfast"],"char":"\ud83e\udd5a",fitzpatrick_scale:!1,category:"food_and_drink"},bacon:{keywords:["food","breakfast","pork","pig","meat"],"char":"\ud83e\udd53",fitzpatrick_scale:!1,category:"food_and_drink"},steak:{keywords:["food","cow","meat","cut","chop","lambchop","porkchop"],"char":"\ud83e\udd69",fitzpatrick_scale:!1,category:"food_and_drink"},pancakes:{keywords:["food","breakfast","flapjacks","hotcakes"],"char":"\ud83e\udd5e",fitzpatrick_scale:!1,category:"food_and_drink"},poultry_leg:{keywords:["food","meat","drumstick","bird","chicken","turkey"],"char":"\ud83c\udf57",fitzpatrick_scale:!1,category:"food_and_drink"},meat_on_bone:{keywords:["good","food","drumstick"],"char":"\ud83c\udf56",fitzpatrick_scale:!1,category:"food_and_drink"},bone:{keywords:["skeleton"],"char":"\ud83e\uddb4",fitzpatrick_scale:!1,category:"food_and_drink"},fried_shrimp:{keywords:["food","animal","appetizer","summer"],"char":"\ud83c\udf64",fitzpatrick_scale:!1,category:"food_and_drink"},fried_egg:{keywords:["food","breakfast","kitchen","egg"],"char":"\ud83c\udf73",fitzpatrick_scale:!1,category:"food_and_drink"},hamburger:{keywords:["meat","fast food","beef","cheeseburger","mcdonalds","burger king"],"char":"\ud83c\udf54",fitzpatrick_scale:!1,category:"food_and_drink"},fries:{keywords:["chips","snack","fast food"],"char":"\ud83c\udf5f",fitzpatrick_scale:!1,category:"food_and_drink"},stuffed_flatbread:{keywords:["food","flatbread","stuffed","gyro"],"char":"\ud83e\udd59",fitzpatrick_scale:!1,category:"food_and_drink"},hotdog:{keywords:["food","frankfurter"],"char":"\ud83c\udf2d",fitzpatrick_scale:!1,category:"food_and_drink"},pizza:{keywords:["food","party"],"char":"\ud83c\udf55",fitzpatrick_scale:!1,category:"food_and_drink"},sandwich:{keywords:["food","lunch","bread"],"char":"\ud83e\udd6a",fitzpatrick_scale:!1,category:"food_and_drink"},canned_food:{keywords:["food","soup"],"char":"\ud83e\udd6b",fitzpatrick_scale:!1,category:"food_and_drink"},spaghetti:{keywords:["food","italian","noodle"],"char":"\ud83c\udf5d",fitzpatrick_scale:!1,category:"food_and_drink"},taco:{keywords:["food","mexican"],"char":"\ud83c\udf2e",fitzpatrick_scale:!1,category:"food_and_drink"},burrito:{keywords:["food","mexican"],"char":"\ud83c\udf2f",fitzpatrick_scale:!1,category:"food_and_drink"},green_salad:{keywords:["food","healthy","lettuce"],"char":"\ud83e\udd57",fitzpatrick_scale:!1,category:"food_and_drink"},shallow_pan_of_food:{keywords:["food","cooking","casserole","paella"],"char":"\ud83e\udd58",fitzpatrick_scale:!1,category:"food_and_drink"},ramen:{keywords:["food","japanese","noodle","chopsticks"],"char":"\ud83c\udf5c",fitzpatrick_scale:!1,category:"food_and_drink"},stew:{keywords:["food","meat","soup"],"char":"\ud83c\udf72",fitzpatrick_scale:!1,category:"food_and_drink"},fish_cake:{keywords:["food","japan","sea","beach","narutomaki","pink","swirl","kamaboko","surimi","ramen"],"char":"\ud83c\udf65",fitzpatrick_scale:!1,category:"food_and_drink"},fortune_cookie:{keywords:["food","prophecy"],"char":"\ud83e\udd60",fitzpatrick_scale:!1,category:"food_and_drink"},sushi:{keywords:["food","fish","japanese","rice"],"char":"\ud83c\udf63",fitzpatrick_scale:!1,category:"food_and_drink"},bento:{keywords:["food","japanese","box"],"char":"\ud83c\udf71",fitzpatrick_scale:!1,category:"food_and_drink"},curry:{keywords:["food","spicy","hot","indian"],"char":"\ud83c\udf5b",fitzpatrick_scale:!1,category:"food_and_drink"},rice_ball:{keywords:["food","japanese"],"char":"\ud83c\udf59",fitzpatrick_scale:!1,category:"food_and_drink"},rice:{keywords:["food","china","asian"],"char":"\ud83c\udf5a",fitzpatrick_scale:!1,category:"food_and_drink"},rice_cracker:{keywords:["food","japanese"],"char":"\ud83c\udf58",fitzpatrick_scale:!1,category:"food_and_drink"},oden:{keywords:["food","japanese"],"char":"\ud83c\udf62",fitzpatrick_scale:!1,category:"food_and_drink"},dango:{keywords:["food","dessert","sweet","japanese","barbecue","meat"],"char":"\ud83c\udf61",fitzpatrick_scale:!1,category:"food_and_drink"},shaved_ice:{keywords:["hot","dessert","summer"],"char":"\ud83c\udf67",fitzpatrick_scale:!1,category:"food_and_drink"},ice_cream:{keywords:["food","hot","dessert"],"char":"\ud83c\udf68",fitzpatrick_scale:!1,category:"food_and_drink"},icecream:{keywords:["food","hot","dessert","summer"],"char":"\ud83c\udf66",fitzpatrick_scale:!1,category:"food_and_drink"},pie:{keywords:["food","dessert","pastry"],"char":"\ud83e\udd67",fitzpatrick_scale:!1,category:"food_and_drink"},cake:{keywords:["food","dessert"],"char":"\ud83c\udf70",fitzpatrick_scale:!1,category:"food_and_drink"},cupcake:{keywords:["food","dessert","bakery","sweet"],"char":"\ud83e\uddc1",fitzpatrick_scale:!1,category:"food_and_drink"},moon_cake:{keywords:["food","autumn"],"char":"\ud83e\udd6e",fitzpatrick_scale:!1,category:"food_and_drink"},birthday:{keywords:["food","dessert","cake"],"char":"\ud83c\udf82",fitzpatrick_scale:!1,category:"food_and_drink"},custard:{keywords:["dessert","food"],"char":"\ud83c\udf6e",fitzpatrick_scale:!1,category:"food_and_drink"},candy:{keywords:["snack","dessert","sweet","lolly"],"char":"\ud83c\udf6c",fitzpatrick_scale:!1,category:"food_and_drink"},lollipop:{keywords:["food","snack","candy","sweet"],"char":"\ud83c\udf6d",fitzpatrick_scale:!1,category:"food_and_drink"},chocolate_bar:{keywords:["food","snack","dessert","sweet"],"char":"\ud83c\udf6b",fitzpatrick_scale:!1,category:"food_and_drink"},popcorn:{keywords:["food","movie theater","films","snack"],"char":"\ud83c\udf7f",fitzpatrick_scale:!1,category:"food_and_drink"},dumpling:{keywords:["food","empanada","pierogi","potsticker"],"char":"\ud83e\udd5f",fitzpatrick_scale:!1,category:"food_and_drink"},doughnut:{keywords:["food","dessert","snack","sweet","donut"],"char":"\ud83c\udf69",fitzpatrick_scale:!1,category:"food_and_drink"},cookie:{keywords:["food","snack","oreo","chocolate","sweet","dessert"],"char":"\ud83c\udf6a",fitzpatrick_scale:!1,category:"food_and_drink"},milk_glass:{keywords:["beverage","drink","cow"],"char":"\ud83e\udd5b",fitzpatrick_scale:!1,category:"food_and_drink"},beer:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7a",fitzpatrick_scale:!1,category:"food_and_drink"},beers:{keywords:["relax","beverage","drink","drunk","party","pub","summer","alcohol","booze"],"char":"\ud83c\udf7b",fitzpatrick_scale:!1,category:"food_and_drink"},clinking_glasses:{keywords:["beverage","drink","party","alcohol","celebrate","cheers","wine","champagne","toast"],"char":"\ud83e\udd42",fitzpatrick_scale:!1,category:"food_and_drink"},wine_glass:{keywords:["drink","beverage","drunk","alcohol","booze"],"char":"\ud83c\udf77",fitzpatrick_scale:!1,category:"food_and_drink"},tumbler_glass:{keywords:["drink","beverage","drunk","alcohol","liquor","booze","bourbon","scotch","whisky","glass","shot"],"char":"\ud83e\udd43",fitzpatrick_scale:!1,category:"food_and_drink"},cocktail:{keywords:["drink","drunk","alcohol","beverage","booze","mojito"],"char":"\ud83c\udf78",fitzpatrick_scale:!1,category:"food_and_drink"},tropical_drink:{keywords:["beverage","cocktail","summer","beach","alcohol","booze","mojito"],"char":"\ud83c\udf79",fitzpatrick_scale:!1,category:"food_and_drink"},champagne:{keywords:["drink","wine","bottle","celebration"],"char":"\ud83c\udf7e",fitzpatrick_scale:!1,category:"food_and_drink"},sake:{keywords:["wine","drink","drunk","beverage","japanese","alcohol","booze"],"char":"\ud83c\udf76",fitzpatrick_scale:!1,category:"food_and_drink"},tea:{keywords:["drink","bowl","breakfast","green","british"],"char":"\ud83c\udf75",fitzpatrick_scale:!1,category:"food_and_drink"},cup_with_straw:{keywords:["drink","soda"],"char":"\ud83e\udd64",fitzpatrick_scale:!1,category:"food_and_drink"},coffee:{keywords:["beverage","caffeine","latte","espresso"],"char":"\u2615",fitzpatrick_scale:!1,category:"food_and_drink"},baby_bottle:{keywords:["food","container","milk"],"char":"\ud83c\udf7c",fitzpatrick_scale:!1,category:"food_and_drink"},salt:{keywords:["condiment","shaker"],"char":"\ud83e\uddc2",fitzpatrick_scale:!1,category:"food_and_drink"},spoon:{keywords:["cutlery","kitchen","tableware"],"char":"\ud83e\udd44",fitzpatrick_scale:!1,category:"food_and_drink"},fork_and_knife:{keywords:["cutlery","kitchen"],"char":"\ud83c\udf74",fitzpatrick_scale:!1,category:"food_and_drink"},plate_with_cutlery:{keywords:["food","eat","meal","lunch","dinner","restaurant"],"char":"\ud83c\udf7d",fitzpatrick_scale:!1,category:"food_and_drink"},bowl_with_spoon:{keywords:["food","breakfast","cereal","oatmeal","porridge"],"char":"\ud83e\udd63",fitzpatrick_scale:!1,category:"food_and_drink"},takeout_box:{keywords:["food","leftovers"],"char":"\ud83e\udd61",fitzpatrick_scale:!1,category:"food_and_drink"},chopsticks:{keywords:["food"],"char":"\ud83e\udd62",fitzpatrick_scale:!1,category:"food_and_drink"},soccer:{keywords:["sports","football"],"char":"\u26bd",fitzpatrick_scale:!1,category:"activity"},basketball:{keywords:["sports","balls","NBA"],"char":"\ud83c\udfc0",fitzpatrick_scale:!1,category:"activity"},football:{keywords:["sports","balls","NFL"],"char":"\ud83c\udfc8",fitzpatrick_scale:!1,category:"activity"},baseball:{keywords:["sports","balls"],"char":"\u26be",fitzpatrick_scale:!1,category:"activity"},softball:{keywords:["sports","balls"],"char":"\ud83e\udd4e",fitzpatrick_scale:!1,category:"activity"},tennis:{keywords:["sports","balls","green"],"char":"\ud83c\udfbe",fitzpatrick_scale:!1,category:"activity"},volleyball:{keywords:["sports","balls"],"char":"\ud83c\udfd0",fitzpatrick_scale:!1,category:"activity"},rugby_football:{keywords:["sports","team"],"char":"\ud83c\udfc9",fitzpatrick_scale:!1,category:"activity"},flying_disc:{keywords:["sports","frisbee","ultimate"],"char":"\ud83e\udd4f",fitzpatrick_scale:!1,category:"activity"},"8ball":{keywords:["pool","hobby","game","luck","magic"],"char":"\ud83c\udfb1",fitzpatrick_scale:!1,category:"activity"},golf:{keywords:["sports","business","flag","hole","summer"],"char":"\u26f3",fitzpatrick_scale:!1,category:"activity"},golfing_woman:{keywords:["sports","business","woman","female"],"char":"\ud83c\udfcc\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},golfing_man:{keywords:["sports","business"],"char":"\ud83c\udfcc",fitzpatrick_scale:!0,category:"activity"},ping_pong:{keywords:["sports","pingpong"],"char":"\ud83c\udfd3",fitzpatrick_scale:!1,category:"activity"},badminton:{keywords:["sports"],"char":"\ud83c\udff8",fitzpatrick_scale:!1,category:"activity"},goal_net:{keywords:["sports"],"char":"\ud83e\udd45",fitzpatrick_scale:!1,category:"activity"},ice_hockey:{keywords:["sports"],"char":"\ud83c\udfd2",fitzpatrick_scale:!1,category:"activity"},field_hockey:{keywords:["sports"],"char":"\ud83c\udfd1",fitzpatrick_scale:!1,category:"activity"},lacrosse:{keywords:["sports","ball","stick"],"char":"\ud83e\udd4d",fitzpatrick_scale:!1,category:"activity"},cricket:{keywords:["sports"],"char":"\ud83c\udfcf",fitzpatrick_scale:!1,category:"activity"},ski:{keywords:["sports","winter","cold","snow"],"char":"\ud83c\udfbf",fitzpatrick_scale:!1,category:"activity"},skier:{keywords:["sports","winter","snow"],"char":"\u26f7",fitzpatrick_scale:!1,category:"activity"},snowboarder:{keywords:["sports","winter"],"char":"\ud83c\udfc2",fitzpatrick_scale:!0,category:"activity"},person_fencing:{keywords:["sports","fencing","sword"],"char":"\ud83e\udd3a",fitzpatrick_scale:!1,category:"activity"},women_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2640\ufe0f",fitzpatrick_scale:!1,category:"activity"},men_wrestling:{keywords:["sports","wrestlers"],"char":"\ud83e\udd3c\u200d\u2642\ufe0f",fitzpatrick_scale:!1,category:"activity"},woman_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_cartwheeling:{keywords:["gymnastics"],"char":"\ud83e\udd38\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_handball:{keywords:["sports"],"char":"\ud83e\udd3e\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},ice_skate:{keywords:["sports"],"char":"\u26f8",fitzpatrick_scale:!1,category:"activity"},curling_stone:{keywords:["sports"],"char":"\ud83e\udd4c",fitzpatrick_scale:!1,category:"activity"},skateboard:{keywords:["board"],"char":"\ud83d\udef9",fitzpatrick_scale:!1,category:"activity"},sled:{keywords:["sleigh","luge","toboggan"],"char":"\ud83d\udef7",fitzpatrick_scale:!1,category:"activity"},bow_and_arrow:{keywords:["sports"],"char":"\ud83c\udff9",fitzpatrick_scale:!1,category:"activity"},fishing_pole_and_fish:{keywords:["food","hobby","summer"],"char":"\ud83c\udfa3",fitzpatrick_scale:!1,category:"activity"},boxing_glove:{keywords:["sports","fighting"],"char":"\ud83e\udd4a",fitzpatrick_scale:!1,category:"activity"},martial_arts_uniform:{keywords:["judo","karate","taekwondo"],"char":"\ud83e\udd4b",fitzpatrick_scale:!1,category:"activity"},rowing_woman:{keywords:["sports","hobby","water","ship","woman","female"],"char":"\ud83d\udea3\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},rowing_man:{keywords:["sports","hobby","water","ship"],"char":"\ud83d\udea3",fitzpatrick_scale:!0,category:"activity"},climbing_woman:{keywords:["sports","hobby","woman","female","rock"],"char":"\ud83e\uddd7\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},climbing_man:{keywords:["sports","hobby","man","male","rock"],"char":"\ud83e\uddd7\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_woman:{keywords:["sports","exercise","human","athlete","water","summer","woman","female"],"char":"\ud83c\udfca\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},swimming_man:{keywords:["sports","exercise","human","athlete","water","summer"],"char":"\ud83c\udfca",fitzpatrick_scale:!0,category:"activity"},woman_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_playing_water_polo:{keywords:["sports","pool"],"char":"\ud83e\udd3d\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},woman_in_lotus_position:{keywords:["woman","female","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_in_lotus_position:{keywords:["man","male","meditation","yoga","serenity","zen","mindfulness"],"char":"\ud83e\uddd8\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_woman:{keywords:["sports","ocean","sea","summer","beach","woman","female"],"char":"\ud83c\udfc4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},surfing_man:{keywords:["sports","ocean","sea","summer","beach"],"char":"\ud83c\udfc4",fitzpatrick_scale:!0,category:"activity"},bath:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec0",fitzpatrick_scale:!0,category:"activity"},basketball_woman:{keywords:["sports","human","woman","female"],"char":"\u26f9\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},basketball_man:{keywords:["sports","human"],"char":"\u26f9",fitzpatrick_scale:!0,category:"activity"},weight_lifting_woman:{keywords:["sports","training","exercise","woman","female"],"char":"\ud83c\udfcb\ufe0f\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},weight_lifting_man:{keywords:["sports","training","exercise"],"char":"\ud83c\udfcb",fitzpatrick_scale:!0,category:"activity"},biking_woman:{keywords:["sports","bike","exercise","hipster","woman","female"],"char":"\ud83d\udeb4\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},biking_man:{keywords:["sports","bike","exercise","hipster"],"char":"\ud83d\udeb4",fitzpatrick_scale:!0,category:"activity"},mountain_biking_woman:{keywords:["transportation","sports","human","race","bike","woman","female"],"char":"\ud83d\udeb5\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},mountain_biking_man:{keywords:["transportation","sports","human","race","bike"],"char":"\ud83d\udeb5",fitzpatrick_scale:!0,category:"activity"},horse_racing:{keywords:["animal","betting","competition","gambling","luck"],"char":"\ud83c\udfc7",fitzpatrick_scale:!0,category:"activity"},business_suit_levitating:{keywords:["suit","business","levitate","hover","jump"],"char":"\ud83d\udd74",fitzpatrick_scale:!0,category:"activity"},trophy:{keywords:["win","award","contest","place","ftw","ceremony"],"char":"\ud83c\udfc6",fitzpatrick_scale:!1,category:"activity"},running_shirt_with_sash:{keywords:["play","pageant"],"char":"\ud83c\udfbd",fitzpatrick_scale:!1,category:"activity"},medal_sports:{keywords:["award","winning"],"char":"\ud83c\udfc5",fitzpatrick_scale:!1,category:"activity"},medal_military:{keywords:["award","winning","army"],"char":"\ud83c\udf96",fitzpatrick_scale:!1,category:"activity"},"1st_place_medal":{keywords:["award","winning","first"],"char":"\ud83e\udd47",fitzpatrick_scale:!1,category:"activity"},"2nd_place_medal":{keywords:["award","second"],"char":"\ud83e\udd48",fitzpatrick_scale:!1,category:"activity"},"3rd_place_medal":{keywords:["award","third"],"char":"\ud83e\udd49",fitzpatrick_scale:!1,category:"activity"},reminder_ribbon:{keywords:["sports","cause","support","awareness"],"char":"\ud83c\udf97",fitzpatrick_scale:!1,category:"activity"},rosette:{keywords:["flower","decoration","military"],"char":"\ud83c\udff5",fitzpatrick_scale:!1,category:"activity"},ticket:{keywords:["event","concert","pass"],"char":"\ud83c\udfab",fitzpatrick_scale:!1,category:"activity"},tickets:{keywords:["sports","concert","entrance"],"char":"\ud83c\udf9f",fitzpatrick_scale:!1,category:"activity"},performing_arts:{keywords:["acting","theater","drama"],"char":"\ud83c\udfad",fitzpatrick_scale:!1,category:"activity"},art:{keywords:["design","paint","draw","colors"],"char":"\ud83c\udfa8",fitzpatrick_scale:!1,category:"activity"},circus_tent:{keywords:["festival","carnival","party"],"char":"\ud83c\udfaa",fitzpatrick_scale:!1,category:"activity"},woman_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2640\ufe0f",fitzpatrick_scale:!0,category:"activity"},man_juggling:{keywords:["juggle","balance","skill","multitask"],"char":"\ud83e\udd39\u200d\u2642\ufe0f",fitzpatrick_scale:!0,category:"activity"},microphone:{keywords:["sound","music","PA","sing","talkshow"],"char":"\ud83c\udfa4",fitzpatrick_scale:!1,category:"activity"},headphones:{keywords:["music","score","gadgets"],"char":"\ud83c\udfa7",fitzpatrick_scale:!1,category:"activity"},musical_score:{keywords:["treble","clef","compose"],"char":"\ud83c\udfbc",fitzpatrick_scale:!1,category:"activity"},musical_keyboard:{keywords:["piano","instrument","compose"],"char":"\ud83c\udfb9",fitzpatrick_scale:!1,category:"activity"},drum:{keywords:["music","instrument","drumsticks","snare"],"char":"\ud83e\udd41",fitzpatrick_scale:!1,category:"activity"},saxophone:{keywords:["music","instrument","jazz","blues"],"char":"\ud83c\udfb7",fitzpatrick_scale:!1,category:"activity"},trumpet:{keywords:["music","brass"],"char":"\ud83c\udfba",fitzpatrick_scale:!1,category:"activity"},guitar:{keywords:["music","instrument"],"char":"\ud83c\udfb8",fitzpatrick_scale:!1,category:"activity"},violin:{keywords:["music","instrument","orchestra","symphony"],"char":"\ud83c\udfbb",fitzpatrick_scale:!1,category:"activity"},clapper:{keywords:["movie","film","record"],"char":"\ud83c\udfac",fitzpatrick_scale:!1,category:"activity"},video_game:{keywords:["play","console","PS4","controller"],"char":"\ud83c\udfae",fitzpatrick_scale:!1,category:"activity"},space_invader:{keywords:["game","arcade","play"],"char":"\ud83d\udc7e",fitzpatrick_scale:!1,category:"activity"},dart:{keywords:["game","play","bar","target","bullseye"],"char":"\ud83c\udfaf",fitzpatrick_scale:!1,category:"activity"},game_die:{keywords:["dice","random","tabletop","play","luck"],"char":"\ud83c\udfb2",fitzpatrick_scale:!1,category:"activity"},chess_pawn:{keywords:["expendable"],"char":"\u265f",fitzpatrick_scale:!1,category:"activity"},slot_machine:{keywords:["bet","gamble","vegas","fruit machine","luck","casino"],"char":"\ud83c\udfb0",fitzpatrick_scale:!1,category:"activity"},jigsaw:{keywords:["interlocking","puzzle","piece"],"char":"\ud83e\udde9",fitzpatrick_scale:!1,category:"activity"},bowling:{keywords:["sports","fun","play"],"char":"\ud83c\udfb3",fitzpatrick_scale:!1,category:"activity"},red_car:{keywords:["red","transportation","vehicle"],"char":"\ud83d\ude97",fitzpatrick_scale:!1,category:"travel_and_places"},taxi:{keywords:["uber","vehicle","cars","transportation"],"char":"\ud83d\ude95",fitzpatrick_scale:!1,category:"travel_and_places"},blue_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude99",fitzpatrick_scale:!1,category:"travel_and_places"},bus:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude8c",fitzpatrick_scale:!1,category:"travel_and_places"},trolleybus:{keywords:["bart","transportation","vehicle"],"char":"\ud83d\ude8e",fitzpatrick_scale:!1,category:"travel_and_places"},racing_car:{keywords:["sports","race","fast","formula","f1"],"char":"\ud83c\udfce",fitzpatrick_scale:!1,category:"travel_and_places"},police_car:{keywords:["vehicle","cars","transportation","law","legal","enforcement"],"char":"\ud83d\ude93",fitzpatrick_scale:!1,category:"travel_and_places"},ambulance:{keywords:["health","911","hospital"],"char":"\ud83d\ude91",fitzpatrick_scale:!1,category:"travel_and_places"},fire_engine:{keywords:["transportation","cars","vehicle"],"char":"\ud83d\ude92",fitzpatrick_scale:!1,category:"travel_and_places"},minibus:{keywords:["vehicle","car","transportation"],"char":"\ud83d\ude90",fitzpatrick_scale:!1,category:"travel_and_places"},truck:{keywords:["cars","transportation"],"char":"\ud83d\ude9a",fitzpatrick_scale:!1,category:"travel_and_places"},articulated_lorry:{keywords:["vehicle","cars","transportation","express"],"char":"\ud83d\ude9b",fitzpatrick_scale:!1,category:"travel_and_places"},tractor:{keywords:["vehicle","car","farming","agriculture"],"char":"\ud83d\ude9c",fitzpatrick_scale:!1,category:"travel_and_places"},kick_scooter:{keywords:["vehicle","kick","razor"],"char":"\ud83d\udef4",fitzpatrick_scale:!1,category:"travel_and_places"},motorcycle:{keywords:["race","sports","fast"],"char":"\ud83c\udfcd",fitzpatrick_scale:!1,category:"travel_and_places"},bike:{keywords:["sports","bicycle","exercise","hipster"],"char":"\ud83d\udeb2",fitzpatrick_scale:!1,category:"travel_and_places"},motor_scooter:{keywords:["vehicle","vespa","sasha"],"char":"\ud83d\udef5",fitzpatrick_scale:!1,category:"travel_and_places"},rotating_light:{keywords:["police","ambulance","911","emergency","alert","error","pinged","law","legal"],"char":"\ud83d\udea8",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_police_car:{keywords:["vehicle","law","legal","enforcement","911"],"char":"\ud83d\ude94",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_bus:{keywords:["vehicle","transportation"],"char":"\ud83d\ude8d",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_automobile:{keywords:["car","vehicle","transportation"],"char":"\ud83d\ude98",fitzpatrick_scale:!1,category:"travel_and_places"},oncoming_taxi:{keywords:["vehicle","cars","uber"],"char":"\ud83d\ude96",fitzpatrick_scale:!1,category:"travel_and_places"},aerial_tramway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea1",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_cableway:{keywords:["transportation","vehicle","ski"],"char":"\ud83d\udea0",fitzpatrick_scale:!1,category:"travel_and_places"},suspension_railway:{keywords:["vehicle","transportation"],"char":"\ud83d\ude9f",fitzpatrick_scale:!1,category:"travel_and_places"},railway_car:{keywords:["transportation","vehicle"],"char":"\ud83d\ude83",fitzpatrick_scale:!1,category:"travel_and_places"},train:{keywords:["transportation","vehicle","carriage","public","travel"],"char":"\ud83d\ude8b",fitzpatrick_scale:!1,category:"travel_and_places"},monorail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9d",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_side:{keywords:["transportation","vehicle"],"char":"\ud83d\ude84",fitzpatrick_scale:!1,category:"travel_and_places"},bullettrain_front:{keywords:["transportation","vehicle","speed","fast","public","travel"],"char":"\ud83d\ude85",fitzpatrick_scale:!1,category:"travel_and_places"},light_rail:{keywords:["transportation","vehicle"],"char":"\ud83d\ude88",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_railway:{keywords:["transportation","vehicle"],"char":"\ud83d\ude9e",fitzpatrick_scale:!1,category:"travel_and_places"},steam_locomotive:{keywords:["transportation","vehicle","train"],"char":"\ud83d\ude82",fitzpatrick_scale:!1,category:"travel_and_places"},train2:{keywords:["transportation","vehicle"],"char":"\ud83d\ude86",fitzpatrick_scale:!1,category:"travel_and_places"},metro:{keywords:["transportation","blue-square","mrt","underground","tube"],"char":"\ud83d\ude87",fitzpatrick_scale:!1,category:"travel_and_places"},tram:{keywords:["transportation","vehicle"],"char":"\ud83d\ude8a",fitzpatrick_scale:!1,category:"travel_and_places"},station:{keywords:["transportation","vehicle","public"],"char":"\ud83d\ude89",fitzpatrick_scale:!1,category:"travel_and_places"},flying_saucer:{keywords:["transportation","vehicle","ufo"],"char":"\ud83d\udef8",fitzpatrick_scale:!1,category:"travel_and_places"},helicopter:{keywords:["transportation","vehicle","fly"],"char":"\ud83d\ude81",fitzpatrick_scale:!1,category:"travel_and_places"},small_airplane:{keywords:["flight","transportation","fly","vehicle"],"char":"\ud83d\udee9",fitzpatrick_scale:!1,category:"travel_and_places"},airplane:{keywords:["vehicle","transportation","flight","fly"],"char":"\u2708\ufe0f",fitzpatrick_scale:!1,category:"travel_and_places"},flight_departure:{keywords:["airport","flight","landing"],"char":"\ud83d\udeeb",fitzpatrick_scale:!1,category:"travel_and_places"},flight_arrival:{keywords:["airport","flight","boarding"],"char":"\ud83d\udeec",fitzpatrick_scale:!1,category:"travel_and_places"},sailboat:{keywords:["ship","summer","transportation","water","sailing"],"char":"\u26f5",fitzpatrick_scale:!1,category:"travel_and_places"},motor_boat:{keywords:["ship"],"char":"\ud83d\udee5",fitzpatrick_scale:!1,category:"travel_and_places"},speedboat:{keywords:["ship","transportation","vehicle","summer"],"char":"\ud83d\udea4",fitzpatrick_scale:!1,category:"travel_and_places"},ferry:{keywords:["boat","ship","yacht"],"char":"\u26f4",fitzpatrick_scale:!1,category:"travel_and_places"},passenger_ship:{keywords:["yacht","cruise","ferry"],"char":"\ud83d\udef3",fitzpatrick_scale:!1,category:"travel_and_places"},rocket:{keywords:["launch","ship","staffmode","NASA","outer space","outer_space","fly"],"char":"\ud83d\ude80",fitzpatrick_scale:!1,category:"travel_and_places"},artificial_satellite:{keywords:["communication","gps","orbit","spaceflight","NASA","ISS"],"char":"\ud83d\udef0",fitzpatrick_scale:!1,category:"travel_and_places"},seat:{keywords:["sit","airplane","transport","bus","flight","fly"],"char":"\ud83d\udcba",fitzpatrick_scale:!1,category:"travel_and_places"},canoe:{keywords:["boat","paddle","water","ship"],"char":"\ud83d\udef6",fitzpatrick_scale:!1,category:"travel_and_places"},anchor:{keywords:["ship","ferry","sea","boat"],"char":"\u2693",fitzpatrick_scale:!1,category:"travel_and_places"},construction:{keywords:["wip","progress","caution","warning"],"char":"\ud83d\udea7",fitzpatrick_scale:!1,category:"travel_and_places"},fuelpump:{keywords:["gas station","petroleum"],"char":"\u26fd",fitzpatrick_scale:!1,category:"travel_and_places"},busstop:{keywords:["transportation","wait"],"char":"\ud83d\ude8f",fitzpatrick_scale:!1,category:"travel_and_places"},vertical_traffic_light:{keywords:["transportation","driving"],"char":"\ud83d\udea6",fitzpatrick_scale:!1,category:"travel_and_places"},traffic_light:{keywords:["transportation","signal"],"char":"\ud83d\udea5",fitzpatrick_scale:!1,category:"travel_and_places"},checkered_flag:{keywords:["contest","finishline","race","gokart"],"char":"\ud83c\udfc1",fitzpatrick_scale:!1,category:"travel_and_places"},ship:{keywords:["transportation","titanic","deploy"],"char":"\ud83d\udea2",fitzpatrick_scale:!1,category:"travel_and_places"},ferris_wheel:{keywords:["photo","carnival","londoneye"],"char":"\ud83c\udfa1",fitzpatrick_scale:!1,category:"travel_and_places"},roller_coaster:{keywords:["carnival","playground","photo","fun"],"char":"\ud83c\udfa2",fitzpatrick_scale:!1,category:"travel_and_places"},carousel_horse:{keywords:["photo","carnival"],"char":"\ud83c\udfa0",fitzpatrick_scale:!1,category:"travel_and_places"},building_construction:{keywords:["wip","working","progress"],"char":"\ud83c\udfd7",fitzpatrick_scale:!1,category:"travel_and_places"},foggy:{keywords:["photo","mountain"],"char":"\ud83c\udf01",fitzpatrick_scale:!1,category:"travel_and_places"},tokyo_tower:{keywords:["photo","japanese"],"char":"\ud83d\uddfc",fitzpatrick_scale:!1,category:"travel_and_places"},factory:{keywords:["building","industry","pollution","smoke"],"char":"\ud83c\udfed",fitzpatrick_scale:!1,category:"travel_and_places"},fountain:{keywords:["photo","summer","water","fresh"],"char":"\u26f2",fitzpatrick_scale:!1,category:"travel_and_places"},rice_scene:{keywords:["photo","japan","asia","tsukimi"],"char":"\ud83c\udf91",fitzpatrick_scale:!1,category:"travel_and_places"},mountain:{keywords:["photo","nature","environment"],"char":"\u26f0",fitzpatrick_scale:!1,category:"travel_and_places"},mountain_snow:{keywords:["photo","nature","environment","winter","cold"],"char":"\ud83c\udfd4",fitzpatrick_scale:!1,category:"travel_and_places"},mount_fuji:{keywords:["photo","mountain","nature","japanese"],"char":"\ud83d\uddfb",fitzpatrick_scale:!1,category:"travel_and_places"},volcano:{keywords:["photo","nature","disaster"],"char":"\ud83c\udf0b",fitzpatrick_scale:!1,category:"travel_and_places"},japan:{keywords:["nation","country","japanese","asia"],"char":"\ud83d\uddfe",fitzpatrick_scale:!1,category:"travel_and_places"},camping:{keywords:["photo","outdoors","tent"],"char":"\ud83c\udfd5",fitzpatrick_scale:!1,category:"travel_and_places"},tent:{keywords:["photo","camping","outdoors"],"char":"\u26fa",fitzpatrick_scale:!1,category:"travel_and_places"},national_park:{keywords:["photo","environment","nature"],"char":"\ud83c\udfde",fitzpatrick_scale:!1,category:"travel_and_places"},motorway:{keywords:["road","cupertino","interstate","highway"],"char":"\ud83d\udee3",fitzpatrick_scale:!1,category:"travel_and_places"},railway_track:{keywords:["train","transportation"],"char":"\ud83d\udee4",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise:{keywords:["morning","view","vacation","photo"],"char":"\ud83c\udf05",fitzpatrick_scale:!1,category:"travel_and_places"},sunrise_over_mountains:{keywords:["view","vacation","photo"],"char":"\ud83c\udf04",fitzpatrick_scale:!1,category:"travel_and_places"},desert:{keywords:["photo","warm","saharah"],"char":"\ud83c\udfdc",fitzpatrick_scale:!1,category:"travel_and_places"},beach_umbrella:{keywords:["weather","summer","sunny","sand","mojito"],"char":"\ud83c\udfd6",fitzpatrick_scale:!1,category:"travel_and_places"},desert_island:{keywords:["photo","tropical","mojito"],"char":"\ud83c\udfdd",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunrise:{keywords:["photo","good morning","dawn"],"char":"\ud83c\udf07",fitzpatrick_scale:!1,category:"travel_and_places"},city_sunset:{keywords:["photo","evening","sky","buildings"],"char":"\ud83c\udf06",fitzpatrick_scale:!1,category:"travel_and_places"},cityscape:{keywords:["photo","night life","urban"],"char":"\ud83c\udfd9",fitzpatrick_scale:!1,category:"travel_and_places"},night_with_stars:{keywords:["evening","city","downtown"],"char":"\ud83c\udf03",fitzpatrick_scale:!1,category:"travel_and_places"},bridge_at_night:{keywords:["photo","sanfrancisco"],"char":"\ud83c\udf09",fitzpatrick_scale:!1,category:"travel_and_places"},milky_way:{keywords:["photo","space","stars"],"char":"\ud83c\udf0c",fitzpatrick_scale:!1,category:"travel_and_places"},stars:{keywords:["night","photo"],"char":"\ud83c\udf20",fitzpatrick_scale:!1,category:"travel_and_places"},sparkler:{keywords:["stars","night","shine"],"char":"\ud83c\udf87",fitzpatrick_scale:!1,category:"travel_and_places"},fireworks:{keywords:["photo","festival","carnival","congratulations"],"char":"\ud83c\udf86",fitzpatrick_scale:!1,category:"travel_and_places"},rainbow:{keywords:["nature","happy","unicorn_face","photo","sky","spring"],"char":"\ud83c\udf08",fitzpatrick_scale:!1,category:"travel_and_places"},houses:{keywords:["buildings","photo"],"char":"\ud83c\udfd8",fitzpatrick_scale:!1,category:"travel_and_places"},european_castle:{keywords:["building","royalty","history"],"char":"\ud83c\udff0",fitzpatrick_scale:!1,category:"travel_and_places"},japanese_castle:{keywords:["photo","building"],"char":"\ud83c\udfef",fitzpatrick_scale:!1,category:"travel_and_places"},stadium:{keywords:["photo","place","sports","concert","venue"],"char":"\ud83c\udfdf",fitzpatrick_scale:!1,category:"travel_and_places"},statue_of_liberty:{keywords:["american","newyork"],"char":"\ud83d\uddfd",fitzpatrick_scale:!1,category:"travel_and_places"},house:{keywords:["building","home"],"char":"\ud83c\udfe0",fitzpatrick_scale:!1,category:"travel_and_places"},house_with_garden:{keywords:["home","plant","nature"],"char":"\ud83c\udfe1",fitzpatrick_scale:!1,category:"travel_and_places"},derelict_house:{keywords:["abandon","evict","broken","building"],"char":"\ud83c\udfda",fitzpatrick_scale:!1,category:"travel_and_places"},office:{keywords:["building","bureau","work"],"char":"\ud83c\udfe2",fitzpatrick_scale:!1,category:"travel_and_places"},department_store:{keywords:["building","shopping","mall"],"char":"\ud83c\udfec",fitzpatrick_scale:!1,category:"travel_and_places"},post_office:{keywords:["building","envelope","communication"],"char":"\ud83c\udfe3",fitzpatrick_scale:!1,category:"travel_and_places"},european_post_office:{keywords:["building","email"],"char":"\ud83c\udfe4",fitzpatrick_scale:!1,category:"travel_and_places"},hospital:{keywords:["building","health","surgery","doctor"],"char":"\ud83c\udfe5",fitzpatrick_scale:!1,category:"travel_and_places"},bank:{keywords:["building","money","sales","cash","business","enterprise"],"char":"\ud83c\udfe6",fitzpatrick_scale:!1,category:"travel_and_places"},hotel:{keywords:["building","accomodation","checkin"],"char":"\ud83c\udfe8",fitzpatrick_scale:!1,category:"travel_and_places"},convenience_store:{keywords:["building","shopping","groceries"],"char":"\ud83c\udfea",fitzpatrick_scale:!1,category:"travel_and_places"},school:{keywords:["building","student","education","learn","teach"],"char":"\ud83c\udfeb",fitzpatrick_scale:!1,category:"travel_and_places"},love_hotel:{keywords:["like","affection","dating"],"char":"\ud83c\udfe9",fitzpatrick_scale:!1,category:"travel_and_places"},wedding:{keywords:["love","like","affection","couple","marriage","bride","groom"],"char":"\ud83d\udc92",fitzpatrick_scale:!1,category:"travel_and_places"},classical_building:{keywords:["art","culture","history"],"char":"\ud83c\udfdb",fitzpatrick_scale:!1,category:"travel_and_places"},church:{keywords:["building","religion","christ"],"char":"\u26ea",fitzpatrick_scale:!1,category:"travel_and_places"},mosque:{keywords:["islam","worship","minaret"],"char":"\ud83d\udd4c",fitzpatrick_scale:!1,category:"travel_and_places"},synagogue:{keywords:["judaism","worship","temple","jewish"],"char":"\ud83d\udd4d",fitzpatrick_scale:!1,category:"travel_and_places"},kaaba:{keywords:["mecca","mosque","islam"],"char":"\ud83d\udd4b",fitzpatrick_scale:!1,category:"travel_and_places"},shinto_shrine:{keywords:["temple","japan","kyoto"],"char":"\u26e9",fitzpatrick_scale:!1,category:"travel_and_places"},watch:{keywords:["time","accessories"],"char":"\u231a",fitzpatrick_scale:!1,category:"objects"},iphone:{keywords:["technology","apple","gadgets","dial"],"char":"\ud83d\udcf1",fitzpatrick_scale:!1,category:"objects"},calling:{keywords:["iphone","incoming"],"char":"\ud83d\udcf2",fitzpatrick_scale:!1,category:"objects"},computer:{keywords:["technology","laptop","screen","display","monitor"],"char":"\ud83d\udcbb",fitzpatrick_scale:!1,category:"objects"},keyboard:{keywords:["technology","computer","type","input","text"],"char":"\u2328",fitzpatrick_scale:!1,category:"objects"},desktop_computer:{keywords:["technology","computing","screen"],"char":"\ud83d\udda5",fitzpatrick_scale:!1,category:"objects"},printer:{keywords:["paper","ink"],"char":"\ud83d\udda8",fitzpatrick_scale:!1,category:"objects"},computer_mouse:{keywords:["click"],"char":"\ud83d\uddb1",fitzpatrick_scale:!1,category:"objects"},trackball:{keywords:["technology","trackpad"],"char":"\ud83d\uddb2",fitzpatrick_scale:!1,category:"objects"},joystick:{keywords:["game","play"],"char":"\ud83d\udd79",fitzpatrick_scale:!1,category:"objects"},clamp:{keywords:["tool"],"char":"\ud83d\udddc",fitzpatrick_scale:!1,category:"objects"},minidisc:{keywords:["technology","record","data","disk","90s"],"char":"\ud83d\udcbd",fitzpatrick_scale:!1,category:"objects"},floppy_disk:{keywords:["oldschool","technology","save","90s","80s"],"char":"\ud83d\udcbe",fitzpatrick_scale:!1,category:"objects"},cd:{keywords:["technology","dvd","disk","disc","90s"],"char":"\ud83d\udcbf",fitzpatrick_scale:!1,category:"objects"},dvd:{keywords:["cd","disk","disc"],"char":"\ud83d\udcc0",fitzpatrick_scale:!1,category:"objects"},vhs:{keywords:["record","video","oldschool","90s","80s"],"char":"\ud83d\udcfc",fitzpatrick_scale:!1,category:"objects"},camera:{keywords:["gadgets","photography"],"char":"\ud83d\udcf7",fitzpatrick_scale:!1,category:"objects"},camera_flash:{keywords:["photography","gadgets"],"char":"\ud83d\udcf8",fitzpatrick_scale:!1,category:"objects"},video_camera:{keywords:["film","record"],"char":"\ud83d\udcf9",fitzpatrick_scale:!1,category:"objects"},movie_camera:{keywords:["film","record"],"char":"\ud83c\udfa5",fitzpatrick_scale:!1,category:"objects"},film_projector:{keywords:["video","tape","record","movie"],"char":"\ud83d\udcfd",fitzpatrick_scale:!1,category:"objects"},film_strip:{keywords:["movie"],"char":"\ud83c\udf9e",fitzpatrick_scale:!1,category:"objects"},telephone_receiver:{keywords:["technology","communication","dial"],"char":"\ud83d\udcde",fitzpatrick_scale:!1,category:"objects"},phone:{keywords:["technology","communication","dial","telephone"],"char":"\u260e\ufe0f",fitzpatrick_scale:!1,category:"objects"},pager:{keywords:["bbcall","oldschool","90s"],"char":"\ud83d\udcdf",fitzpatrick_scale:!1,category:"objects"},fax:{keywords:["communication","technology"],"char":"\ud83d\udce0",fitzpatrick_scale:!1,category:"objects"},tv:{keywords:["technology","program","oldschool","show","television"],"char":"\ud83d\udcfa",fitzpatrick_scale:!1,category:"objects"},radio:{keywords:["communication","music","podcast","program"],"char":"\ud83d\udcfb",fitzpatrick_scale:!1,category:"objects"},studio_microphone:{keywords:["sing","recording","artist","talkshow"],"char":"\ud83c\udf99",fitzpatrick_scale:!1,category:"objects"},level_slider:{keywords:["scale"],"char":"\ud83c\udf9a",fitzpatrick_scale:!1,category:"objects"},control_knobs:{keywords:["dial"],"char":"\ud83c\udf9b",fitzpatrick_scale:!1,category:"objects"},compass:{keywords:["magnetic","navigation","orienteering"],"char":"\ud83e\udded",fitzpatrick_scale:!1,category:"objects"},stopwatch:{keywords:["time","deadline"],"char":"\u23f1",fitzpatrick_scale:!1,category:"objects"},timer_clock:{keywords:["alarm"],"char":"\u23f2",fitzpatrick_scale:!1,category:"objects"},alarm_clock:{keywords:["time","wake"],"char":"\u23f0",fitzpatrick_scale:!1,category:"objects"},mantelpiece_clock:{keywords:["time"],"char":"\ud83d\udd70",fitzpatrick_scale:!1,category:"objects"},hourglass_flowing_sand:{keywords:["oldschool","time","countdown"],"char":"\u23f3",fitzpatrick_scale:!1,category:"objects"},hourglass:{keywords:["time","clock","oldschool","limit","exam","quiz","test"],"char":"\u231b",fitzpatrick_scale:!1,category:"objects"},satellite:{keywords:["communication","future","radio","space"],"char":"\ud83d\udce1",fitzpatrick_scale:!1,category:"objects"},battery:{keywords:["power","energy","sustain"],"char":"\ud83d\udd0b",fitzpatrick_scale:!1,category:"objects"},electric_plug:{keywords:["charger","power"],"char":"\ud83d\udd0c",fitzpatrick_scale:!1,category:"objects"},bulb:{keywords:["light","electricity","idea"],"char":"\ud83d\udca1",fitzpatrick_scale:!1,category:"objects"},flashlight:{keywords:["dark","camping","sight","night"],"char":"\ud83d\udd26",fitzpatrick_scale:!1,category:"objects"},candle:{keywords:["fire","wax"],"char":"\ud83d\udd6f",fitzpatrick_scale:!1,category:"objects"},fire_extinguisher:{keywords:["quench"],"char":"\ud83e\uddef",fitzpatrick_scale:!1,category:"objects"},wastebasket:{keywords:["bin","trash","rubbish","garbage","toss"],"char":"\ud83d\uddd1",fitzpatrick_scale:!1,category:"objects"},oil_drum:{keywords:["barrell"],"char":"\ud83d\udee2",fitzpatrick_scale:!1,category:"objects"},money_with_wings:{keywords:["dollar","bills","payment","sale"],"char":"\ud83d\udcb8",fitzpatrick_scale:!1,category:"objects"},dollar:{keywords:["money","sales","bill","currency"],"char":"\ud83d\udcb5",fitzpatrick_scale:!1,category:"objects"},yen:{keywords:["money","sales","japanese","dollar","currency"],"char":"\ud83d\udcb4",fitzpatrick_scale:!1,category:"objects"},euro:{keywords:["money","sales","dollar","currency"],"char":"\ud83d\udcb6",fitzpatrick_scale:!1,category:"objects"},pound:{keywords:["british","sterling","money","sales","bills","uk","england","currency"],"char":"\ud83d\udcb7",fitzpatrick_scale:!1,category:"objects"},moneybag:{keywords:["dollar","payment","coins","sale"],"char":"\ud83d\udcb0",fitzpatrick_scale:!1,category:"objects"},credit_card:{keywords:["money","sales","dollar","bill","payment","shopping"],"char":"\ud83d\udcb3",fitzpatrick_scale:!1,category:"objects"},gem:{keywords:["blue","ruby","diamond","jewelry"],"char":"\ud83d\udc8e",fitzpatrick_scale:!1,category:"objects"},balance_scale:{keywords:["law","fairness","weight"],"char":"\u2696",fitzpatrick_scale:!1,category:"objects"},toolbox:{keywords:["tools","diy","fix","maintainer","mechanic"],"char":"\ud83e\uddf0",fitzpatrick_scale:!1,category:"objects"},wrench:{keywords:["tools","diy","ikea","fix","maintainer"],"char":"\ud83d\udd27",fitzpatrick_scale:!1,category:"objects"},hammer:{keywords:["tools","build","create"],"char":"\ud83d\udd28",fitzpatrick_scale:!1,category:"objects"},hammer_and_pick:{keywords:["tools","build","create"],"char":"\u2692",fitzpatrick_scale:!1,category:"objects"},hammer_and_wrench:{keywords:["tools","build","create"],"char":"\ud83d\udee0",fitzpatrick_scale:!1,category:"objects"},pick:{keywords:["tools","dig"],"char":"\u26cf",fitzpatrick_scale:!1,category:"objects"},nut_and_bolt:{keywords:["handy","tools","fix"],"char":"\ud83d\udd29",fitzpatrick_scale:!1,category:"objects"},gear:{keywords:["cog"],"char":"\u2699",fitzpatrick_scale:!1,category:"objects"},brick:{keywords:["bricks"],"char":"\ud83e\uddf1",fitzpatrick_scale:!1,category:"objects"},chains:{keywords:["lock","arrest"],"char":"\u26d3",fitzpatrick_scale:!1,category:"objects"},magnet:{keywords:["attraction","magnetic"],"char":"\ud83e\uddf2",fitzpatrick_scale:!1,category:"objects"},gun:{keywords:["violence","weapon","pistol","revolver"],"char":"\ud83d\udd2b",fitzpatrick_scale:!1,category:"objects"},bomb:{keywords:["boom","explode","explosion","terrorism"],"char":"\ud83d\udca3",fitzpatrick_scale:!1,category:"objects"},firecracker:{keywords:["dynamite","boom","explode","explosion","explosive"],"char":"\ud83e\udde8",fitzpatrick_scale:!1,category:"objects"},hocho:{keywords:["knife","blade","cutlery","kitchen","weapon"],"char":"\ud83d\udd2a",fitzpatrick_scale:!1,category:"objects"},dagger:{keywords:["weapon"],"char":"\ud83d\udde1",fitzpatrick_scale:!1,category:"objects"},crossed_swords:{keywords:["weapon"],"char":"\u2694",fitzpatrick_scale:!1,category:"objects"},shield:{keywords:["protection","security"],"char":"\ud83d\udee1",fitzpatrick_scale:!1,category:"objects"},smoking:{keywords:["kills","tobacco","cigarette","joint","smoke"],"char":"\ud83d\udeac",fitzpatrick_scale:!1,category:"objects"},skull_and_crossbones:{keywords:["poison","danger","deadly","scary","death","pirate","evil"],"char":"\u2620",fitzpatrick_scale:!1,category:"objects"},coffin:{keywords:["vampire","dead","die","death","rip","graveyard","cemetery","casket","funeral","box"],"char":"\u26b0",fitzpatrick_scale:!1,category:"objects"},funeral_urn:{keywords:["dead","die","death","rip","ashes"],"char":"\u26b1",fitzpatrick_scale:!1,category:"objects"},amphora:{keywords:["vase","jar"],"char":"\ud83c\udffa",fitzpatrick_scale:!1,category:"objects"},crystal_ball:{keywords:["disco","party","magic","circus","fortune_teller"],"char":"\ud83d\udd2e",fitzpatrick_scale:!1,category:"objects"},prayer_beads:{keywords:["dhikr","religious"],"char":"\ud83d\udcff",fitzpatrick_scale:!1,category:"objects"},nazar_amulet:{keywords:["bead","charm"],"char":"\ud83e\uddff",fitzpatrick_scale:!1,category:"objects"},barber:{keywords:["hair","salon","style"],"char":"\ud83d\udc88",fitzpatrick_scale:!1,category:"objects"},alembic:{keywords:["distilling","science","experiment","chemistry"],"char":"\u2697",fitzpatrick_scale:!1,category:"objects"},telescope:{keywords:["stars","space","zoom","science","astronomy"],"char":"\ud83d\udd2d",fitzpatrick_scale:!1,category:"objects"},microscope:{keywords:["laboratory","experiment","zoomin","science","study"],"char":"\ud83d\udd2c",fitzpatrick_scale:!1,category:"objects"},hole:{keywords:["embarrassing"],"char":"\ud83d\udd73",fitzpatrick_scale:!1,category:"objects"},pill:{keywords:["health","medicine","doctor","pharmacy","drug"],"char":"\ud83d\udc8a",fitzpatrick_scale:!1,category:"objects"},syringe:{keywords:["health","hospital","drugs","blood","medicine","needle","doctor","nurse"],"char":"\ud83d\udc89",fitzpatrick_scale:!1,category:"objects"},dna:{keywords:["biologist","genetics","life"],"char":"\ud83e\uddec",fitzpatrick_scale:!1,category:"objects"},microbe:{keywords:["amoeba","bacteria","germs"],"char":"\ud83e\udda0",fitzpatrick_scale:!1,category:"objects"},petri_dish:{keywords:["bacteria","biology","culture","lab"],"char":"\ud83e\uddeb",fitzpatrick_scale:!1,category:"objects"},test_tube:{keywords:["chemistry","experiment","lab","science"],"char":"\ud83e\uddea",fitzpatrick_scale:!1,category:"objects"},thermometer:{keywords:["weather","temperature","hot","cold"],"char":"\ud83c\udf21",fitzpatrick_scale:!1,category:"objects"},broom:{keywords:["cleaning","sweeping","witch"],"char":"\ud83e\uddf9",fitzpatrick_scale:!1,category:"objects"},basket:{keywords:["laundry"],"char":"\ud83e\uddfa",fitzpatrick_scale:!1,category:"objects"},toilet_paper:{keywords:["roll"],"char":"\ud83e\uddfb",fitzpatrick_scale:!1,category:"objects"},label:{keywords:["sale","tag"],"char":"\ud83c\udff7",fitzpatrick_scale:!1,category:"objects"},bookmark:{keywords:["favorite","label","save"],"char":"\ud83d\udd16",fitzpatrick_scale:!1,category:"objects"},toilet:{keywords:["restroom","wc","washroom","bathroom","potty"],"char":"\ud83d\udebd",fitzpatrick_scale:!1,category:"objects"},shower:{keywords:["clean","water","bathroom"],"char":"\ud83d\udebf",fitzpatrick_scale:!1,category:"objects"},bathtub:{keywords:["clean","shower","bathroom"],"char":"\ud83d\udec1",fitzpatrick_scale:!1,category:"objects"},soap:{keywords:["bar","bathing","cleaning","lather"],"char":"\ud83e\uddfc",fitzpatrick_scale:!1,category:"objects"},sponge:{keywords:["absorbing","cleaning","porous"],"char":"\ud83e\uddfd",fitzpatrick_scale:!1,category:"objects"},lotion_bottle:{keywords:["moisturizer","sunscreen"],"char":"\ud83e\uddf4",fitzpatrick_scale:!1,category:"objects"},key:{keywords:["lock","door","password"],"char":"\ud83d\udd11",fitzpatrick_scale:!1,category:"objects"},old_key:{keywords:["lock","door","password"],"char":"\ud83d\udddd",fitzpatrick_scale:!1,category:"objects"},couch_and_lamp:{keywords:["read","chill"],"char":"\ud83d\udecb",fitzpatrick_scale:!1,category:"objects"},sleeping_bed:{keywords:["bed","rest"],"char":"\ud83d\udecc",fitzpatrick_scale:!0,category:"objects"},bed:{keywords:["sleep","rest"],"char":"\ud83d\udecf",fitzpatrick_scale:!1,category:"objects"},door:{keywords:["house","entry","exit"],"char":"\ud83d\udeaa",fitzpatrick_scale:!1,category:"objects"},bellhop_bell:{keywords:["service"],"char":"\ud83d\udece",fitzpatrick_scale:!1,category:"objects"},teddy_bear:{keywords:["plush","stuffed"],"char":"\ud83e\uddf8",fitzpatrick_scale:!1,category:"objects"},framed_picture:{keywords:["photography"],"char":"\ud83d\uddbc",fitzpatrick_scale:!1,category:"objects"},world_map:{keywords:["location","direction"],"char":"\ud83d\uddfa",fitzpatrick_scale:!1,category:"objects"},parasol_on_ground:{keywords:["weather","summer"],"char":"\u26f1",fitzpatrick_scale:!1,category:"objects"},moyai:{keywords:["rock","easter island","moai"],"char":"\ud83d\uddff",fitzpatrick_scale:!1,category:"objects"},shopping:{keywords:["mall","buy","purchase"],"char":"\ud83d\udecd",fitzpatrick_scale:!1,category:"objects"},shopping_cart:{keywords:["trolley"],"char":"\ud83d\uded2",fitzpatrick_scale:!1,category:"objects"},balloon:{keywords:["party","celebration","birthday","circus"],"char":"\ud83c\udf88",fitzpatrick_scale:!1,category:"objects"},flags:{keywords:["fish","japanese","koinobori","carp","banner"],"char":"\ud83c\udf8f",fitzpatrick_scale:!1,category:"objects"},ribbon:{keywords:["decoration","pink","girl","bowtie"],"char":"\ud83c\udf80",fitzpatrick_scale:!1,category:"objects"},gift:{keywords:["present","birthday","christmas","xmas"],"char":"\ud83c\udf81",fitzpatrick_scale:!1,category:"objects"},confetti_ball:{keywords:["festival","party","birthday","circus"],"char":"\ud83c\udf8a",fitzpatrick_scale:!1,category:"objects"},tada:{keywords:["party","congratulations","birthday","magic","circus","celebration"],"char":"\ud83c\udf89",fitzpatrick_scale:!1,category:"objects"},dolls:{keywords:["japanese","toy","kimono"],"char":"\ud83c\udf8e",fitzpatrick_scale:!1,category:"objects"},wind_chime:{keywords:["nature","ding","spring","bell"],"char":"\ud83c\udf90",fitzpatrick_scale:!1,category:"objects"},crossed_flags:{keywords:["japanese","nation","country","border"],"char":"\ud83c\udf8c",fitzpatrick_scale:!1,category:"objects"},izakaya_lantern:{keywords:["light","paper","halloween","spooky"],"char":"\ud83c\udfee",fitzpatrick_scale:!1,category:"objects"},red_envelope:{keywords:["gift"],"char":"\ud83e\udde7",fitzpatrick_scale:!1,category:"objects"},email:{keywords:["letter","postal","inbox","communication"],"char":"\u2709\ufe0f",fitzpatrick_scale:!1,category:"objects"},envelope_with_arrow:{keywords:["email","communication"],"char":"\ud83d\udce9",fitzpatrick_scale:!1,category:"objects"},incoming_envelope:{keywords:["email","inbox"],"char":"\ud83d\udce8",fitzpatrick_scale:!1,category:"objects"},"e-mail":{keywords:["communication","inbox"],"char":"\ud83d\udce7",fitzpatrick_scale:!1,category:"objects"},love_letter:{keywords:["email","like","affection","envelope","valentines"],"char":"\ud83d\udc8c",fitzpatrick_scale:!1,category:"objects"},postbox:{keywords:["email","letter","envelope"],"char":"\ud83d\udcee",fitzpatrick_scale:!1,category:"objects"},mailbox_closed:{keywords:["email","communication","inbox"],"char":"\ud83d\udcea",fitzpatrick_scale:!1,category:"objects"},mailbox:{keywords:["email","inbox","communication"],"char":"\ud83d\udceb",fitzpatrick_scale:!1,category:"objects"},mailbox_with_mail:{keywords:["email","inbox","communication"],"char":"\ud83d\udcec",fitzpatrick_scale:!1,category:"objects"},mailbox_with_no_mail:{keywords:["email","inbox"],"char":"\ud83d\udced",fitzpatrick_scale:!1,category:"objects"},"package":{keywords:["mail","gift","cardboard","box","moving"],"char":"\ud83d\udce6",fitzpatrick_scale:!1,category:"objects"},postal_horn:{keywords:["instrument","music"],"char":"\ud83d\udcef",fitzpatrick_scale:!1,category:"objects"},inbox_tray:{keywords:["email","documents"],"char":"\ud83d\udce5",fitzpatrick_scale:!1,category:"objects"},outbox_tray:{keywords:["inbox","email"],"char":"\ud83d\udce4",fitzpatrick_scale:!1,category:"objects"},scroll:{keywords:["documents","ancient","history","paper"],"char":"\ud83d\udcdc",fitzpatrick_scale:!1,category:"objects"},page_with_curl:{keywords:["documents","office","paper"],"char":"\ud83d\udcc3",fitzpatrick_scale:!1,category:"objects"},bookmark_tabs:{keywords:["favorite","save","order","tidy"],"char":"\ud83d\udcd1",fitzpatrick_scale:!1,category:"objects"},receipt:{keywords:["accounting","expenses"],"char":"\ud83e\uddfe",fitzpatrick_scale:!1,category:"objects"},bar_chart:{keywords:["graph","presentation","stats"],"char":"\ud83d\udcca",fitzpatrick_scale:!1,category:"objects"},chart_with_upwards_trend:{keywords:["graph","presentation","stats","recovery","business","economics","money","sales","good","success"],"char":"\ud83d\udcc8",fitzpatrick_scale:!1,category:"objects"},chart_with_downwards_trend:{keywords:["graph","presentation","stats","recession","business","economics","money","sales","bad","failure"],"char":"\ud83d\udcc9",fitzpatrick_scale:!1,category:"objects"},page_facing_up:{keywords:["documents","office","paper","information"],"char":"\ud83d\udcc4",fitzpatrick_scale:!1,category:"objects"},date:{keywords:["calendar","schedule"],"char":"\ud83d\udcc5",fitzpatrick_scale:!1,category:"objects"},calendar:{keywords:["schedule","date","planning"],"char":"\ud83d\udcc6",fitzpatrick_scale:!1,category:"objects"},spiral_calendar:{keywords:["date","schedule","planning"],"char":"\ud83d\uddd3",fitzpatrick_scale:!1,category:"objects"},card_index:{keywords:["business","stationery"],"char":"\ud83d\udcc7",fitzpatrick_scale:!1,category:"objects"},card_file_box:{keywords:["business","stationery"],"char":"\ud83d\uddc3",fitzpatrick_scale:!1,category:"objects"},ballot_box:{keywords:["election","vote"],"char":"\ud83d\uddf3",fitzpatrick_scale:!1,category:"objects"},file_cabinet:{keywords:["filing","organizing"],"char":"\ud83d\uddc4",fitzpatrick_scale:!1,category:"objects"},clipboard:{keywords:["stationery","documents"],"char":"\ud83d\udccb",fitzpatrick_scale:!1,category:"objects"},spiral_notepad:{keywords:["memo","stationery"],"char":"\ud83d\uddd2",fitzpatrick_scale:!1,category:"objects"},file_folder:{keywords:["documents","business","office"],"char":"\ud83d\udcc1",fitzpatrick_scale:!1,category:"objects"},open_file_folder:{keywords:["documents","load"],"char":"\ud83d\udcc2",fitzpatrick_scale:!1,category:"objects"},card_index_dividers:{keywords:["organizing","business","stationery"],"char":"\ud83d\uddc2",fitzpatrick_scale:!1,category:"objects"},newspaper_roll:{keywords:["press","headline"],"char":"\ud83d\uddde",fitzpatrick_scale:!1,category:"objects"},newspaper:{keywords:["press","headline"],"char":"\ud83d\udcf0",fitzpatrick_scale:!1,category:"objects"},notebook:{keywords:["stationery","record","notes","paper","study"],"char":"\ud83d\udcd3",fitzpatrick_scale:!1,category:"objects"},closed_book:{keywords:["read","library","knowledge","textbook","learn"],"char":"\ud83d\udcd5",fitzpatrick_scale:!1,category:"objects"},green_book:{keywords:["read","library","knowledge","study"],"char":"\ud83d\udcd7",fitzpatrick_scale:!1,category:"objects"},blue_book:{keywords:["read","library","knowledge","learn","study"],"char":"\ud83d\udcd8",fitzpatrick_scale:!1,category:"objects"},orange_book:{keywords:["read","library","knowledge","textbook","study"],"char":"\ud83d\udcd9",fitzpatrick_scale:!1,category:"objects"},notebook_with_decorative_cover:{keywords:["classroom","notes","record","paper","study"],"char":"\ud83d\udcd4",fitzpatrick_scale:!1,category:"objects"},ledger:{keywords:["notes","paper"],"char":"\ud83d\udcd2",fitzpatrick_scale:!1,category:"objects"},books:{keywords:["literature","library","study"],"char":"\ud83d\udcda",fitzpatrick_scale:!1,category:"objects"},open_book:{keywords:["book","read","library","knowledge","literature","learn","study"],"char":"\ud83d\udcd6",fitzpatrick_scale:!1,category:"objects"},safety_pin:{keywords:["diaper"],"char":"\ud83e\uddf7",fitzpatrick_scale:!1,category:"objects"},link:{keywords:["rings","url"],"char":"\ud83d\udd17",fitzpatrick_scale:!1,category:"objects"},paperclip:{keywords:["documents","stationery"],"char":"\ud83d\udcce",fitzpatrick_scale:!1,category:"objects"},paperclips:{keywords:["documents","stationery"],"char":"\ud83d\udd87",fitzpatrick_scale:!1,category:"objects"},scissors:{keywords:["stationery","cut"],"char":"\u2702\ufe0f",fitzpatrick_scale:!1,category:"objects"},triangular_ruler:{keywords:["stationery","math","architect","sketch"],"char":"\ud83d\udcd0",fitzpatrick_scale:!1,category:"objects"},straight_ruler:{keywords:["stationery","calculate","length","math","school","drawing","architect","sketch"],"char":"\ud83d\udccf",fitzpatrick_scale:!1,category:"objects"},abacus:{keywords:["calculation"],"char":"\ud83e\uddee",fitzpatrick_scale:!1,category:"objects"},pushpin:{keywords:["stationery","mark","here"],"char":"\ud83d\udccc",fitzpatrick_scale:!1,category:"objects"},round_pushpin:{keywords:["stationery","location","map","here"],"char":"\ud83d\udccd",fitzpatrick_scale:!1,category:"objects"},triangular_flag_on_post:{keywords:["mark","milestone","place"],"char":"\ud83d\udea9",fitzpatrick_scale:!1,category:"objects"},white_flag:{keywords:["losing","loser","lost","surrender","give up","fail"],"char":"\ud83c\udff3",fitzpatrick_scale:!1,category:"objects"},black_flag:{keywords:["pirate"],"char":"\ud83c\udff4",fitzpatrick_scale:!1,category:"objects"},rainbow_flag:{keywords:["flag","rainbow","pride","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"],"char":"\ud83c\udff3\ufe0f\u200d\ud83c\udf08",fitzpatrick_scale:!1,category:"objects"},closed_lock_with_key:{keywords:["security","privacy"],"char":"\ud83d\udd10",fitzpatrick_scale:!1,category:"objects"},lock:{keywords:["security","password","padlock"],"char":"\ud83d\udd12",fitzpatrick_scale:!1,category:"objects"},unlock:{keywords:["privacy","security"],"char":"\ud83d\udd13",fitzpatrick_scale:!1,category:"objects"},lock_with_ink_pen:{keywords:["security","secret"],"char":"\ud83d\udd0f",fitzpatrick_scale:!1,category:"objects"},pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8a",fitzpatrick_scale:!1,category:"objects"},fountain_pen:{keywords:["stationery","writing","write"],"char":"\ud83d\udd8b",fitzpatrick_scale:!1,category:"objects"},black_nib:{keywords:["pen","stationery","writing","write"],"char":"\u2712\ufe0f",fitzpatrick_scale:!1,category:"objects"},memo:{keywords:["write","documents","stationery","pencil","paper","writing","legal","exam","quiz","test","study","compose"],"char":"\ud83d\udcdd",fitzpatrick_scale:!1,category:"objects"},pencil2:{keywords:["stationery","write","paper","writing","school","study"],"char":"\u270f\ufe0f",fitzpatrick_scale:!1,category:"objects"},crayon:{keywords:["drawing","creativity"],"char":"\ud83d\udd8d",fitzpatrick_scale:!1,category:"objects"},paintbrush:{keywords:["drawing","creativity","art"],"char":"\ud83d\udd8c",fitzpatrick_scale:!1,category:"objects"},mag:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0d",fitzpatrick_scale:!1,category:"objects"},mag_right:{keywords:["search","zoom","find","detective"],"char":"\ud83d\udd0e",fitzpatrick_scale:!1,category:"objects"},heart:{keywords:["love","like","valentines"],"char":"\u2764\ufe0f",fitzpatrick_scale:!1,category:"symbols"},orange_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83e\udde1",fitzpatrick_scale:!1,category:"symbols"},yellow_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9b",fitzpatrick_scale:!1,category:"symbols"},green_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9a",fitzpatrick_scale:!1,category:"symbols"},blue_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc99",fitzpatrick_scale:!1,category:"symbols"},purple_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9c",fitzpatrick_scale:!1,category:"symbols"},black_heart:{keywords:["evil"],"char":"\ud83d\udda4",fitzpatrick_scale:!1,category:"symbols"},broken_heart:{keywords:["sad","sorry","break","heart","heartbreak"],"char":"\ud83d\udc94",fitzpatrick_scale:!1,category:"symbols"},heavy_heart_exclamation:{keywords:["decoration","love"],"char":"\u2763",fitzpatrick_scale:!1,category:"symbols"},two_hearts:{keywords:["love","like","affection","valentines","heart"],"char":"\ud83d\udc95",fitzpatrick_scale:!1,category:"symbols"},revolving_hearts:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc9e",fitzpatrick_scale:!1,category:"symbols"},heartbeat:{keywords:["love","like","affection","valentines","pink","heart"],"char":"\ud83d\udc93",fitzpatrick_scale:!1,category:"symbols"},heartpulse:{keywords:["like","love","affection","valentines","pink"],"char":"\ud83d\udc97",fitzpatrick_scale:!1,category:"symbols"},sparkling_heart:{keywords:["love","like","affection","valentines"],"char":"\ud83d\udc96",fitzpatrick_scale:!1,category:"symbols"},cupid:{keywords:["love","like","heart","affection","valentines"],"char":"\ud83d\udc98",fitzpatrick_scale:!1,category:"symbols"},gift_heart:{keywords:["love","valentines"],"char":"\ud83d\udc9d",fitzpatrick_scale:!1,category:"symbols"},heart_decoration:{keywords:["purple-square","love","like"],"char":"\ud83d\udc9f",fitzpatrick_scale:!1,category:"symbols"},peace_symbol:{keywords:["hippie"],"char":"\u262e",fitzpatrick_scale:!1,category:"symbols"},latin_cross:{keywords:["christianity"],"char":"\u271d",fitzpatrick_scale:!1,category:"symbols"},star_and_crescent:{keywords:["islam"],"char":"\u262a",fitzpatrick_scale:!1,category:"symbols"},om:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\ud83d\udd49",fitzpatrick_scale:!1,category:"symbols"},wheel_of_dharma:{keywords:["hinduism","buddhism","sikhism","jainism"],"char":"\u2638",fitzpatrick_scale:!1,category:"symbols"},star_of_david:{keywords:["judaism"],"char":"\u2721",fitzpatrick_scale:!1,category:"symbols"},six_pointed_star:{keywords:["purple-square","religion","jewish","hexagram"],"char":"\ud83d\udd2f",fitzpatrick_scale:!1,category:"symbols"},menorah:{keywords:["hanukkah","candles","jewish"],"char":"\ud83d\udd4e",fitzpatrick_scale:!1,category:"symbols"},yin_yang:{keywords:["balance"],"char":"\u262f",fitzpatrick_scale:!1,category:"symbols"},orthodox_cross:{keywords:["suppedaneum","religion"],"char":"\u2626",fitzpatrick_scale:!1,category:"symbols"},place_of_worship:{keywords:["religion","church","temple","prayer"],"char":"\ud83d\uded0",fitzpatrick_scale:!1,category:"symbols"},ophiuchus:{keywords:["sign","purple-square","constellation","astrology"],"char":"\u26ce",fitzpatrick_scale:!1,category:"symbols"},aries:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2648",fitzpatrick_scale:!1,category:"symbols"},taurus:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2649",fitzpatrick_scale:!1,category:"symbols"},gemini:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264a",fitzpatrick_scale:!1,category:"symbols"},cancer:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264b",fitzpatrick_scale:!1,category:"symbols"},leo:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264c",fitzpatrick_scale:!1,category:"symbols"},virgo:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u264d",fitzpatrick_scale:!1,category:"symbols"},libra:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u264e",fitzpatrick_scale:!1,category:"symbols"},scorpius:{keywords:["sign","zodiac","purple-square","astrology","scorpio"],"char":"\u264f",fitzpatrick_scale:!1,category:"symbols"},sagittarius:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2650",fitzpatrick_scale:!1,category:"symbols"},capricorn:{keywords:["sign","zodiac","purple-square","astrology"],"char":"\u2651",fitzpatrick_scale:!1,category:"symbols"},aquarius:{keywords:["sign","purple-square","zodiac","astrology"],"char":"\u2652",fitzpatrick_scale:!1,category:"symbols"},pisces:{keywords:["purple-square","sign","zodiac","astrology"],"char":"\u2653",fitzpatrick_scale:!1,category:"symbols"},id:{keywords:["purple-square","words"],"char":"\ud83c\udd94",fitzpatrick_scale:!1,category:"symbols"},atom_symbol:{keywords:["science","physics","chemistry"],"char":"\u269b",fitzpatrick_scale:!1,category:"symbols"},u7a7a:{keywords:["kanji","japanese","chinese","empty","sky","blue-square"],"char":"\ud83c\ude33",fitzpatrick_scale:!1,category:"symbols"},u5272:{keywords:["cut","divide","chinese","kanji","pink-square"],"char":"\ud83c\ude39",fitzpatrick_scale:!1,category:"symbols"},radioactive:{keywords:["nuclear","danger"],"char":"\u2622",fitzpatrick_scale:!1,category:"symbols"},biohazard:{keywords:["danger"],"char":"\u2623",fitzpatrick_scale:!1,category:"symbols"},mobile_phone_off:{keywords:["mute","orange-square","silence","quiet"],"char":"\ud83d\udcf4",fitzpatrick_scale:!1,category:"symbols"},vibration_mode:{keywords:["orange-square","phone"],"char":"\ud83d\udcf3",fitzpatrick_scale:!1,category:"symbols"},u6709:{keywords:["orange-square","chinese","have","kanji"],"char":"\ud83c\ude36",fitzpatrick_scale:!1,category:"symbols"},u7121:{keywords:["nothing","chinese","kanji","japanese","orange-square"],"char":"\ud83c\ude1a",fitzpatrick_scale:!1,category:"symbols"},u7533:{keywords:["chinese","japanese","kanji","orange-square"],"char":"\ud83c\ude38",fitzpatrick_scale:!1,category:"symbols"},u55b6:{keywords:["japanese","opening hours","orange-square"],"char":"\ud83c\ude3a",fitzpatrick_scale:!1,category:"symbols"},u6708:{keywords:["chinese","month","moon","japanese","orange-square","kanji"],"char":"\ud83c\ude37\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_pointed_black_star:{keywords:["orange-square","shape","polygon"],"char":"\u2734\ufe0f",fitzpatrick_scale:!1,category:"symbols"},vs:{keywords:["words","orange-square"],"char":"\ud83c\udd9a",fitzpatrick_scale:!1,category:"symbols"},accept:{keywords:["ok","good","chinese","kanji","agree","yes","orange-circle"],"char":"\ud83c\ude51",fitzpatrick_scale:!1,category:"symbols"},white_flower:{keywords:["japanese","spring"],"char":"\ud83d\udcae",fitzpatrick_scale:!1,category:"symbols"},ideograph_advantage:{keywords:["chinese","kanji","obtain","get","circle"],"char":"\ud83c\ude50",fitzpatrick_scale:!1,category:"symbols"},secret:{keywords:["privacy","chinese","sshh","kanji","red-circle"],"char":"\u3299\ufe0f",fitzpatrick_scale:!1,category:"symbols"},congratulations:{keywords:["chinese","kanji","japanese","red-circle"],"char":"\u3297\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u5408:{keywords:["japanese","chinese","join","kanji","red-square"],"char":"\ud83c\ude34",fitzpatrick_scale:!1,category:"symbols"},u6e80:{keywords:["full","chinese","japanese","red-square","kanji"],"char":"\ud83c\ude35",fitzpatrick_scale:!1,category:"symbols"},u7981:{keywords:["kanji","japanese","chinese","forbidden","limit","restricted","red-square"],"char":"\ud83c\ude32",fitzpatrick_scale:!1,category:"symbols"},a:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd70\ufe0f",fitzpatrick_scale:!1,category:"symbols"},b:{keywords:["red-square","alphabet","letter"],"char":"\ud83c\udd71\ufe0f",fitzpatrick_scale:!1,category:"symbols"},ab:{keywords:["red-square","alphabet"],"char":"\ud83c\udd8e",fitzpatrick_scale:!1,category:"symbols"},cl:{keywords:["alphabet","words","red-square"],"char":"\ud83c\udd91",fitzpatrick_scale:!1,category:"symbols"},o2:{keywords:["alphabet","red-square","letter"],"char":"\ud83c\udd7e\ufe0f",fitzpatrick_scale:!1,category:"symbols"},sos:{keywords:["help","red-square","words","emergency","911"],"char":"\ud83c\udd98",fitzpatrick_scale:!1,category:"symbols"},no_entry:{keywords:["limit","security","privacy","bad","denied","stop","circle"],"char":"\u26d4",fitzpatrick_scale:!1,category:"symbols"},name_badge:{keywords:["fire","forbid"],"char":"\ud83d\udcdb",fitzpatrick_scale:!1,category:"symbols"},no_entry_sign:{keywords:["forbid","stop","limit","denied","disallow","circle"],"char":"\ud83d\udeab",fitzpatrick_scale:!1,category:"symbols"},x:{keywords:["no","delete","remove","cancel","red"],"char":"\u274c",fitzpatrick_scale:!1,category:"symbols"},o:{keywords:["circle","round"],"char":"\u2b55",fitzpatrick_scale:!1,category:"symbols"},stop_sign:{keywords:["stop"],"char":"\ud83d\uded1",fitzpatrick_scale:!1,category:"symbols"},anger:{keywords:["angry","mad"],"char":"\ud83d\udca2",fitzpatrick_scale:!1,category:"symbols"},hotsprings:{keywords:["bath","warm","relax"],"char":"\u2668\ufe0f",fitzpatrick_scale:!1,category:"symbols"},no_pedestrians:{keywords:["rules","crossing","walking","circle"],"char":"\ud83d\udeb7",fitzpatrick_scale:!1,category:"symbols"},do_not_litter:{keywords:["trash","bin","garbage","circle"],"char":"\ud83d\udeaf",fitzpatrick_scale:!1,category:"symbols"},no_bicycles:{keywords:["cyclist","prohibited","circle"],"char":"\ud83d\udeb3",fitzpatrick_scale:!1,category:"symbols"},"non-potable_water":{keywords:["drink","faucet","tap","circle"],"char":"\ud83d\udeb1",fitzpatrick_scale:!1,category:"symbols"},underage:{keywords:["18","drink","pub","night","minor","circle"],"char":"\ud83d\udd1e",fitzpatrick_scale:!1,category:"symbols"},no_mobile_phones:{keywords:["iphone","mute","circle"],"char":"\ud83d\udcf5",fitzpatrick_scale:!1,category:"symbols"},exclamation:{keywords:["heavy_exclamation_mark","danger","surprise","punctuation","wow","warning"],"char":"\u2757",fitzpatrick_scale:!1,category:"symbols"},grey_exclamation:{keywords:["surprise","punctuation","gray","wow","warning"],"char":"\u2755",fitzpatrick_scale:!1,category:"symbols"},question:{keywords:["doubt","confused"],"char":"\u2753",fitzpatrick_scale:!1,category:"symbols"},grey_question:{keywords:["doubts","gray","huh","confused"],"char":"\u2754",fitzpatrick_scale:!1,category:"symbols"},bangbang:{keywords:["exclamation","surprise"],"char":"\u203c\ufe0f",fitzpatrick_scale:!1,category:"symbols"},interrobang:{keywords:["wat","punctuation","surprise"],"char":"\u2049\ufe0f",fitzpatrick_scale:!1,category:"symbols"},100:{keywords:["score","perfect","numbers","century","exam","quiz","test","pass","hundred"],"char":"\ud83d\udcaf",fitzpatrick_scale:!1,category:"symbols"},low_brightness:{keywords:["sun","afternoon","warm","summer"],"char":"\ud83d\udd05",fitzpatrick_scale:!1,category:"symbols"},high_brightness:{keywords:["sun","light"],"char":"\ud83d\udd06",fitzpatrick_scale:!1,category:"symbols"},trident:{keywords:["weapon","slaytp"],"char":"\ud83d\udd31",fitzpatrick_scale:!1,category:"symbols"},fleur_de_lis:{keywords:["decorative","scout"],"char":"\u269c",fitzpatrick_scale:!1,category:"symbols"},part_alternation_mark:{keywords:["graph","presentation","stats","business","economics","bad"],"char":"\u303d\ufe0f",fitzpatrick_scale:!1,category:"symbols"},warning:{keywords:["exclamation","wip","alert","error","problem","issue"],"char":"\u26a0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},children_crossing:{keywords:["school","warning","danger","sign","driving","yellow-diamond"],"char":"\ud83d\udeb8",fitzpatrick_scale:!1,category:"symbols"},beginner:{keywords:["badge","shield"],"char":"\ud83d\udd30",fitzpatrick_scale:!1,category:"symbols"},recycle:{keywords:["arrow","environment","garbage","trash"],"char":"\u267b\ufe0f",fitzpatrick_scale:!1,category:"symbols"},u6307:{keywords:["chinese","point","green-square","kanji"],"char":"\ud83c\ude2f",fitzpatrick_scale:!1,category:"symbols"},chart:{keywords:["green-square","graph","presentation","stats"],"char":"\ud83d\udcb9",fitzpatrick_scale:!1,category:"symbols"},sparkle:{keywords:["stars","green-square","awesome","good","fireworks"],"char":"\u2747\ufe0f",fitzpatrick_scale:!1,category:"symbols"},eight_spoked_asterisk:{keywords:["star","sparkle","green-square"],"char":"\u2733\ufe0f",fitzpatrick_scale:!1,category:"symbols"},negative_squared_cross_mark:{keywords:["x","green-square","no","deny"],"char":"\u274e",fitzpatrick_scale:!1,category:"symbols"},white_check_mark:{keywords:["green-square","ok","agree","vote","election","answer","tick"],"char":"\u2705",fitzpatrick_scale:!1,category:"symbols"},diamond_shape_with_a_dot_inside:{keywords:["jewel","blue","gem","crystal","fancy"],"char":"\ud83d\udca0",fitzpatrick_scale:!1,category:"symbols"},cyclone:{keywords:["weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado","hurricane","typhoon"],"char":"\ud83c\udf00",fitzpatrick_scale:!1,category:"symbols"},loop:{keywords:["tape","cassette"],"char":"\u27bf",fitzpatrick_scale:!1,category:"symbols"},globe_with_meridians:{keywords:["earth","international","world","internet","interweb","i18n"],"char":"\ud83c\udf10",fitzpatrick_scale:!1,category:"symbols"},m:{keywords:["alphabet","blue-circle","letter"],"char":"\u24c2\ufe0f",fitzpatrick_scale:!1,category:"symbols"},atm:{keywords:["money","sales","cash","blue-square","payment","bank"],"char":"\ud83c\udfe7",fitzpatrick_scale:!1,category:"symbols"},sa:{keywords:["japanese","blue-square","katakana"],"char":"\ud83c\ude02\ufe0f",fitzpatrick_scale:!1,category:"symbols"},passport_control:{keywords:["custom","blue-square"],"char":"\ud83d\udec2",fitzpatrick_scale:!1,category:"symbols"},customs:{keywords:["passport","border","blue-square"],"char":"\ud83d\udec3",fitzpatrick_scale:!1,category:"symbols"},baggage_claim:{keywords:["blue-square","airport","transport"],"char":"\ud83d\udec4",fitzpatrick_scale:!1,category:"symbols"},left_luggage:{keywords:["blue-square","travel"],"char":"\ud83d\udec5",fitzpatrick_scale:!1,category:"symbols"},wheelchair:{keywords:["blue-square","disabled","a11y","accessibility"],"char":"\u267f",fitzpatrick_scale:!1,category:"symbols"},no_smoking:{keywords:["cigarette","blue-square","smell","smoke"],"char":"\ud83d\udead",fitzpatrick_scale:!1,category:"symbols"},wc:{keywords:["toilet","restroom","blue-square"],"char":"\ud83d\udebe",fitzpatrick_scale:!1,category:"symbols"},parking:{keywords:["cars","blue-square","alphabet","letter"],"char":"\ud83c\udd7f\ufe0f",fitzpatrick_scale:!1,category:"symbols"},potable_water:{keywords:["blue-square","liquid","restroom","cleaning","faucet"],"char":"\ud83d\udeb0",fitzpatrick_scale:!1,category:"symbols"},mens:{keywords:["toilet","restroom","wc","blue-square","gender","male"],"char":"\ud83d\udeb9",fitzpatrick_scale:!1,category:"symbols"},womens:{keywords:["purple-square","woman","female","toilet","loo","restroom","gender"],"char":"\ud83d\udeba",fitzpatrick_scale:!1,category:"symbols"},baby_symbol:{keywords:["orange-square","child"],"char":"\ud83d\udebc",fitzpatrick_scale:!1,category:"symbols"},restroom:{keywords:["blue-square","toilet","refresh","wc","gender"],"char":"\ud83d\udebb",fitzpatrick_scale:!1,category:"symbols"},put_litter_in_its_place:{keywords:["blue-square","sign","human","info"],"char":"\ud83d\udeae",fitzpatrick_scale:!1,category:"symbols"},cinema:{keywords:["blue-square","record","film","movie","curtain","stage","theater"],"char":"\ud83c\udfa6",fitzpatrick_scale:!1,category:"symbols"},signal_strength:{keywords:["blue-square","reception","phone","internet","connection","wifi","bluetooth","bars"],"char":"\ud83d\udcf6",fitzpatrick_scale:!1,category:"symbols"},koko:{keywords:["blue-square","here","katakana","japanese","destination"],"char":"\ud83c\ude01",fitzpatrick_scale:!1,category:"symbols"},ng:{keywords:["blue-square","words","shape","icon"],"char":"\ud83c\udd96",fitzpatrick_scale:!1,category:"symbols"},ok:{keywords:["good","agree","yes","blue-square"],"char":"\ud83c\udd97",fitzpatrick_scale:!1,category:"symbols"},up:{keywords:["blue-square","above","high"],"char":"\ud83c\udd99",fitzpatrick_scale:!1,category:"symbols"},cool:{keywords:["words","blue-square"],"char":"\ud83c\udd92",fitzpatrick_scale:!1,category:"symbols"},"new":{keywords:["blue-square","words","start"],"char":"\ud83c\udd95",fitzpatrick_scale:!1,category:"symbols"},free:{keywords:["blue-square","words"],"char":"\ud83c\udd93",fitzpatrick_scale:!1,category:"symbols"},zero:{keywords:["0","numbers","blue-square","null"],"char":"0\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},one:{keywords:["blue-square","numbers","1"],"char":"1\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},two:{keywords:["numbers","2","prime","blue-square"],"char":"2\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},three:{keywords:["3","numbers","prime","blue-square"],"char":"3\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},four:{keywords:["4","numbers","blue-square"],"char":"4\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},five:{keywords:["5","numbers","blue-square","prime"],"char":"5\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},six:{keywords:["6","numbers","blue-square"],"char":"6\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},seven:{keywords:["7","numbers","blue-square","prime"],"char":"7\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},eight:{keywords:["8","blue-square","numbers"],"char":"8\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},nine:{keywords:["blue-square","numbers","9"],"char":"9\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},keycap_ten:{keywords:["numbers","10","blue-square"],"char":"\ud83d\udd1f",fitzpatrick_scale:!1,category:"symbols"},asterisk:{keywords:["star","keycap"],"char":"*\u20e3",fitzpatrick_scale:!1,category:"symbols"},1234:{keywords:["numbers","blue-square"],"char":"\ud83d\udd22",fitzpatrick_scale:!1,category:"symbols"},eject_button:{keywords:["blue-square"],"char":"\u23cf\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_forward:{keywords:["blue-square","right","direction","play"],"char":"\u25b6\ufe0f",fitzpatrick_scale:!1,category:"symbols"},pause_button:{keywords:["pause","blue-square"],"char":"\u23f8",fitzpatrick_scale:!1,category:"symbols"},next_track_button:{keywords:["forward","next","blue-square"],"char":"\u23ed",fitzpatrick_scale:!1,category:"symbols"},stop_button:{keywords:["blue-square"],"char":"\u23f9",fitzpatrick_scale:!1,category:"symbols"},record_button:{keywords:["blue-square"],"char":"\u23fa",fitzpatrick_scale:!1,category:"symbols"},play_or_pause_button:{keywords:["blue-square","play","pause"],"char":"\u23ef",fitzpatrick_scale:!1,category:"symbols"},previous_track_button:{keywords:["backward"],"char":"\u23ee",fitzpatrick_scale:!1,category:"symbols"},fast_forward:{keywords:["blue-square","play","speed","continue"],"char":"\u23e9",fitzpatrick_scale:!1,category:"symbols"},rewind:{keywords:["play","blue-square"],"char":"\u23ea",fitzpatrick_scale:!1,category:"symbols"},twisted_rightwards_arrows:{keywords:["blue-square","shuffle","music","random"],"char":"\ud83d\udd00",fitzpatrick_scale:!1,category:"symbols"},repeat:{keywords:["loop","record"],"char":"\ud83d\udd01",fitzpatrick_scale:!1,category:"symbols"},repeat_one:{keywords:["blue-square","loop"],"char":"\ud83d\udd02",fitzpatrick_scale:!1,category:"symbols"},arrow_backward:{keywords:["blue-square","left","direction"],"char":"\u25c0\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_small:{keywords:["blue-square","triangle","direction","point","forward","top"],"char":"\ud83d\udd3c",fitzpatrick_scale:!1,category:"symbols"},arrow_down_small:{keywords:["blue-square","direction","bottom"],"char":"\ud83d\udd3d",fitzpatrick_scale:!1,category:"symbols"},arrow_double_up:{keywords:["blue-square","direction","top"],"char":"\u23eb",fitzpatrick_scale:!1,category:"symbols"},arrow_double_down:{keywords:["blue-square","direction","bottom"],"char":"\u23ec",fitzpatrick_scale:!1,category:"symbols"},arrow_right:{keywords:["blue-square","next"],"char":"\u27a1\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_left:{keywords:["blue-square","previous","back"],"char":"\u2b05\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up:{keywords:["blue-square","continue","top","direction"],"char":"\u2b06\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_down:{keywords:["blue-square","direction","bottom"],"char":"\u2b07\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_right:{keywords:["blue-square","point","direction","diagonal","northeast"],"char":"\u2197\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_right:{keywords:["blue-square","direction","diagonal","southeast"],"char":"\u2198\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_lower_left:{keywords:["blue-square","direction","diagonal","southwest"],"char":"\u2199\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_upper_left:{keywords:["blue-square","point","direction","diagonal","northwest"],"char":"\u2196\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_up_down:{keywords:["blue-square","direction","way","vertical"],"char":"\u2195\ufe0f",fitzpatrick_scale:!1,category:"symbols"},left_right_arrow:{keywords:["shape","direction","horizontal","sideways"],"char":"\u2194\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_counterclockwise:{keywords:["blue-square","sync","cycle"],"char":"\ud83d\udd04",fitzpatrick_scale:!1,category:"symbols"},arrow_right_hook:{keywords:["blue-square","return","rotate","direction"],"char":"\u21aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},leftwards_arrow_with_hook:{keywords:["back","return","blue-square","undo","enter"],"char":"\u21a9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_up:{keywords:["blue-square","direction","top"],"char":"\u2934\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrow_heading_down:{keywords:["blue-square","direction","bottom"],"char":"\u2935\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hash:{keywords:["symbol","blue-square","twitter"],"char":"#\ufe0f\u20e3",fitzpatrick_scale:!1,category:"symbols"},information_source:{keywords:["blue-square","alphabet","letter"],"char":"\u2139\ufe0f",fitzpatrick_scale:!1,category:"symbols"},abc:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd24",fitzpatrick_scale:!1,category:"symbols"},abcd:{keywords:["blue-square","alphabet"],"char":"\ud83d\udd21",fitzpatrick_scale:!1,category:"symbols"},capital_abcd:{keywords:["alphabet","words","blue-square"],"char":"\ud83d\udd20",fitzpatrick_scale:!1,category:"symbols"},symbols:{keywords:["blue-square","music","note","ampersand","percent","glyphs","characters"],"char":"\ud83d\udd23",fitzpatrick_scale:!1,category:"symbols"},musical_note:{keywords:["score","tone","sound"],"char":"\ud83c\udfb5",fitzpatrick_scale:!1,category:"symbols"},notes:{keywords:["music","score"],"char":"\ud83c\udfb6",fitzpatrick_scale:!1,category:"symbols"},wavy_dash:{keywords:["draw","line","moustache","mustache","squiggle","scribble"],"char":"\u3030\ufe0f",fitzpatrick_scale:!1,category:"symbols"},curly_loop:{keywords:["scribble","draw","shape","squiggle"],"char":"\u27b0",fitzpatrick_scale:!1,category:"symbols"},heavy_check_mark:{keywords:["ok","nike","answer","yes","tick"],"char":"\u2714\ufe0f",fitzpatrick_scale:!1,category:"symbols"},arrows_clockwise:{keywords:["sync","cycle","round","repeat"],"char":"\ud83d\udd03",fitzpatrick_scale:!1,category:"symbols"},heavy_plus_sign:{keywords:["math","calculation","addition","more","increase"],"char":"\u2795",fitzpatrick_scale:!1,category:"symbols"},heavy_minus_sign:{keywords:["math","calculation","subtract","less"],"char":"\u2796",fitzpatrick_scale:!1,category:"symbols"},heavy_division_sign:{keywords:["divide","math","calculation"],"char":"\u2797",fitzpatrick_scale:!1,category:"symbols"},heavy_multiplication_x:{keywords:["math","calculation"],"char":"\u2716\ufe0f",fitzpatrick_scale:!1,category:"symbols"},infinity:{keywords:["forever"],"char":"\u267e",fitzpatrick_scale:!1,category:"symbols"},heavy_dollar_sign:{keywords:["money","sales","payment","currency","buck"],"char":"\ud83d\udcb2",fitzpatrick_scale:!1,category:"symbols"},currency_exchange:{keywords:["money","sales","dollar","travel"],"char":"\ud83d\udcb1",fitzpatrick_scale:!1,category:"symbols"},copyright:{keywords:["ip","license","circle","law","legal"],"char":"\xa9\ufe0f",fitzpatrick_scale:!1,category:"symbols"},registered:{keywords:["alphabet","circle"],"char":"\xae\ufe0f",fitzpatrick_scale:!1,category:"symbols"},tm:{keywords:["trademark","brand","law","legal"],"char":"\u2122\ufe0f",fitzpatrick_scale:!1,category:"symbols"},end:{keywords:["words","arrow"],"char":"\ud83d\udd1a",fitzpatrick_scale:!1,category:"symbols"},back:{keywords:["arrow","words","return"],"char":"\ud83d\udd19",fitzpatrick_scale:!1,category:"symbols"},on:{keywords:["arrow","words"],"char":"\ud83d\udd1b",fitzpatrick_scale:!1,category:"symbols"},top:{keywords:["words","blue-square"],"char":"\ud83d\udd1d",fitzpatrick_scale:!1,category:"symbols"},soon:{keywords:["arrow","words"],"char":"\ud83d\udd1c",fitzpatrick_scale:!1,category:"symbols"},ballot_box_with_check:{keywords:["ok","agree","confirm","black-square","vote","election","yes","tick"],"char":"\u2611\ufe0f",fitzpatrick_scale:!1,category:"symbols"},radio_button:{keywords:["input","old","music","circle"],"char":"\ud83d\udd18",fitzpatrick_scale:!1,category:"symbols"},white_circle:{keywords:["shape","round"],"char":"\u26aa",fitzpatrick_scale:!1,category:"symbols"},black_circle:{keywords:["shape","button","round"],"char":"\u26ab",fitzpatrick_scale:!1,category:"symbols"},red_circle:{keywords:["shape","error","danger"],"char":"\ud83d\udd34",fitzpatrick_scale:!1,category:"symbols"},large_blue_circle:{keywords:["shape","icon","button"],"char":"\ud83d\udd35",fitzpatrick_scale:!1,category:"symbols"},small_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd38",fitzpatrick_scale:!1,category:"symbols"},small_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd39",fitzpatrick_scale:!1,category:"symbols"},large_orange_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd36",fitzpatrick_scale:!1,category:"symbols"},large_blue_diamond:{keywords:["shape","jewel","gem"],"char":"\ud83d\udd37",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle:{keywords:["shape","direction","up","top"],"char":"\ud83d\udd3a",fitzpatrick_scale:!1,category:"symbols"},black_small_square:{keywords:["shape","icon"],"char":"\u25aa\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_small_square:{keywords:["shape","icon"],"char":"\u25ab\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_large_square:{keywords:["shape","icon","button"],"char":"\u2b1b",fitzpatrick_scale:!1,category:"symbols"},white_large_square:{keywords:["shape","icon","stone","button"],"char":"\u2b1c",fitzpatrick_scale:!1,category:"symbols"},small_red_triangle_down:{keywords:["shape","direction","bottom"],"char":"\ud83d\udd3b",fitzpatrick_scale:!1,category:"symbols"},black_medium_square:{keywords:["shape","button","icon"],"char":"\u25fc\ufe0f",fitzpatrick_scale:!1,category:"symbols"},white_medium_square:{keywords:["shape","stone","icon"],"char":"\u25fb\ufe0f",fitzpatrick_scale:!1,category:"symbols"},black_medium_small_square:{keywords:["icon","shape","button"],"char":"\u25fe",fitzpatrick_scale:!1,category:"symbols"},white_medium_small_square:{keywords:["shape","stone","icon","button"],"char":"\u25fd",fitzpatrick_scale:!1,category:"symbols"},black_square_button:{keywords:["shape","input","frame"],"char":"\ud83d\udd32",fitzpatrick_scale:!1,category:"symbols"},white_square_button:{keywords:["shape","input"],"char":"\ud83d\udd33",fitzpatrick_scale:!1,category:"symbols"},speaker:{keywords:["sound","volume","silence","broadcast"],"char":"\ud83d\udd08",fitzpatrick_scale:!1,category:"symbols"},sound:{keywords:["volume","speaker","broadcast"],"char":"\ud83d\udd09",fitzpatrick_scale:!1,category:"symbols"},loud_sound:{keywords:["volume","noise","noisy","speaker","broadcast"],"char":"\ud83d\udd0a",fitzpatrick_scale:!1,category:"symbols"},mute:{keywords:["sound","volume","silence","quiet"],"char":"\ud83d\udd07",fitzpatrick_scale:!1,category:"symbols"},mega:{keywords:["sound","speaker","volume"],"char":"\ud83d\udce3",fitzpatrick_scale:!1,category:"symbols"},loudspeaker:{keywords:["volume","sound"],"char":"\ud83d\udce2",fitzpatrick_scale:!1,category:"symbols"},bell:{keywords:["sound","notification","christmas","xmas","chime"],"char":"\ud83d\udd14",fitzpatrick_scale:!1,category:"symbols"},no_bell:{keywords:["sound","volume","mute","quiet","silent"],"char":"\ud83d\udd15",fitzpatrick_scale:!1,category:"symbols"},black_joker:{keywords:["poker","cards","game","play","magic"],"char":"\ud83c\udccf",fitzpatrick_scale:!1,category:"symbols"},mahjong:{keywords:["game","play","chinese","kanji"],"char":"\ud83c\udc04",fitzpatrick_scale:!1,category:"symbols"},spades:{keywords:["poker","cards","suits","magic"],"char":"\u2660\ufe0f",fitzpatrick_scale:!1,category:"symbols"},clubs:{keywords:["poker","cards","magic","suits"],"char":"\u2663\ufe0f",fitzpatrick_scale:!1,category:"symbols"},hearts:{keywords:["poker","cards","magic","suits"],"char":"\u2665\ufe0f",fitzpatrick_scale:!1,category:"symbols"},diamonds:{keywords:["poker","cards","magic","suits"],"char":"\u2666\ufe0f",fitzpatrick_scale:!1,category:"symbols"},flower_playing_cards:{keywords:["game","sunset","red"],"char":"\ud83c\udfb4",fitzpatrick_scale:!1,category:"symbols"},thought_balloon:{keywords:["bubble","cloud","speech","thinking","dream"],"char":"\ud83d\udcad",fitzpatrick_scale:!1,category:"symbols"},right_anger_bubble:{keywords:["caption","speech","thinking","mad"],"char":"\ud83d\uddef",fitzpatrick_scale:!1,category:"symbols"},speech_balloon:{keywords:["bubble","words","message","talk","chatting"],"char":"\ud83d\udcac",fitzpatrick_scale:!1,category:"symbols"},left_speech_bubble:{keywords:["words","message","talk","chatting"],"char":"\ud83d\udde8",fitzpatrick_scale:!1,category:"symbols"},clock1:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd50",fitzpatrick_scale:!1,category:"symbols"},clock2:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd51",fitzpatrick_scale:!1,category:"symbols"},clock3:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd52",fitzpatrick_scale:!1,category:"symbols"},clock4:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd53",fitzpatrick_scale:!1,category:"symbols"},clock5:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd54",fitzpatrick_scale:!1,category:"symbols"},clock6:{keywords:["time","late","early","schedule","dawn","dusk"],"char":"\ud83d\udd55",fitzpatrick_scale:!1,category:"symbols"},clock7:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd56",fitzpatrick_scale:!1,category:"symbols"},clock8:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd57",fitzpatrick_scale:!1,category:"symbols"},clock9:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd58",fitzpatrick_scale:!1,category:"symbols"},clock10:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd59",fitzpatrick_scale:!1,category:"symbols"},clock11:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5a",fitzpatrick_scale:!1,category:"symbols"},clock12:{keywords:["time","noon","midnight","midday","late","early","schedule"],"char":"\ud83d\udd5b",fitzpatrick_scale:!1,category:"symbols"},clock130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5c",fitzpatrick_scale:!1,category:"symbols"},clock230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5d",fitzpatrick_scale:!1,category:"symbols"},clock330:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5e",fitzpatrick_scale:!1,category:"symbols"},clock430:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd5f",fitzpatrick_scale:!1,category:"symbols"},clock530:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd60",fitzpatrick_scale:!1,category:"symbols"},clock630:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd61",fitzpatrick_scale:!1,category:"symbols"},clock730:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd62",fitzpatrick_scale:!1,category:"symbols"},clock830:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd63",fitzpatrick_scale:!1,category:"symbols"},clock930:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd64",fitzpatrick_scale:!1,category:"symbols"},clock1030:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd65",fitzpatrick_scale:!1,category:"symbols"},clock1130:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd66",fitzpatrick_scale:!1,category:"symbols"},clock1230:{keywords:["time","late","early","schedule"],"char":"\ud83d\udd67",fitzpatrick_scale:!1,category:"symbols"},afghanistan:{keywords:["af","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},aland_islands:{keywords:["\xc5land","islands","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},albania:{keywords:["al","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},algeria:{keywords:["dz","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},american_samoa:{keywords:["american","ws","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},andorra:{keywords:["ad","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},angola:{keywords:["ao","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},anguilla:{keywords:["ai","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},antarctica:{keywords:["aq","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},antigua_barbuda:{keywords:["antigua","barbuda","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},argentina:{keywords:["ar","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},armenia:{keywords:["am","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},aruba:{keywords:["aw","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},australia:{keywords:["au","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},austria:{keywords:["at","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},azerbaijan:{keywords:["az","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},bahamas:{keywords:["bs","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},bahrain:{keywords:["bh","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},bangladesh:{keywords:["bd","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},barbados:{keywords:["bb","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},belarus:{keywords:["by","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},belgium:{keywords:["be","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},belize:{keywords:["bz","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},benin:{keywords:["bj","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},bermuda:{keywords:["bm","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},bhutan:{keywords:["bt","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},bolivia:{keywords:["bo","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},caribbean_netherlands:{keywords:["bonaire","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},bosnia_herzegovina:{keywords:["bosnia","herzegovina","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},botswana:{keywords:["bw","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},brazil:{keywords:["br","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},british_indian_ocean_territory:{keywords:["british","indian","ocean","territory","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},british_virgin_islands:{keywords:["british","virgin","islands","bvi","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},brunei:{keywords:["bn","darussalam","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},bulgaria:{keywords:["bg","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},burkina_faso:{keywords:["burkina","faso","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},burundi:{keywords:["bi","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},cape_verde:{keywords:["cabo","verde","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},cambodia:{keywords:["kh","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},cameroon:{keywords:["cm","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},canada:{keywords:["ca","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},canary_islands:{keywords:["canary","islands","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},cayman_islands:{keywords:["cayman","islands","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},central_african_republic:{keywords:["central","african","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},chad:{keywords:["td","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},chile:{keywords:["flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},cn:{keywords:["china","chinese","prc","flag","country","nation","banner"],"char":"\ud83c\udde8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},christmas_island:{keywords:["christmas","island","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},cocos_islands:{keywords:["cocos","keeling","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},colombia:{keywords:["co","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},comoros:{keywords:["km","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},congo_brazzaville:{keywords:["congo","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},congo_kinshasa:{keywords:["congo","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},cook_islands:{keywords:["cook","islands","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},costa_rica:{keywords:["costa","rica","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},croatia:{keywords:["hr","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},cuba:{keywords:["cu","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},curacao:{keywords:["cura\xe7ao","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},cyprus:{keywords:["cy","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},czech_republic:{keywords:["cz","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},denmark:{keywords:["dk","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},djibouti:{keywords:["dj","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},dominica:{keywords:["dm","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},dominican_republic:{keywords:["dominican","republic","flag","nation","country","banner"],"char":"\ud83c\udde9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ecuador:{keywords:["ec","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},egypt:{keywords:["eg","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},el_salvador:{keywords:["el","salvador","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},equatorial_guinea:{keywords:["equatorial","gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},eritrea:{keywords:["er","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},estonia:{keywords:["ee","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ethiopia:{keywords:["et","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},eu:{keywords:["european","union","flag","banner"],"char":"\ud83c\uddea\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},falkland_islands:{keywords:["falkland","islands","malvinas","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},faroe_islands:{keywords:["faroe","islands","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},fiji:{keywords:["fj","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},finland:{keywords:["fi","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},fr:{keywords:["banner","flag","nation","france","french","country"],"char":"\ud83c\uddeb\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},french_guiana:{keywords:["french","guiana","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_polynesia:{keywords:["french","polynesia","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},french_southern_territories:{keywords:["french","southern","territories","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},gabon:{keywords:["ga","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},gambia:{keywords:["gm","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},georgia:{keywords:["ge","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},de:{keywords:["german","nation","flag","country","banner"],"char":"\ud83c\udde9\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},ghana:{keywords:["gh","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},gibraltar:{keywords:["gi","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},greece:{keywords:["gr","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},greenland:{keywords:["gl","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},grenada:{keywords:["gd","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},guadeloupe:{keywords:["gp","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},guam:{keywords:["gu","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},guatemala:{keywords:["gt","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},guernsey:{keywords:["gg","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},guinea:{keywords:["gn","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},guinea_bissau:{keywords:["gw","bissau","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},guyana:{keywords:["gy","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},haiti:{keywords:["ht","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},honduras:{keywords:["hn","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},hong_kong:{keywords:["hong","kong","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},hungary:{keywords:["hu","flag","nation","country","banner"],"char":"\ud83c\udded\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},iceland:{keywords:["is","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},india:{keywords:["in","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},indonesia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},iran:{keywords:["iran,","islamic","republic","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},iraq:{keywords:["iq","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},ireland:{keywords:["ie","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},isle_of_man:{keywords:["isle","man","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},israel:{keywords:["il","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},it:{keywords:["italy","flag","nation","country","banner"],"char":"\ud83c\uddee\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},cote_divoire:{keywords:["ivory","coast","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},jamaica:{keywords:["jm","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},jp:{keywords:["japanese","nation","flag","country","banner"],"char":"\ud83c\uddef\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},jersey:{keywords:["je","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},jordan:{keywords:["jo","flag","nation","country","banner"],"char":"\ud83c\uddef\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},kazakhstan:{keywords:["kz","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},kenya:{keywords:["ke","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},kiribati:{keywords:["ki","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},kosovo:{keywords:["xk","flag","nation","country","banner"],"char":"\ud83c\uddfd\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},kuwait:{keywords:["kw","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},kyrgyzstan:{keywords:["kg","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},laos:{keywords:["lao","democratic","republic","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},latvia:{keywords:["lv","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},lebanon:{keywords:["lb","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},lesotho:{keywords:["ls","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},liberia:{keywords:["lr","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},libya:{keywords:["ly","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},liechtenstein:{keywords:["li","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},lithuania:{keywords:["lt","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},luxembourg:{keywords:["lu","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},macau:{keywords:["macao","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},macedonia:{keywords:["macedonia,","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},madagascar:{keywords:["mg","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},malawi:{keywords:["mw","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},malaysia:{keywords:["my","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},maldives:{keywords:["mv","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},mali:{keywords:["ml","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},malta:{keywords:["mt","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},marshall_islands:{keywords:["marshall","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},martinique:{keywords:["mq","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf6",fitzpatrick_scale:!1,category:"flags"},mauritania:{keywords:["mr","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},mauritius:{keywords:["mu","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},mayotte:{keywords:["yt","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},mexico:{keywords:["mx","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},micronesia:{keywords:["micronesia,","federated","states","flag","nation","country","banner"],"char":"\ud83c\uddeb\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},moldova:{keywords:["moldova,","republic","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},monaco:{keywords:["mc","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},mongolia:{keywords:["mn","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},montenegro:{keywords:["me","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},montserrat:{keywords:["ms","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},morocco:{keywords:["ma","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},mozambique:{keywords:["mz","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},myanmar:{keywords:["mm","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},namibia:{keywords:["na","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},nauru:{keywords:["nr","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},nepal:{keywords:["np","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},netherlands:{keywords:["nl","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},new_caledonia:{keywords:["new","caledonia","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},new_zealand:{keywords:["new","zealand","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},nicaragua:{keywords:["ni","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},niger:{keywords:["ne","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},nigeria:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},niue:{keywords:["nu","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},norfolk_island:{keywords:["norfolk","island","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},northern_mariana_islands:{keywords:["northern","mariana","islands","flag","nation","country","banner"],"char":"\ud83c\uddf2\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},north_korea:{keywords:["north","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf5",fitzpatrick_scale:!1,category:"flags"},norway:{keywords:["no","flag","nation","country","banner"],"char":"\ud83c\uddf3\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},oman:{keywords:["om_symbol","flag","nation","country","banner"],"char":"\ud83c\uddf4\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},pakistan:{keywords:["pk","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},palau:{keywords:["pw","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},palestinian_territories:{keywords:["palestine","palestinian","territories","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},panama:{keywords:["pa","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},papua_new_guinea:{keywords:["papua","new","guinea","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},paraguay:{keywords:["py","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},peru:{keywords:["pe","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},philippines:{keywords:["ph","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},pitcairn_islands:{keywords:["pitcairn","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},poland:{keywords:["pl","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},portugal:{keywords:["pt","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},puerto_rico:{keywords:["puerto","rico","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},qatar:{keywords:["qa","flag","nation","country","banner"],"char":"\ud83c\uddf6\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},reunion:{keywords:["r\xe9union","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},romania:{keywords:["ro","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},ru:{keywords:["russian","federation","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},rwanda:{keywords:["rw","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},st_barthelemy:{keywords:["saint","barth\xe9lemy","flag","nation","country","banner"],"char":"\ud83c\udde7\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},st_helena:{keywords:["saint","helena","ascension","tristan","cunha","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},st_kitts_nevis:{keywords:["saint","kitts","nevis","flag","nation","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},st_lucia:{keywords:["saint","lucia","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},st_pierre_miquelon:{keywords:["saint","pierre","miquelon","flag","nation","country","banner"],"char":"\ud83c\uddf5\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},st_vincent_grenadines:{keywords:["saint","vincent","grenadines","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},samoa:{keywords:["ws","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},san_marino:{keywords:["san","marino","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},sao_tome_principe:{keywords:["sao","tome","principe","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},saudi_arabia:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},senegal:{keywords:["sn","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},serbia:{keywords:["rs","flag","nation","country","banner"],"char":"\ud83c\uddf7\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},seychelles:{keywords:["sc","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},sierra_leone:{keywords:["sierra","leone","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},singapore:{keywords:["sg","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},sint_maarten:{keywords:["sint","maarten","dutch","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfd",fitzpatrick_scale:!1,category:"flags"},slovakia:{keywords:["sk","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},slovenia:{keywords:["si","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},solomon_islands:{keywords:["solomon","islands","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},somalia:{keywords:["so","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},south_africa:{keywords:["south","africa","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},south_georgia_south_sandwich_islands:{keywords:["south","georgia","sandwich","islands","flag","nation","country","banner"],"char":"\ud83c\uddec\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},kr:{keywords:["south","korea","nation","flag","country","banner"],"char":"\ud83c\uddf0\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},south_sudan:{keywords:["south","sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},es:{keywords:["spain","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},sri_lanka:{keywords:["sri","lanka","flag","nation","country","banner"],"char":"\ud83c\uddf1\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},sudan:{keywords:["sd","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\udde9",fitzpatrick_scale:!1,category:"flags"},suriname:{keywords:["sr","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},swaziland:{keywords:["sz","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},sweden:{keywords:["se","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},switzerland:{keywords:["ch","flag","nation","country","banner"],"char":"\ud83c\udde8\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},syria:{keywords:["syrian","arab","republic","flag","nation","country","banner"],"char":"\ud83c\uddf8\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},taiwan:{keywords:["tw","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},tajikistan:{keywords:["tj","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddef",fitzpatrick_scale:!1,category:"flags"},tanzania:{keywords:["tanzania,","united","republic","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},thailand:{keywords:["th","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},timor_leste:{keywords:["timor","leste","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf1",fitzpatrick_scale:!1,category:"flags"},togo:{keywords:["tg","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},tokelau:{keywords:["tk","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf0",fitzpatrick_scale:!1,category:"flags"},tonga:{keywords:["to","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf4",fitzpatrick_scale:!1,category:"flags"},trinidad_tobago:{keywords:["trinidad","tobago","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf9",fitzpatrick_scale:!1,category:"flags"},tunisia:{keywords:["tn","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},tr:{keywords:["turkey","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf7",fitzpatrick_scale:!1,category:"flags"},turkmenistan:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},turks_caicos_islands:{keywords:["turks","caicos","islands","flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\udde8",fitzpatrick_scale:!1,category:"flags"},tuvalu:{keywords:["flag","nation","country","banner"],"char":"\ud83c\uddf9\ud83c\uddfb",fitzpatrick_scale:!1,category:"flags"},uganda:{keywords:["ug","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddec",fitzpatrick_scale:!1,category:"flags"},ukraine:{keywords:["ua","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},united_arab_emirates:{keywords:["united","arab","emirates","flag","nation","country","banner"],"char":"\ud83c\udde6\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},uk:{keywords:["united","kingdom","great","britain","northern","ireland","flag","nation","country","banner","british","UK","english","england","union jack"],"char":"\ud83c\uddec\ud83c\udde7",fitzpatrick_scale:!1,category:"flags"},england:{keywords:["flag","english"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},scotland:{keywords:["flag","scottish"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc73\udb40\udc63\udb40\udc74\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},wales:{keywords:["flag","welsh"],"char":"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc77\udb40\udc6c\udb40\udc73\udb40\udc7f",fitzpatrick_scale:!1,category:"flags"},us:{keywords:["united","states","america","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddf8",fitzpatrick_scale:!1,category:"flags"},us_virgin_islands:{keywords:["virgin","islands","us","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddee",fitzpatrick_scale:!1,category:"flags"},uruguay:{keywords:["uy","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddfe",fitzpatrick_scale:!1,category:"flags"},uzbekistan:{keywords:["uz","flag","nation","country","banner"],"char":"\ud83c\uddfa\ud83c\uddff",fitzpatrick_scale:!1,category:"flags"},vanuatu:{keywords:["vu","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddfa",fitzpatrick_scale:!1,category:"flags"},vatican_city:{keywords:["vatican","city","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\udde6",fitzpatrick_scale:!1,category:"flags"},venezuela:{keywords:["ve","bolivarian","republic","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},vietnam:{keywords:["viet","nam","flag","nation","country","banner"],"char":"\ud83c\uddfb\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},wallis_futuna:{keywords:["wallis","futuna","flag","nation","country","banner"],"char":"\ud83c\uddfc\ud83c\uddeb",fitzpatrick_scale:!1,category:"flags"},western_sahara:{keywords:["western","sahara","flag","nation","country","banner"],"char":"\ud83c\uddea\ud83c\udded",fitzpatrick_scale:!1,category:"flags"},yemen:{keywords:["ye","flag","nation","country","banner"],"char":"\ud83c\uddfe\ud83c\uddea",fitzpatrick_scale:!1,category:"flags"},zambia:{keywords:["zm","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddf2",fitzpatrick_scale:!1,category:"flags"},zimbabwe:{keywords:["zw","flag","nation","country","banner"],"char":"\ud83c\uddff\ud83c\uddfc",fitzpatrick_scale:!1,category:"flags"},united_nations:{keywords:["un","flag","banner"],"char":"\ud83c\uddfa\ud83c\uddf3",fitzpatrick_scale:!1,category:"flags"},pirate_flag:{keywords:["skull","crossbones","flag","banner"],"char":"\ud83c\udff4\u200d\u2620\ufe0f",fitzpatrick_scale:!1,category:"flags"}}); \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/icon.svg b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/icon.svg new file mode 100644 index 0000000000000000000000000000000000000000..d0103e7adc654f064d70133ef8756539a1fa72b5 --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityFormula.html b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityFormula.html new file mode 100644 index 0000000000000000000000000000000000000000..f5f25b560a4d076027a07be06152f9fab3c156a6 --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityFormula.html @@ -0,0 +1,111 @@ + + + + + + + + + + + + +
    +
    + sorry! Beta版本仅支持IE9及以上版本的浏览器,正式版本将会支持低版本浏览器,谢谢您的关注! +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar-bg.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..9dedcc678245832448f459c712e72039d36a2d03 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar-bg.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar.png new file mode 100644 index 0000000000000000000000000000000000000000..f98ded737e1ec99b2daf3b72dd53012f84a6439d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bar.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bg.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bg.png new file mode 100644 index 0000000000000000000000000000000000000000..214744181ce35a8679e439448df4467814013368 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bg.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bottom.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..e3df3d1c4a4291c9f812ac4a35ad4592e1cc671e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/bottom.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/btn.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/btn.png new file mode 100644 index 0000000000000000000000000000000000000000..31c0b52f0662a08b3265963960c222f5e72ddda5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/btn.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/down.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/down.png new file mode 100644 index 0000000000000000000000000000000000000000..31c0b52f0662a08b3265963960c222f5e72ddda5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/down.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/top.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/top.png new file mode 100644 index 0000000000000000000000000000000000000000..ecda0704e84186b1f8088cc3a81f0050780b663f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/top.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/up.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/up.png new file mode 100644 index 0000000000000000000000000000000000000000..31c0b52f0662a08b3265963960c222f5e72ddda5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/custom/up.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-bg.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9db6bee66f6ae920fbb433cc772c840a723437 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-bg.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-left.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-left.png new file mode 100644 index 0000000000000000000000000000000000000000..2f8c46ee09d0ff24cf64b524f9ad08792278bfa1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-left.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-right.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-right.png new file mode 100644 index 0000000000000000000000000000000000000000..9772c54a68519446ef3c4a307c7c6477f390086c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/bar-right.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-bg.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..450faa2763dc0392583e797081f2ddb2be0c94c3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-bg.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-left.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-left.png new file mode 100644 index 0000000000000000000000000000000000000000..01b9255a2b102faaf4f70ff8a54aad65b71bcfae Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-left.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-right.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-right.png new file mode 100644 index 0000000000000000000000000000000000000000..f74673a3a57b3b421d8c0310a992e3f73e804980 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/scrollbar/edit/thumb-right.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/aleph.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/aleph.png new file mode 100644 index 0000000000000000000000000000000000000000..fa895d86ab81cf79137307c0eeadbedc1d9ba68c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/aleph.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/bbbk.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/bbbk.png new file mode 100644 index 0000000000000000000000000000000000000000..a793366065a08f1d8e1e50ff1f2a7b20e3e8d94f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/bbbk.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/beth.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/beth.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cb723c1e99bf47ec8a70199d56edb36971323d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/beth.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/circleds.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/circleds.png new file mode 100644 index 0000000000000000000000000000000000000000..7f455e85c607d3634d43780d2c1ef6f6789364f9 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/circleds.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/complement.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/complement.png new file mode 100644 index 0000000000000000000000000000000000000000..f128598ff8f0639f3822e65341c95d85c8f5dd9e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/complement.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/daleth.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/daleth.png new file mode 100644 index 0000000000000000000000000000000000000000..ac705c36d25fcf682b8c89de7e79535b0d49978b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/daleth.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/ell.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/ell.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc6ee32611d8493acdfe134a360c176a6de43be Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/ell.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/eth.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/eth.png new file mode 100644 index 0000000000000000000000000000000000000000..501dbb12992d6d920f7c99a497cb833d3b23eaa7 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/eth.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/finv.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/finv.png new file mode 100644 index 0000000000000000000000000000000000000000..a838bc049826494997d266f6417389f4a697dcfb Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/finv.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/game.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/game.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a5edcdb84ada370a68a3699306b9627d7c0df6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/game.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/gimel.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/gimel.png new file mode 100644 index 0000000000000000000000000000000000000000..e4fd84081e800c0d18b57e4efe8b2b0fa8aa7094 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/gimel.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hbar.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hbar.png new file mode 100644 index 0000000000000000000000000000000000000000..8809ef3681740ad6cba9eaf95f4746247111061c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hbar.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hslash.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hslash.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e4e681936236c08d3dab451778423e36b5f1c4 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/hslash.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/im.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/im.png new file mode 100644 index 0000000000000000000000000000000000000000..201ec05e4bb3069cfc4cfb6853f389e5bb63bdbe Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/im.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/mho.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/mho.png new file mode 100644 index 0000000000000000000000000000000000000000..291f75054e0feea3b0bdb119589c534eca78aec0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/mho.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/partial.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/partial.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b46a06892fd6ca547725867240e12702685e63 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/partial.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/re.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/re.png new file mode 100644 index 0000000000000000000000000000000000000000..9c96096c5e0246b5dc274ebc7f01ab69c1422be1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/re.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/wp.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/wp.png new file mode 100644 index 0000000000000000000000000000000000000000..23f6541296fc04941c3eb652a55349b9b7cd8a70 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/alphabetic/wp.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowleft.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowleft.png new file mode 100644 index 0000000000000000000000000000000000000000..26a9213f79e6eb81dd4cf505f602d9e839ff835b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowleft.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowright.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowright.png new file mode 100644 index 0000000000000000000000000000000000000000..d29116286697f520bbbecf48c4710b0ef7a81164 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/circlearrowright.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowleft.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowleft.png new file mode 100644 index 0000000000000000000000000000000000000000..3cc06b90832d9ed31ee65827e1f8ff1a56a7ed4a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowleft.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowright.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowright.png new file mode 100644 index 0000000000000000000000000000000000000000..265e1e018eba5388b2fce042a9b5ae1b271b7d9e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/curvearrowright.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5c375b66c0c741fbe0ed352e8a954f28c352f1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downdownarrows.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downdownarrows.png new file mode 100644 index 0000000000000000000000000000000000000000..457598cdfa6d802453d64fe782bd0d52ec574524 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downdownarrows.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonleft.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonleft.png new file mode 100644 index 0000000000000000000000000000000000000000..f1de8a25bcc216fa1f6ad507e3ec99e304071537 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonleft.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonright.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonright.png new file mode 100644 index 0000000000000000000000000000000000000000..b94a0b8643e221b70bf529188b36e5df8afd79be Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/downharpoonright.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/gets.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/gets.png new file mode 100644 index 0000000000000000000000000000000000000000..8d659f01a2c3ecc6e43c8a15337b137d15785a00 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/gets.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftarrowtail.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftarrowtail.png new file mode 100644 index 0000000000000000000000000000000000000000..d36a75aaa41615c556991242053ac2fdcb60086f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftarrowtail.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoondown.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoondown.png new file mode 100644 index 0000000000000000000000000000000000000000..882f6e0307b8a657fbe3881d8487da76471ef3b7 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoondown.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoonup.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoonup.png new file mode 100644 index 0000000000000000000000000000000000000000..d9fd9f2d0636c9af03a1c431494c0e13c2283411 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftharpoonup.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftleftarrows.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftleftarrows.png new file mode 100644 index 0000000000000000000000000000000000000000..f4cd7c07b31aee31c45fe8438fdcea03acb4c3ed Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftleftarrows.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..4d8d86b40de8628cb7e90267bc2d6a2c529edab7 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrows.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrows.png new file mode 100644 index 0000000000000000000000000000000000000000..6f0717c7237f5b2bec9a988fbfb65d0e326b2586 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightarrows.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png new file mode 100644 index 0000000000000000000000000000000000000000..10a057fd01d2a79f6b691eabe4126aeeac1bd24a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightharpoons.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..d515001e032b759a11508f71ca4c26085d3e2ac3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/leftrightsquigarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5a64e957fec6d9d670341d2304f1c468d9b766 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3141daa36519f3ffeec6c0adb5b1e11997cc2e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longleftrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..ec988e1dfdb85a9d4fbcd926301d305a6f431d43 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/longrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowleft.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowleft.png new file mode 100644 index 0000000000000000000000000000000000000000..a4dee7a11c8ba76a032b0480645e8d5948e0a346 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowleft.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowright.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowright.png new file mode 100644 index 0000000000000000000000000000000000000000..67885fb9851c3963d4235fbb5c73ee510078843e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/looparrowright.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/multimap.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/multimap.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a0bb8acf9fd2ddd635b1fe25894f80cb369d41 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/multimap.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nearrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nearrow.png new file mode 100644 index 0000000000000000000000000000000000000000..d5891e0d994071f14b583737d60013e4f2777e0c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nearrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nleftarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nleftarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..df714e174f027fa32dd9eefda881425fda6fc707 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nleftarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b29d923b4ade77c41efefd6922a9355a89b6c4f6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nwarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nwarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7b7d23d8897a32cec3900c15a438c4a85ced3b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/nwarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightarrowtail.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightarrowtail.png new file mode 100644 index 0000000000000000000000000000000000000000..27cdc5bf6850ee18e46d9717e72d5e82ba6d21b2 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightarrowtail.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoondown.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoondown.png new file mode 100644 index 0000000000000000000000000000000000000000..e384cf845a1a22e8d2297cc59074f3fd7091f31f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoondown.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoonup.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoonup.png new file mode 100644 index 0000000000000000000000000000000000000000..187e1eb24d08e9fdcf342cc78cd033850ce7741a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightharpoonup.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftarrows.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftarrows.png new file mode 100644 index 0000000000000000000000000000000000000000..cdec5d9e416f3e0e851b00cefcd52a767e51e9b8 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftarrows.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png new file mode 100644 index 0000000000000000000000000000000000000000..73385cbbc4c92635d026d5a9125752ee508c2d66 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightleftharpoons.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightrightarrows.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightrightarrows.png new file mode 100644 index 0000000000000000000000000000000000000000..52a7f0f0f1769315be59ac067bd19238f51e4431 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightrightarrows.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..f471054f45716f22ed94250302c27b14d2c2f3f1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/rightsquigarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/searrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/searrow.png new file mode 100644 index 0000000000000000000000000000000000000000..7d887fb787e144b0d3db54d5e63d2c5f50733961 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/searrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/swarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/swarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..448b686517a2fb7fa1c6609c7bc43041e10ffc59 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/swarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/to.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/to.png new file mode 100644 index 0000000000000000000000000000000000000000..0053655d6189dce30b9d45e78bd37680f8562d4e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/to.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..17bcb5495654a163529f8e598d950b3e52032cda Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadleftarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..9242bc210394005cb0fe00eedc55db71bc428cbe Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/twoheadrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-downarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-downarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b2264cbfb669bc614780abe35eb65829ba425b92 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-downarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..84bf7a58fb6cc1cc6f59a0827af43366679da6f7 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..288dcc11f9b080ae207cc642d315848fb0e14d9e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-leftrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lftarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lftarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..8ecff745b8aab6129ddabd489df0de188a4271c4 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lftarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..6bed12114c738d03186804fb5a466c7e6d4ffb67 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lleftarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1cdf790c4c7db1e59dc59b0764293b86d6c5d0cd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..def0c9ee946544160a53d1c1e7984b11d7f6fa3b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longleftrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..c21e68ce4b92ad1f166e694a9f172c4ae8517ad9 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-longrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lsh.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lsh.png new file mode 100644 index 0000000000000000000000000000000000000000..1f617890d2c94223581a9ad9e70457c42235ce68 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-lsh.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..07657c0f378bdf9fe9b282e035d94323d66ab8ce Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..daf4e65b22b699befa850064fcfce8aeda24aee9 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nleftrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..902826c0bd0090b49cc1792b3185e315d27e0c7c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-nrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..39bc77715838468777d2b722ca21bc664848832f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..7aed67df499ddf7aae2fc1e4a47eca71b7ff0a1e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rsh.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rsh.png new file mode 100644 index 0000000000000000000000000000000000000000..05e8974d689ec6b008136cc9ad3d43c6309be6d0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-rsh.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-uparrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-uparrow.png new file mode 100644 index 0000000000000000000000000000000000000000..e539f6517c5518046effd7267c2912b3faf608fe Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-uparrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-updownarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-updownarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa9faa2793f21f080054d1849dc7574deda8119 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/u-updownarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/uparrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/uparrow.png new file mode 100644 index 0000000000000000000000000000000000000000..aa8f571aed79db6f7609092ff43a3117d91d4f45 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/uparrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/updownarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/updownarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..2235860bb71ee75eb2166239c686a50ab9f0abe4 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/updownarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonleft.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonleft.png new file mode 100644 index 0000000000000000000000000000000000000000..72d093d219db4183e4f06a8ac1ff25b5476f00a8 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonleft.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonright.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonright.png new file mode 100644 index 0000000000000000000000000000000000000000..76c7335543e8cbc93d1e41d6c4ea90941c510d07 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upharpoonright.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upuparrows.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upuparrows.png new file mode 100644 index 0000000000000000000000000000000000000000..129a3383587a640f46949c70667330b9abfc7c52 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/arrow/upuparrows.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1ed2604fd80a290eb50c70dd88ab817998ba27 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/2.png new file mode 100644 index 0000000000000000000000000000000000000000..07cf41b7a0c64153f42702045dac32007b435d3e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/3.png new file mode 100644 index 0000000000000000000000000000000000000000..8abe1967dd22b51f7d729b9bca875f27b29be623 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/4.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/4.png new file mode 100644 index 0000000000000000000000000000000000000000..31ad7f74479356eabf76a76e8bb97454a87d3834 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/brackets/4.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/btn.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/btn.png new file mode 100644 index 0000000000000000000000000000000000000000..77d7c10b296c249d3d557fc6a29a5221b4173d9a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/btn.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/brackets.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/brackets.png new file mode 100644 index 0000000000000000000000000000000000000000..b05c1ca3d45749e57e57dd786989f3e37b3ba8ce Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/brackets.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/down.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/down.png new file mode 100644 index 0000000000000000000000000000000000000000..00a8a3ab0c9dd89b1d6228c27709a09955e4bedb Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/down.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/frac.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/frac.png new file mode 100644 index 0000000000000000000000000000000000000000..104818284c7626883b9ecec14fc55cf4308c5916 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/frac.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/fx.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/fx.png new file mode 100644 index 0000000000000000000000000000000000000000..2482b867f306766d743cfd68e698692ac36fcc1b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/fx.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/int.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/int.png new file mode 100644 index 0000000000000000000000000000000000000000..baafcaa48d1b86a83698d37ea534e95b9c11ccce Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/int.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/lim.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/lim.png new file mode 100644 index 0000000000000000000000000000000000000000..4547302d62d33498160d342759158c324fe1b37c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/lim.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/open.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/open.png new file mode 100644 index 0000000000000000000000000000000000000000..24026c9babf871c94d4a6382bf45787b942ebd12 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/open.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/script.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/script.png new file mode 100644 index 0000000000000000000000000000000000000000..e29e594005eca1fc12b32117e9da1e6d277f8f7c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/script.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sin.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sin.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b8295752eb2fd13f19d4f576b9c83ac3dc0f4d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sin.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sqrt.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sqrt.png new file mode 100644 index 0000000000000000000000000000000000000000..782a0daaf169f6983552d82fbe6215c45dc7866e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sqrt.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sum.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sum.png new file mode 100644 index 0000000000000000000000000000000000000000..8c663e2bc0b315ae98a5892227b9bd27c4a393a9 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/sum.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/tick.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/tick.png new file mode 100644 index 0000000000000000000000000000000000000000..6e874f43bfe31eb8b342b26aef70d25f08a33404 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/tick.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/up.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/up.png new file mode 100644 index 0000000000000000000000000000000000000000..6eabcad30a9da3cf55745b7ffccd68203be26105 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/button/up.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char.png new file mode 100644 index 0000000000000000000000000000000000000000..4eef3c380b0f322363f83f032d27ff8367f54a71 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/a.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/a.png new file mode 100644 index 0000000000000000000000000000000000000000..1fc074ebd4a0099359ec951ad1cb485eca93ef8e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/a.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/b.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/b.png new file mode 100644 index 0000000000000000000000000000000000000000..cc75c7d20cc48c337e251efffd52093c306f721b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/b.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/c.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/c.png new file mode 100644 index 0000000000000000000000000000000000000000..b407a1b2873f2d0cf871c0e2ec6285638e107907 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/c.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/d.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/d.png new file mode 100644 index 0000000000000000000000000000000000000000..66e23a897c4a97b2da18e9c2db42d91b51ec0ce3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/d.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/e.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/e.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef98d17dae047821e027d2e282daf0e042a861d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/e.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/f.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/f.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f76fc95c9bef8111333e5973497f492d23bdd6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/f.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/g.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/g.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf855fd3bb8a87c3856ef1288cc408c467314d6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/g.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/h.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/h.png new file mode 100644 index 0000000000000000000000000000000000000000..0347c9327748445a525e29c28e8a6698f30bcee9 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/h.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/i.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/i.png new file mode 100644 index 0000000000000000000000000000000000000000..cfb5814f9dbb7f3899168e5c54dfbbbbeab42d65 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/i.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/j.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/j.png new file mode 100644 index 0000000000000000000000000000000000000000..c9ad651dd102a424bfe686e6c5eeedde9b72d871 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/j.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/k.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/k.png new file mode 100644 index 0000000000000000000000000000000000000000..032f29d812212e649f5a830f51e0b7d81fd90e6d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/k.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/l.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/l.png new file mode 100644 index 0000000000000000000000000000000000000000..72015ab4143687e0e4434d81ba4ea3b25e7dcc94 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/l.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/m.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/m.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c072c81af28d766fd33f93a08bf27c0af82f77 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/m.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/n.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/n.png new file mode 100644 index 0000000000000000000000000000000000000000..a39869801dd4c129abac0fe9e3044f046103acf9 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/n.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/o.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/o.png new file mode 100644 index 0000000000000000000000000000000000000000..9acb05bca0176f38e7d5c05289467fc080e64f98 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/o.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/p.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/p.png new file mode 100644 index 0000000000000000000000000000000000000000..8c11f94f87e425abae2a4e8be63b2e5372b530c8 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/p.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/q.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/q.png new file mode 100644 index 0000000000000000000000000000000000000000..e47c32ea6b18aa30d7b9285a958a28dcb5bdb234 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/q.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/r.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/r.png new file mode 100644 index 0000000000000000000000000000000000000000..44ae3c0d6484ff0336f451432bd3a86bc819ed40 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/r.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/s.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/s.png new file mode 100644 index 0000000000000000000000000000000000000000..93dd1c61d6ac04beca23465cf78704952acf934f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/s.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/t.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/t.png new file mode 100644 index 0000000000000000000000000000000000000000..c359ccd2717878d307dc9f28b9f42a92dd293680 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/t.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/u.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/u.png new file mode 100644 index 0000000000000000000000000000000000000000..c5b6158764cb8ea6a945f7070168e088c40f153d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/u.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/v.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/v.png new file mode 100644 index 0000000000000000000000000000000000000000..2bba8a820679c3ea7416e32326b42b0d35980257 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/v.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/w.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/w.png new file mode 100644 index 0000000000000000000000000000000000000000..82518bb6ae0db6619a0c750c69741fb775fdee2a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/w.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/x.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/x.png new file mode 100644 index 0000000000000000000000000000000000000000..58bb03c3431bdd878a0ab1046675c9d034864ebc Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/x.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/y.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/y.png new file mode 100644 index 0000000000000000000000000000000000000000..7b1ecf62a2ea93f55a5b60180258324b5b9e1b5f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/y.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/z.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/z.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ad9de74b774ab71dd0721fb7be2f203019ea31 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/bb/z.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/a.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/a.png new file mode 100644 index 0000000000000000000000000000000000000000..bbbc10267ecf51ec4f06128c516b65cd9d887fe5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/a.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/b.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/b.png new file mode 100644 index 0000000000000000000000000000000000000000..1f2d08ac31c91b8c8f480920fd8fe6eb1c54e709 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/b.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/c.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/c.png new file mode 100644 index 0000000000000000000000000000000000000000..21c7817937be4194eb1cf59379c7c1103ba347bb Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/c.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/d.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/d.png new file mode 100644 index 0000000000000000000000000000000000000000..b6cd5a38fb8db6ffaaf83d60e919c17b509bc190 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/d.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/e.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/e.png new file mode 100644 index 0000000000000000000000000000000000000000..5b6d59db9cbfcbfcf2e31a21b214a54a357445e3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/e.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/f.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/f.png new file mode 100644 index 0000000000000000000000000000000000000000..28a6cffc0febaf5fd4e7a82b7abb382242902dca Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/f.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/g.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/g.png new file mode 100644 index 0000000000000000000000000000000000000000..a8f1999bdd520beec47c4aa1e5d9b06e4641ad8a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/g.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/h.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/h.png new file mode 100644 index 0000000000000000000000000000000000000000..8592859be72c6614e3c1712b4b6dcdb784774139 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/h.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/i.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/i.png new file mode 100644 index 0000000000000000000000000000000000000000..a149116cbd55f5ad964efc2d6aab15facc6967ba Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/i.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/j.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/j.png new file mode 100644 index 0000000000000000000000000000000000000000..cf94ff276a68cbaedf599779e91267d3e4780547 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/j.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/k.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/k.png new file mode 100644 index 0000000000000000000000000000000000000000..35b3656538e97e81fb3cc14c9e074af7a5742a5a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/k.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/l.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/l.png new file mode 100644 index 0000000000000000000000000000000000000000..058d85db7d17728e115ee7288ca4be1d7a3c0c21 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/l.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/m.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/m.png new file mode 100644 index 0000000000000000000000000000000000000000..08eccac594fe14fe65d7acb9fe63d5d9768ad626 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/m.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/n.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/n.png new file mode 100644 index 0000000000000000000000000000000000000000..f8c62c3ba1edaa30681f8cac0418e10156134a30 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/n.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/o.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/o.png new file mode 100644 index 0000000000000000000000000000000000000000..a6568588bc3bbbc1fce0a8fb0be937f6745ca252 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/o.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/p.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/p.png new file mode 100644 index 0000000000000000000000000000000000000000..fc24a272aa555adf2dcf027c43951fa314447876 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/p.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/q.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/q.png new file mode 100644 index 0000000000000000000000000000000000000000..44ebb8de0dd2921149e440d6ab387fbc5b272093 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/q.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/r.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/r.png new file mode 100644 index 0000000000000000000000000000000000000000..be3017a4a29fdcc6487596b1e22941f08da6e039 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/r.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/s.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/s.png new file mode 100644 index 0000000000000000000000000000000000000000..3942b715626334385c37dd00a9a72a466d33a71e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/s.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/t.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/t.png new file mode 100644 index 0000000000000000000000000000000000000000..5d41fd071db99a0232ea1054c18afda2274ab9ed Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/t.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/u.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/u.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebf4439dbdf74c3ef30326542cc124b71cc0299 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/u.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/v.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/v.png new file mode 100644 index 0000000000000000000000000000000000000000..2c51c10dfa13fca1efc357fb580242dcd2710820 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/v.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/w.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/w.png new file mode 100644 index 0000000000000000000000000000000000000000..33ef1d5ba0ecab821e74c787481d80fcebfb5df7 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/w.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/x.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/x.png new file mode 100644 index 0000000000000000000000000000000000000000..fc7dd0b79ea122973e7b93d7165a51e5187e5444 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/x.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/y.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/y.png new file mode 100644 index 0000000000000000000000000000000000000000..6670417a7b73caadb525e084ca2ae229364529fb Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/y.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/z.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/z.png new file mode 100644 index 0000000000000000000000000000000000000000..2489eda0e59883c60371ad2540319227c3d509e9 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/cal/z.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/a.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/a.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a6950a011de8bed9b29907242982b6529a26bd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/a.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/b.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/b.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc50aae08765dc121272b26a13ecc81308f0a44 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/b.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/c.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/c.png new file mode 100644 index 0000000000000000000000000000000000000000..e0417c53e7b25ceec69b85978b9d0101db7e512a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/c.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/d.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/d.png new file mode 100644 index 0000000000000000000000000000000000000000..a267b36f09f3e6c909e071a0cf3f2c342626adb5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/d.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/e.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/e.png new file mode 100644 index 0000000000000000000000000000000000000000..be71bf646121f468a6d5bd4b406be5af33d9bd8a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/e.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/f.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/f.png new file mode 100644 index 0000000000000000000000000000000000000000..2c170114f02e55bf06e6e8f08c5d74578c961aef Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/f.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/g.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/g.png new file mode 100644 index 0000000000000000000000000000000000000000..d05843d601fd4bcfa5e37c9c3a86cfccedf5e640 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/g.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/h.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/h.png new file mode 100644 index 0000000000000000000000000000000000000000..41d958e53c772d9fff56fd14e053d559d3027f8d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/h.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/i.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/i.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9bd348a4c199913a67c4a1081c61a42591c12b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/i.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/j.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/j.png new file mode 100644 index 0000000000000000000000000000000000000000..fc66b892b3fd754a8afcb4a3257a4f7a982de5cc Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/j.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/k.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/k.png new file mode 100644 index 0000000000000000000000000000000000000000..49dbc27324937a64387bca7d9b7e093fd91faac0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/k.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/l.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/l.png new file mode 100644 index 0000000000000000000000000000000000000000..8e23844bd2d6ffcb64423967ffbd83b1959c9e38 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/l.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/m.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/m.png new file mode 100644 index 0000000000000000000000000000000000000000..f5a79ce813b0201e6d0d42c8f5f95f54cb233065 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/m.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/n.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/n.png new file mode 100644 index 0000000000000000000000000000000000000000..e9b7491a7bd9b8187349d4e03009094b6a941a73 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/n.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/o.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/o.png new file mode 100644 index 0000000000000000000000000000000000000000..f386683e561d8ac0d040377c8b1202885217a541 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/o.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/p.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/p.png new file mode 100644 index 0000000000000000000000000000000000000000..334a11890098e231dbe0f3f9177f05d084a231a0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/p.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/q.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/q.png new file mode 100644 index 0000000000000000000000000000000000000000..205df6aa1f8e3dec251846aa059302cd22e353bb Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/q.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/r.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/r.png new file mode 100644 index 0000000000000000000000000000000000000000..fc8bc8b0ae880e53cfe630bc7e2ccfd49d80129a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/r.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/s.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/s.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6c50c094f3539b1a895fe0d07706d20fab5f25 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/s.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/t.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/t.png new file mode 100644 index 0000000000000000000000000000000000000000..76de18523f78d27246445583f39c8aef36342770 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/t.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/u.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/u.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1dfbcf105e9f02883f4d6a0f9a286af94a0fbf Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/u.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ua.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ua.png new file mode 100644 index 0000000000000000000000000000000000000000..cc049efe2a4f36ffb323bb03540b0987ac409e90 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ua.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ub.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ub.png new file mode 100644 index 0000000000000000000000000000000000000000..841e8cc19703f08479e5897f3d0129f7312f0db0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ub.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uc.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uc.png new file mode 100644 index 0000000000000000000000000000000000000000..f15063d45aaf4fe710097b2fa36bd19e6631da92 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uc.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ud.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ud.png new file mode 100644 index 0000000000000000000000000000000000000000..8671415ea5d457b8788e00e5eb19d5b50416ead5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ud.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ue.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ue.png new file mode 100644 index 0000000000000000000000000000000000000000..69b1f086851cfdf496a42485fd301fa1e05a1599 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ue.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uf.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uf.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd1e6a1f73ad2c54f5e4f9c399f48732dc3052e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uf.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ug.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ug.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc5ede03722c1e920df918ce88c83f06371a38a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ug.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uh.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uh.png new file mode 100644 index 0000000000000000000000000000000000000000..45e18a9a41382a6e6fdec8cf200822da78e6d809 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uh.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ui.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ui.png new file mode 100644 index 0000000000000000000000000000000000000000..6e9a03a702e4947c62449f691beb54825722bf48 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ui.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uj.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uj.png new file mode 100644 index 0000000000000000000000000000000000000000..855aaa921d0986ea68c25a0284e044f6521bfcc9 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uj.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uk.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uk.png new file mode 100644 index 0000000000000000000000000000000000000000..adb3b00ae8019b75416edd3e0f2028ec1cf1f47d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uk.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ul.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ul.png new file mode 100644 index 0000000000000000000000000000000000000000..9f138ee71d6febb585fc3233651a826de42a1c6c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ul.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/um.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/um.png new file mode 100644 index 0000000000000000000000000000000000000000..64d7bd4607f03b4ef9576f58a27fea89c4bebe90 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/um.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/un.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/un.png new file mode 100644 index 0000000000000000000000000000000000000000..37c4bfd665a5014d1e2e440d1ef60686805abe21 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/un.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uo.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uo.png new file mode 100644 index 0000000000000000000000000000000000000000..0340b6d03416fa966c0b2e8970395e09e140558d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uo.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/up.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/up.png new file mode 100644 index 0000000000000000000000000000000000000000..f5a1d38d7583f7516237fe38ebb33ecf0a919c43 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/up.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uq.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb7f505109971e0bd98e5fcdc2f59c943f658d4 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ur.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ur.png new file mode 100644 index 0000000000000000000000000000000000000000..959804cd94498599d5e680a83343f22cf101af42 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ur.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/us.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/us.png new file mode 100644 index 0000000000000000000000000000000000000000..1d77b1d70537a413d909b19e7f4c6b201bc15c9d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/us.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ut.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ut.png new file mode 100644 index 0000000000000000000000000000000000000000..5ebab869a308986ae6e5719d98a3ba1714a01eff Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ut.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uu.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uu.png new file mode 100644 index 0000000000000000000000000000000000000000..fa9d8554db087962b15efa577321e38d958c0714 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uu.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uv.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uv.png new file mode 100644 index 0000000000000000000000000000000000000000..8c346f1602eb24b5eff1473edb57aa3872249e4d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uv.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uw.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uw.png new file mode 100644 index 0000000000000000000000000000000000000000..223543dd561bef2af966294430c9bdd9bc92ecc1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uw.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ux.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ux.png new file mode 100644 index 0000000000000000000000000000000000000000..e87b75546c5db940206bcf3b68534f1875d8b56b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/ux.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uy.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uy.png new file mode 100644 index 0000000000000000000000000000000000000000..b51e8ee870f14ae9c5f76bc8060982c49f44225f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uy.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uz.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uz.png new file mode 100644 index 0000000000000000000000000000000000000000..58ee470185ca5a4a093d49efdd61cb7a1aeda038 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/uz.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/v.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/v.png new file mode 100644 index 0000000000000000000000000000000000000000..3aed0031cacf3ad6303d9435a42333a56835ca9d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/v.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/w.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/w.png new file mode 100644 index 0000000000000000000000000000000000000000..008b3613484ed1bbb12f6f0be6630cdcced5fe67 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/w.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/x.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/x.png new file mode 100644 index 0000000000000000000000000000000000000000..b73a3c3a230cdfd39813eed77f6214388df24571 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/x.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/y.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/y.png new file mode 100644 index 0000000000000000000000000000000000000000..158863bafe50962c5d267285da77924d6711dd6a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/y.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/z.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/z.png new file mode 100644 index 0000000000000000000000000000000000000000..d3907d2aeb3a77e501d597ec4937d654acba6cfc Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/frak/z.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/alpha.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..91907f256e28c86774b8ce4260234f5ca0cdac6d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/alpha.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/beta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/beta.png new file mode 100644 index 0000000000000000000000000000000000000000..95edb82f59d4cda867805b03112ad4ba60a4a6a5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/beta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/chi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/chi.png new file mode 100644 index 0000000000000000000000000000000000000000..2c5f2f28f499555ec79523d8adf36a3b5c09f88d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/chi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/delta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/delta.png new file mode 100644 index 0000000000000000000000000000000000000000..847f5c1469dbb348de397f17e25dd88cfaaf9779 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/delta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png new file mode 100644 index 0000000000000000000000000000000000000000..d9fa6c2c997df92549fabf1e78560c036ca55d18 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/epsilon.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/eta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/eta.png new file mode 100644 index 0000000000000000000000000000000000000000..206d0142761401395213686294b78561c25d17ae Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/eta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/gamma.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/gamma.png new file mode 100644 index 0000000000000000000000000000000000000000..97a09a08c45a6c7f9ce729f9de7844ed8af47eb0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/gamma.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/iota.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/iota.png new file mode 100644 index 0000000000000000000000000000000000000000..7eaad513fc19cbcd72ad8edcdffa50a1fce7c37e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/iota.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/kappa.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/kappa.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8571dd2749b7e6bbc3c1969576a2e0aff20a03 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/kappa.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/lambda.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/lambda.png new file mode 100644 index 0000000000000000000000000000000000000000..b619ecd3dcc1a19882a61eb13d65f76104b3f25b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/lambda.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/mu.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/mu.png new file mode 100644 index 0000000000000000000000000000000000000000..016d4642008c5a2eea36b59f2d63c38f85160b10 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/mu.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/nu.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/nu.png new file mode 100644 index 0000000000000000000000000000000000000000..0f00fc4117d938236eb5eb6c32ba21c43106016f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/nu.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omega.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omega.png new file mode 100644 index 0000000000000000000000000000000000000000..3c0220f4d0cd21495d0de45a33d6a0f5b87e0024 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omega.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omicron.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omicron.png new file mode 100644 index 0000000000000000000000000000000000000000..c5511b285f5cefc0e743e35554de62cae7e35aec Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/omicron.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/phi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/phi.png new file mode 100644 index 0000000000000000000000000000000000000000..5b6fc9e50b7ea1a2a986346a8321bca119f08884 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/phi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/pi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/pi.png new file mode 100644 index 0000000000000000000000000000000000000000..30bc20c1797cdc284d2359a2614ac7feeb562fe3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/pi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/psi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/psi.png new file mode 100644 index 0000000000000000000000000000000000000000..92054d2b8e0b687eed39d9c0ff6a64c4813f7fc1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/psi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/rho.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/rho.png new file mode 100644 index 0000000000000000000000000000000000000000..48cc456e69b154f92b63299cd8a3ed8376448c3a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/rho.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/sigma.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/sigma.png new file mode 100644 index 0000000000000000000000000000000000000000..349fb3bfc1e127122383fa23e9eec33fd9cace35 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/sigma.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/tau.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/tau.png new file mode 100644 index 0000000000000000000000000000000000000000..235468fccbef6f8780486a6e0b4c8f40f9d838bc Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/tau.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/theta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/theta.png new file mode 100644 index 0000000000000000000000000000000000000000..6540af2531f6ba74fed6564a54a8410f966ecb7d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/theta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png new file mode 100644 index 0000000000000000000000000000000000000000..0d88ee0efbc54626066dee63d2d47a9f7be5f6b2 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/upsilon.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/xi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/xi.png new file mode 100644 index 0000000000000000000000000000000000000000..a00c3829d177de5ea599de8145998680341975ce Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/xi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/zeta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/zeta.png new file mode 100644 index 0000000000000000000000000000000000000000..683d9bca83ea455961ba22637f470c94fb8b68c7 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/lower/zeta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/digamma.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/digamma.png new file mode 100644 index 0000000000000000000000000000000000000000..b9ab6f1448fe0eba3714206132e00a1b3ce0d9ed Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/digamma.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3ae9c94835bd79f04304c5b68e39be5c712940 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varepsilon.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png new file mode 100644 index 0000000000000000000000000000000000000000..ddc85a22758f76099117875787aeeacbbb86e3b3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varkappa.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varphi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varphi.png new file mode 100644 index 0000000000000000000000000000000000000000..a198b26921f9af5f8e825491313443f073105e4c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varphi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varpi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varpi.png new file mode 100644 index 0000000000000000000000000000000000000000..788c350bf8b7cb29fd5db4649b73653d66ab3626 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varpi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varrho.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varrho.png new file mode 100644 index 0000000000000000000000000000000000000000..d88476754e0729f925a8344009c56fb42cdc8f4d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varrho.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png new file mode 100644 index 0000000000000000000000000000000000000000..a5409dd4b923662dd2b59335466910ad94a801dc Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/varsigma.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png new file mode 100644 index 0000000000000000000000000000000000000000..4729b1537572a0c744dcc280aa45ecb92e87830d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/misc/vartheta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/alpha.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..22dfae19bbed0a26772f9e1ce3bc006491a9e9b7 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/alpha.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/beta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/beta.png new file mode 100644 index 0000000000000000000000000000000000000000..c95d79be594db75c538dc9a004e1b1d53f99b4b6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/beta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/chi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/chi.png new file mode 100644 index 0000000000000000000000000000000000000000..774804af196fa73fe550b41b349f228a05914a47 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/chi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/delta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/delta.png new file mode 100644 index 0000000000000000000000000000000000000000..c3baf6253586ab872c62ccae51d725760af5ec11 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/delta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f85ef3fbef563dd92dd43417f489a61ac84ecb Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/epsilon.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/eta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/eta.png new file mode 100644 index 0000000000000000000000000000000000000000..c02a78af3eeba4366aa30e51fb4c7732fd6d6e76 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/eta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/gamma.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/gamma.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6ccb0e2f559fce512a5ac6245cb44c64484031 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/gamma.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/iota.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/iota.png new file mode 100644 index 0000000000000000000000000000000000000000..10777c943bb658ccf9fc1afb5e183bb832e77bc8 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/iota.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/kappa.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/kappa.png new file mode 100644 index 0000000000000000000000000000000000000000..44aa91f3c746c532ba9456a24e136b884d30a70d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/kappa.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/lambda.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/lambda.png new file mode 100644 index 0000000000000000000000000000000000000000..cf67ea5de45ba58bbf2a9fc0fbcfc1b490b9ed33 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/lambda.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/mu.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/mu.png new file mode 100644 index 0000000000000000000000000000000000000000..7284125d1d9b94b23b811982b93e41cb8e463bdd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/mu.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/nu.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/nu.png new file mode 100644 index 0000000000000000000000000000000000000000..2dcc1c3af3c892912b65f4245f5a8c70fbe4b8d6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/nu.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omega.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omega.png new file mode 100644 index 0000000000000000000000000000000000000000..3b9466db6b0cf618d1ba1359d750ae3afc6535c1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omega.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omicron.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omicron.png new file mode 100644 index 0000000000000000000000000000000000000000..6d31fbd95e6ace84ef6f1b317ac700c9da502a09 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/omicron.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/phi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/phi.png new file mode 100644 index 0000000000000000000000000000000000000000..1a928d65d4f45299b2b7bd405b61624d49db8367 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/phi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/pi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/pi.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e1314b03fe7c4c585d9699e614dfce48f123ac Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/pi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/psi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/psi.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc032186025b8d7673d7ddc473eeba49cfb5b69 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/psi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/rho.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/rho.png new file mode 100644 index 0000000000000000000000000000000000000000..27d8c36656595da765c24f0d5c8808a3985add35 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/rho.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/sigma.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/sigma.png new file mode 100644 index 0000000000000000000000000000000000000000..dd4ad4bbc33601964aa78551b2123e7fe08beda0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/sigma.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/tau.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/tau.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad430550b442ecdcc55b7995c1e2fac5f05729a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/tau.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/theta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/theta.png new file mode 100644 index 0000000000000000000000000000000000000000..b5d78300c31402f09f77c5ca91245b8ebf36b22c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/theta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png new file mode 100644 index 0000000000000000000000000000000000000000..ff1fd88c4476f89ce0e9885e66bdec498aeda966 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/upsilon.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/xi.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/xi.png new file mode 100644 index 0000000000000000000000000000000000000000..a478d75912ca67133ab024ee8ea449bb68968c23 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/xi.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/zeta.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/zeta.png new file mode 100644 index 0000000000000000000000000000000000000000..4052d0963220f8a3f3f63c2a1e054691cff7fe19 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/greek/upper/zeta.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/aleph.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/aleph.png new file mode 100644 index 0000000000000000000000000000000000000000..49631118f59fd251f779372b8e2f21de2a6e3025 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/aleph.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/approx.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/approx.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef6f5dab254b82b474171509f3743e7f5995ac3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/approx.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ast.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ast.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4deaddc3712ad96808f24c5b6a00e82257fcff Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ast.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/baifenhao.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/baifenhao.png new file mode 100644 index 0000000000000000000000000000000000000000..624539c19693627bc2a55f333ef657a165abf1db Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/baifenhao.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/because.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/because.png new file mode 100644 index 0000000000000000000000000000000000000000..51070efc10f886dc762a36d25e73749c6655b905 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/because.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/beth.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/beth.png new file mode 100644 index 0000000000000000000000000000000000000000..90fa4e238647069acc3eb58f22de6019e653eeb6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/beth.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/blacksquare.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/blacksquare.png new file mode 100644 index 0000000000000000000000000000000000000000..4221d79b3c7cd50c80833135f2fd9bea9bd795bd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/blacksquare.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cap.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cap.png new file mode 100644 index 0000000000000000000000000000000000000000..59d6a754347ad2e7fb94068e40e71eade8447ce1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cap.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cdot.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cdot.png new file mode 100644 index 0000000000000000000000000000000000000000..4f923c17780c032655a7aa14dc94f1a709565e07 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cdot.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/circ.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/circ.png new file mode 100644 index 0000000000000000000000000000000000000000..a27d47748e475c55a752c387bcb6a86bcf633a81 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/circ.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cong.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cong.png new file mode 100644 index 0000000000000000000000000000000000000000..46abcf09ee215e3330208cf5a3f4597126338b86 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cong.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cup.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cup.png new file mode 100644 index 0000000000000000000000000000000000000000..f321d24a12644d883b23ed53560ee41d9c51ab1c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/cup.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ddots.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ddots.png new file mode 100644 index 0000000000000000000000000000000000000000..c609835e5a42f761cd4139dfc7b6e93904c4a017 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ddots.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/div.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/div.png new file mode 100644 index 0000000000000000000000000000000000000000..8c11435ce09d150956788d8ab1a34cbc4c8de62d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/div.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/downarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/downarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..fe285ddba4ab2b6092b93113f114fb899d96f899 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/downarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/eq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/eq.png new file mode 100644 index 0000000000000000000000000000000000000000..21820cadf2fc50656cc6abac4a4f3b6e0f357db3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/eq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/equiv.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/equiv.png new file mode 100644 index 0000000000000000000000000000000000000000..d21d2b61212da0b32bdcab2da57b12019866d3fd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/equiv.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/exists.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/exists.png new file mode 100644 index 0000000000000000000000000000000000000000..291cead95d512541f4af49eca3e945b64245c961 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/exists.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/forall.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/forall.png new file mode 100644 index 0000000000000000000000000000000000000000..c2a01c859c410ff2d669a4cd0c8c09283079ca79 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/forall.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/geq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/geq.png new file mode 100644 index 0000000000000000000000000000000000000000..0ccd75280bdd57359521ad6492661adac15d4a35 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/geq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gets.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gets.png new file mode 100644 index 0000000000000000000000000000000000000000..702b6da64d3590519fd342b1d443265210f123a3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gets.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gg.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gg.png new file mode 100644 index 0000000000000000000000000000000000000000..7dcdea84ec5ac33f3bbd86839a5743962e35db81 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gg.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gt.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gt.png new file mode 100644 index 0000000000000000000000000000000000000000..cc057299b059410e746a74bb14d7ddd63bbbcb17 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/gt.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/in.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/in.png new file mode 100644 index 0000000000000000000000000000000000000000..271d61905f992c930cbf76769743ffdf71b501dc Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/in.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/infty.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/infty.png new file mode 100644 index 0000000000000000000000000000000000000000..8db988c4facc90b7c6be1fcba251e4d802263220 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/infty.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leftrightarrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leftrightarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..989a47dc39a40d1cfceb4012d77213382f9eb980 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leftrightarrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leq.png new file mode 100644 index 0000000000000000000000000000000000000000..01255b2933529b50d78392405d552e18061c909e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/leq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ll.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ll.png new file mode 100644 index 0000000000000000000000000000000000000000..d0cc99f3daaeaead992b145969645ce4d285359b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ll.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/lt.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/lt.png new file mode 100644 index 0000000000000000000000000000000000000000..f11edc8f5649bf37a673dcc5e9cc97342c6d9bf4 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/lt.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/minus.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..0f845a285ad36f358cdf60c3f31b0649233777ab Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/minus.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/mp.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/mp.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf38f07dfd3c65dbe6ff39df2544ececf077b09 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/mp.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/neg.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/neg.png new file mode 100644 index 0000000000000000000000000000000000000000..164bfa842c13b5e45098b4c1d81ab2a7ec846d03 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/neg.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/nexists.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/nexists.png new file mode 100644 index 0000000000000000000000000000000000000000..e4523e1cc595f3897d635b81d26ece4596a589ab Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/nexists.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ni.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ni.png new file mode 100644 index 0000000000000000000000000000000000000000..5b3da5768f191d8597f6a19a25048d96073c923c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/ni.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/partial.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/partial.png new file mode 100644 index 0000000000000000000000000000000000000000..28253fa6e7366d2dcc4d146727dd16b3f2839a7f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/partial.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/plus.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7055190c44bfa7f28cd4ee6f59f8c92199efd112 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/plus.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/pm.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/pm.png new file mode 100644 index 0000000000000000000000000000000000000000..881665584f034bad863d2caa9dbaa10983e4cf5f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/pm.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/propto.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/propto.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba04fdc5516d8fffa7b66116b65839fe96c8162 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/propto.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/sim.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/sim.png new file mode 100644 index 0000000000000000000000000000000000000000..4a5264bcc2e773fab9d7fb0966a1e60be9f40d48 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/sim.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/simeq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/simeq.png new file mode 100644 index 0000000000000000000000000000000000000000..ac4b64b65c6a1e93dea9b3d3f317f0676fdcbbef Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/simeq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/surd.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/surd.png new file mode 100644 index 0000000000000000000000000000000000000000..9ddfd4db77f349593e7d2eee602b0f83acfa7fcf Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/surd.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/tanhao.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/tanhao.png new file mode 100644 index 0000000000000000000000000000000000000000..35a33468a1c630b4984ffde5cac4f5b816966f40 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/tanhao.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/therefore.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/therefore.png new file mode 100644 index 0000000000000000000000000000000000000000..7fd47cf7f8c60d97f3fdeb2ee00d85886a46dc76 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/therefore.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/times.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/times.png new file mode 100644 index 0000000000000000000000000000000000000000..1018224ef25c23424f7d958d0f00c3de03607cea Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/times.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/to.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/to.png new file mode 100644 index 0000000000000000000000000000000000000000..12609e4f4619c06a6a6893da2a479b091c26fc02 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/to.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/uparrow.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/uparrow.png new file mode 100644 index 0000000000000000000000000000000000000000..0c619451ae4cf406ac66c39ca6662f3cfd395802 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/uparrow.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/varnothing.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/varnothing.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1b6c1d9e5035dee7006127814bf632eb5bd878 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/varnothing.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/vdots.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/vdots.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce84f2ce5101f555f01cc11f3f9bbc1e6ccdf6d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/math/vdots.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gneqq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gneqq.png new file mode 100644 index 0000000000000000000000000000000000000000..b299d23031ec9249af036beb8a18214c36b3fb28 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gneqq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gnsim.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gnsim.png new file mode 100644 index 0000000000000000000000000000000000000000..683af6bf93b6f1e8230dc1f4f8f831b52616effe Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/gnsim.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lneqq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lneqq.png new file mode 100644 index 0000000000000000000000000000000000000000..56440637b9b06b7fdc90c63f00b29e8647d0de61 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lneqq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lnsim.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lnsim.png new file mode 100644 index 0000000000000000000000000000000000000000..1365188a04e6085031a6046ccf2e296cf6d7aa3e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/lnsim.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nbdash-1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nbdash-1.png new file mode 100644 index 0000000000000000000000000000000000000000..07cce702f4abfb4d7d235f5e19449aea32fa5672 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nbdash-1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ncong.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ncong.png new file mode 100644 index 0000000000000000000000000000000000000000..156f8befa8d5ef018742db4fc93b14c26f415f81 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ncong.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/neq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/neq.png new file mode 100644 index 0000000000000000000000000000000000000000..feb442f4ce94122870baa66edf89d51978be6aab Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/neq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nequiv.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nequiv.png new file mode 100644 index 0000000000000000000000000000000000000000..83427dc84ec60897226f5ac9be13a5a6a0f8086c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nequiv.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nexists.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nexists.png new file mode 100644 index 0000000000000000000000000000000000000000..c5e3e583c6d81cdb274f5d83ad06160c578d37e7 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nexists.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngeq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngeq.png new file mode 100644 index 0000000000000000000000000000000000000000..d3385e4cd6dce61f029f9b76541095347ec01231 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngeq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngtr.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngtr.png new file mode 100644 index 0000000000000000000000000000000000000000..033a1d168126cf8e29d8b725a10ba0434d57e7ef Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ngtr.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nleq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nleq.png new file mode 100644 index 0000000000000000000000000000000000000000..16347a168a6df4b47d5b8bf28e61d9c781269560 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nleq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nless.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nless.png new file mode 100644 index 0000000000000000000000000000000000000000..11c947238910fb33a64c4f61f86f48e32f0de0f5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nless.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nmid.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nmid.png new file mode 100644 index 0000000000000000000000000000000000000000..c63688e23115612366fb96f2ad264688591fee8d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nmid.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/notin.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/notin.png new file mode 100644 index 0000000000000000000000000000000000000000..d0012918e033082e4f727ec48169322da7fa3c5c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/notin.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nparallel.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nparallel.png new file mode 100644 index 0000000000000000000000000000000000000000..76887ca0c8135247c6c345b0a1b88c2bcbb8fa1d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nparallel.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nprec.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nprec.png new file mode 100644 index 0000000000000000000000000000000000000000..a929e3b024b53f8a690da1c901403673d44d83ae Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nprec.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsim.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsim.png new file mode 100644 index 0000000000000000000000000000000000000000..45cf001ba2db9f9eb517fd43489e89288706377e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsim.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsubseteq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsubseteq.png new file mode 100644 index 0000000000000000000000000000000000000000..9e530e2767f3d70ea8ca7dbf8c2324b50852367f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsubseteq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsucc.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsucc.png new file mode 100644 index 0000000000000000000000000000000000000000..b975eaf8b9c96e897b9e5802514238c982e9b297 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsucc.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsupseteq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsupseteq.png new file mode 100644 index 0000000000000000000000000000000000000000..4c1866b401e2fa89deb23d995a79a4f8e04cc3f5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nsupseteq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleleft.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleleft.png new file mode 100644 index 0000000000000000000000000000000000000000..39ecc4dd30744d35fefdb457437b512aee853911 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleleft.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8f737d1a182b5876875a60dfd6fc2ede3480fc Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglelefteq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleright.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleright.png new file mode 100644 index 0000000000000000000000000000000000000000..751acf0d12d70bc4551f3ca0c85a872c45520072 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntriangleright.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png new file mode 100644 index 0000000000000000000000000000000000000000..abff3af7dcdb933014f0be241e50dba2a5827422 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/ntrianglerighteq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-1.png new file mode 100644 index 0000000000000000000000000000000000000000..dc641d92e2266751d8510ea780529bd01394079d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-2.png new file mode 100644 index 0000000000000000000000000000000000000000..4079f6fba03da755909ea184176debbd6bfe8b31 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-3.png new file mode 100644 index 0000000000000000000000000000000000000000..3d872b42e1f3d1b8c0e098c8069eeb50ac7c2506 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash-3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4fb1f2e91b0d3c523f84f4e909e1f85fea3cd2 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/nvdash.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/precnsim.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/precnsim.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c148b2e06a11adccdad29045fab4d65f65c57b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/precnsim.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/subsetneq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/subsetneq.png new file mode 100644 index 0000000000000000000000000000000000000000..cc3383553606f6561afd9394131fb04707d5b573 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/subsetneq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/succnsim.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/succnsim.png new file mode 100644 index 0000000000000000000000000000000000000000..7eafb5bd473d4db551059509427c895ec984db19 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/succnsim.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/supsetneq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/supsetneq.png new file mode 100644 index 0000000000000000000000000000000000000000..b43f091926deaaf19d55f0a596f49a512a1c6a61 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/not/supsetneq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/a.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/a.png new file mode 100644 index 0000000000000000000000000000000000000000..9da4fafe5aeab01be22acaaf52aa64c6229129c0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/a.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/b.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/b.png new file mode 100644 index 0000000000000000000000000000000000000000..c14fe4f1dac6ab7d710dc32043867d2824a980b0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/b.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/c.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/c.png new file mode 100644 index 0000000000000000000000000000000000000000..08015b74a0f4222ae88d4540435052509280ad93 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/c.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/d.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/d.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9a95d8df8530ebcb7a5893e59960da4a457e46 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/d.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/e.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/e.png new file mode 100644 index 0000000000000000000000000000000000000000..e966a241d3205884ad9a719c9fc4b5a292ec6761 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/e.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/f.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/f.png new file mode 100644 index 0000000000000000000000000000000000000000..76d3d370acb70576be0f112e993dc7c3d95fde31 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/f.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/g.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/g.png new file mode 100644 index 0000000000000000000000000000000000000000..8ea577546586ec3619015e3cc53c2b04486f94fd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/g.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/h.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/h.png new file mode 100644 index 0000000000000000000000000000000000000000..fa3c006d3324d8d6e96bde3eb5431e84a6b9be44 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/h.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/i.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/i.png new file mode 100644 index 0000000000000000000000000000000000000000..58e2a69325c503ece628a44281d8f3f31322f4ce Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/i.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/j.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/j.png new file mode 100644 index 0000000000000000000000000000000000000000..592148aa81b4deca5fe1021338f129399c805f1d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/j.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/k.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/k.png new file mode 100644 index 0000000000000000000000000000000000000000..e2daf2e56154174a51fef2078d029b1093729bab Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/k.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/l.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/l.png new file mode 100644 index 0000000000000000000000000000000000000000..691a92fbf73b9fb239adc9692bd43bb1e1c0a232 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/l.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/m.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/m.png new file mode 100644 index 0000000000000000000000000000000000000000..9f020cc1b7d489578334cee644e972473ff7ab32 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/m.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/n.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/n.png new file mode 100644 index 0000000000000000000000000000000000000000..30be2cc6829882f14dad932854787a127b3e1c52 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/n.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/o.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/o.png new file mode 100644 index 0000000000000000000000000000000000000000..16c83a08f7f9251333f8595d8ed78c2ed5fc98f1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/o.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/p.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/p.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e837cd82eb88546ceb17b73624dbff1683e838 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/p.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/q.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/q.png new file mode 100644 index 0000000000000000000000000000000000000000..203bb204fb3c4a81e01b9b4fd4894e30179764c1 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/q.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/r.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/r.png new file mode 100644 index 0000000000000000000000000000000000000000..763f81e9976985858b771a9318b68c4b31b98397 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/r.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/s.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/s.png new file mode 100644 index 0000000000000000000000000000000000000000..7510702eee0b636d2b783a3b207df8476ca37a2c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/s.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/t.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/t.png new file mode 100644 index 0000000000000000000000000000000000000000..00432047f5efe9ce1711d81a8f11162336eba2bf Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/t.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/u.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/u.png new file mode 100644 index 0000000000000000000000000000000000000000..f495f3d116181db5956ca2ea815227d569f2bf37 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/u.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ua.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ua.png new file mode 100644 index 0000000000000000000000000000000000000000..7d36a0e98a63a6fd1968e086ae446731a4585e2f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ua.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ub.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ub.png new file mode 100644 index 0000000000000000000000000000000000000000..d1eacb7ef8cd2dcb0d0c6fb4d7f2ad23e18424fc Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ub.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uc.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uc.png new file mode 100644 index 0000000000000000000000000000000000000000..e1f8bb9e0e7e3950f920b95f633e496466f4f1f0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uc.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ud.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ud.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d2343dcfe16517550e55bbc0f8feee106bbb29 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ud.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ue.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ue.png new file mode 100644 index 0000000000000000000000000000000000000000..974322c69f5280bd2b88512e5d688b18474f9938 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ue.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uf.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uf.png new file mode 100644 index 0000000000000000000000000000000000000000..253244e6002ffc49dd28a84f6a071cca1a7136aa Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uf.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ug.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ug.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd2e08a28a94f8cb8d94bf83e013c5a34c06f4e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ug.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uh.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uh.png new file mode 100644 index 0000000000000000000000000000000000000000..c72d3192c1a469d87ca568bf86cc2a3ed012a441 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uh.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ui.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ui.png new file mode 100644 index 0000000000000000000000000000000000000000..f69e3f857e6a7c7e11ecaed284b3bd53d33a5e8e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ui.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uj.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uj.png new file mode 100644 index 0000000000000000000000000000000000000000..ffefb31042c96f3fdd04d151cfe32eb1f9007674 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uj.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uk.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uk.png new file mode 100644 index 0000000000000000000000000000000000000000..07a569dc9ceda3da096ef09ab21bbb363fe85cc2 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uk.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ul.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ul.png new file mode 100644 index 0000000000000000000000000000000000000000..47d868a0cbacd1e3148c7fca84eb9a9f820e9b73 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ul.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/um.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/um.png new file mode 100644 index 0000000000000000000000000000000000000000..c45333e6034076b8fabc626ab19d9e2314ee5655 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/um.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/un.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/un.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ba37c37f26ccdcd0c20722c65f4a7448b970fe Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/un.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uo.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uo.png new file mode 100644 index 0000000000000000000000000000000000000000..cac7b4ff2079b8d9954b83675da302bd1d6f75e0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uo.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/up.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/up.png new file mode 100644 index 0000000000000000000000000000000000000000..d48be7b8cfb41d25ad1e53532bd9c29a7dc776bc Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/up.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uq.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uq.png new file mode 100644 index 0000000000000000000000000000000000000000..d20612bf0e3f1f77cf23b2f812d1e18c0b5b66d6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uq.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ur.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ur.png new file mode 100644 index 0000000000000000000000000000000000000000..e812c3186f8143411f9e41e603b163045099ea97 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ur.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/us.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/us.png new file mode 100644 index 0000000000000000000000000000000000000000..32042572115e3aa5bcd62cfd0e211660a6547f20 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/us.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ut.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ut.png new file mode 100644 index 0000000000000000000000000000000000000000..d897d27c64780aa6b2917b04be971d4991fb5c21 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ut.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uu.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uu.png new file mode 100644 index 0000000000000000000000000000000000000000..87ca6cec4eee8eddfcae7680b87d5691448dabba Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uu.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uv.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uv.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6cd3bbdea1f593e8b09140f47ea859542679af Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uv.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uw.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uw.png new file mode 100644 index 0000000000000000000000000000000000000000..0d5f3890cb01ceade5bb9d1b17eb32a5feb383ae Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uw.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ux.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ux.png new file mode 100644 index 0000000000000000000000000000000000000000..024bade9b32aa3d20452de9f458bc00beba8f155 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/ux.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uy.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uy.png new file mode 100644 index 0000000000000000000000000000000000000000..cfa70de56d26d1a4158a9fb9759877fd01d17a68 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uy.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uz.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uz.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1fcc83fe1d05564a170ac03ede1fc843b345e8 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/uz.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/v.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/v.png new file mode 100644 index 0000000000000000000000000000000000000000..0ad4cd8a334f33a21d9548486e4f6c2a2129e8bf Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/v.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/w.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/w.png new file mode 100644 index 0000000000000000000000000000000000000000..c6edcb49b5f460c2664587157b62cd46b45ed5ba Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/w.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/x.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/x.png new file mode 100644 index 0000000000000000000000000000000000000000..f299eeb12ce136b0b1ea8e07e023adf0085dd982 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/x.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/y.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/y.png new file mode 100644 index 0000000000000000000000000000000000000000..98c8626b14f31920ca63cb8c34911db9b173174d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/y.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/z.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/z.png new file mode 100644 index 0000000000000000000000000000000000000000..644a5b3158bab6d2441751b15836855112cc0d58 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/char/rm/z.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/1.png new file mode 100644 index 0000000000000000000000000000000000000000..3894249db8e513cde9912875bba551de948fdb46 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/2.png new file mode 100644 index 0000000000000000000000000000000000000000..c378fdce0806e48e96b716fbe655d93081f29af6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/3.png new file mode 100644 index 0000000000000000000000000000000000000000..fad9d20cfe5e5b62a221a7ce9847dca79eae0e80 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c1.png new file mode 100644 index 0000000000000000000000000000000000000000..a032d706d31c6cd9c38da923113a8345826ed9bd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c2.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c95a87123b926713695f00e1ccf64b5821debb Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c4.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c4.png new file mode 100644 index 0000000000000000000000000000000000000000..74c5cdfe2e677593d0fd24cc0f6d506a0a9ca6f5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c4.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c5.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c5.png new file mode 100644 index 0000000000000000000000000000000000000000..05e6adfc38355d71e977905dfd661c4d8a9c5f8c Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/frac/c5.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/1.png new file mode 100644 index 0000000000000000000000000000000000000000..3654ff91c867daf6eabdb97f02ee3ac19116b676 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/2.png new file mode 100644 index 0000000000000000000000000000000000000000..a33c1dc13bdc3fcfbbbbc65422fe4e01fab424cf Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/3.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc2186ac8cbb7ae187e6b1f41a990feb3a1dc60 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/4.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/4.png new file mode 100644 index 0000000000000000000000000000000000000000..6f528dbf975e917eadde81809ad3ab663a78e272 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/4.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/5.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/5.png new file mode 100644 index 0000000000000000000000000000000000000000..e22d59278cf4d3e295d481848a2ec245d5281ecd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/5.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/6.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/6.png new file mode 100644 index 0000000000000000000000000000000000000000..2eed1bcd0533a3b6ecfc54f6f9d1cab3ef4c81f7 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/6.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c1.png new file mode 100644 index 0000000000000000000000000000000000000000..d797cb8341215b0d5ec100495ae914f7f342f376 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c2.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb6c8f97db9305afdeca4956f320563a9e40e30 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c3.png new file mode 100644 index 0000000000000000000000000000000000000000..0f55b7e17fa552ec9a97f0624582e5c8ab9c1c74 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/func/c3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/1.png new file mode 100644 index 0000000000000000000000000000000000000000..a08ab60d21cb2294337efc5017eec95d180b13a5 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/2.png new file mode 100644 index 0000000000000000000000000000000000000000..09cb7f882c266d4f44fa14fd9e9d01009ded3ffd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/3.png new file mode 100644 index 0000000000000000000000000000000000000000..8898b845cadbea6308e115d76820120cefce16de Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/4.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/4.png new file mode 100644 index 0000000000000000000000000000000000000000..483092e69a6bd7acc836a05ef1cfd97870c578c6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/4.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/5.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/5.png new file mode 100644 index 0000000000000000000000000000000000000000..604128ceda81954571b399706eec20a83e427dbe Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/5.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/6.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/6.png new file mode 100644 index 0000000000000000000000000000000000000000..287b6ca3da36e44daef8c3baa8ed58678a40ded8 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/int/6.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/1.png new file mode 100644 index 0000000000000000000000000000000000000000..a83bf8ecbe0b70c109d0b01c91d01e848127eaf0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/2.png new file mode 100644 index 0000000000000000000000000000000000000000..705255335169d5d135e41a155067ac3caaf57cc2 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/3.png new file mode 100644 index 0000000000000000000000000000000000000000..70b0f3e1d0603800b7411651fb2172f01955bb46 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/large/3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/other.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/other.png new file mode 100644 index 0000000000000000000000000000000000000000..a5796aa82861db92a8d248df72c151f187032dd9 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/other.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/1.png new file mode 100644 index 0000000000000000000000000000000000000000..a40b79a60db45bd8ae0cf019f75f56612bab70bf Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/2.png new file mode 100644 index 0000000000000000000000000000000000000000..1eac155aae83d21adcf8317a8dcf8f80d0d964bd Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/3.png new file mode 100644 index 0000000000000000000000000000000000000000..3425abeb66f4ba54251eccc115ab990994e38888 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/4.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/4.png new file mode 100644 index 0000000000000000000000000000000000000000..fad9d20cfe5e5b62a221a7ce9847dca79eae0e80 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/4.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c1.png new file mode 100644 index 0000000000000000000000000000000000000000..24cbd1bed5c5a1b6d637cd2779d580ebe44edf1a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c2.png new file mode 100644 index 0000000000000000000000000000000000000000..572ad1ffba49478afcee3e46fee8198be363a0f6 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c3.png new file mode 100644 index 0000000000000000000000000000000000000000..d557b777e3a805de5d8a60b06cd6dae8752529ba Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/script/c3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/1.png new file mode 100644 index 0000000000000000000000000000000000000000..f6d0f2e56f9112404f1e0371b7c6de48d3056e20 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/2.png new file mode 100644 index 0000000000000000000000000000000000000000..0ffbabb3fa71bdd73b484cd258268b3d294b4e75 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/3.png new file mode 100644 index 0000000000000000000000000000000000000000..1f1015648fed0dd3895cf3ccf8b84cacac2f3f9f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/4.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/4.png new file mode 100644 index 0000000000000000000000000000000000000000..66470a6b0d6767dbe7e4b9d716d09a6e32ee3256 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/4.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c1.png new file mode 100644 index 0000000000000000000000000000000000000000..cf7beba696997e7c85b3a8883f5e0c4570d1c320 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c2.png new file mode 100644 index 0000000000000000000000000000000000000000..35a5baeebbbd4bb8e941beb61d3b58724328b437 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/sqrt/c2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/1.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/1.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c7d178e4c8187206da6934633424132e721cd0 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/1.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/2.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/2.png new file mode 100644 index 0000000000000000000000000000000000000000..ee9586da60a286df2d113884f3c6b2dbc66201a4 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/2.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/3.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/3.png new file mode 100644 index 0000000000000000000000000000000000000000..93f7d9c8a6d9e97b545fae0a2c91da23ee560767 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/images/toolbar/ys/3.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/base.css b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/base.css new file mode 100644 index 0000000000000000000000000000000000000000..355d9b0b8cfffb39715927b8783f3bf3c52659b0 --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/base.css @@ -0,0 +1,40 @@ + +.kf-editor { + width: 100%; + height: 100%; + border: 1px solid #e0e0e0; + position: relative; + top: 0; + left: 0; + + overflow: hidden; + z-index: 2; + background-color: #f6f5ee; +} + +.kf-editor-edit-area { + position: relative; + top: 0; + left: 0; + + z-index: 1; + height: 0; + background-color: white; + /*background-color: white;*/ + /*background-size: 21px 21px;*/ + /*background-position: 0 0,10px 10px;*/ + /*background-image: -webkit-linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),-webkit-linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);*/ + /*background-image: linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef),linear-gradient(45deg,#efefef 25%,transparent 25%,transparent 75%,#efefef 75%,#efefef);*/ +} + +.kf-editor-canvas-container { + width: 100%; + height: 100%; +} + +.kf-editor-input-box { + position: fixed; + top: 0; + left: -99999999px; + z-index: 999999; +} \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/page.css b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/page.css new file mode 100644 index 0000000000000000000000000000000000000000..8026403bb234793eb236712ac181b4e3c6393aac --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/page.css @@ -0,0 +1,12 @@ + +html, body { + width: 100%; + height: 100%; + padding: 0; + margin: 0; + background: rgba( 48, 48, 48, 0.5 ); +} + +body { + height: 1000px; +} diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/scrollbar.css b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/scrollbar.css new file mode 100644 index 0000000000000000000000000000000000000000..b8254b0c9d9abb0a875f5ce7b5ac04070380fe8b --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/scrollbar.css @@ -0,0 +1,78 @@ +/*! + * 滚动条 + **/ + +.kf-editor-edit-scrollbar { + width: 100%; + height: 16px; + position: absolute; + bottom: 0; + left: 0; + z-index: 994; + border-top: 1px solid #ddd; +} + +.kf-editor-ui-left-button { + position: absolute; + top: 0; + left: 0; + width: 5px; + height: 100%; + background: white; +} + +.kf-editor-ui-right-button { + position: absolute; + top: 0; + right: 0; + width: 5px; + height: 100%; + background: white; +} + +.kf-editor-ui-track { + position: absolute; + top: 0; + left: 5px; + width: 0; + height: 100%; + background-image: url(../images/scrollbar/edit/bar-left.png), url(../images/scrollbar/edit/bar-right.png), url(../images/scrollbar/edit/bar-bg.png); + background-repeat: no-repeat, no-repeat, repeat-x; + background-position: 0 0, right 0, 0 0; +} + +.kf-editor-ui-thumb { + position: absolute; + top: 0; + left: 0; + width: 0; + height: 100%; +} + +.kf-editor-ui-thumb-left { + width: 5px; + height: 100%; + position: absolute; + top: 0; + left: 0; + background: url(../images/scrollbar/edit/thumb-left.png) no-repeat 0 0; + z-index: 1; +} + +.kf-editor-ui-thumb-right { + width: 5px; + height: 100%; + position: absolute; + top: 0; + right: 0; + background: url(../images/scrollbar/edit/thumb-right.png) no-repeat 0 0; +} + +.kf-editor-ui-thumb-body { + position: absolute; + top: 0; + left: 5px; + width: 0; + height: 100%; + background: url(../images/scrollbar/edit/thumb-bg.png) repeat-x 0 0; +} \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/ui.css b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/ui.css new file mode 100644 index 0000000000000000000000000000000000000000..e8ac47083a99743511bc8f21e9d4e719ecf19885 --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/styles/ui.css @@ -0,0 +1,536 @@ +/* 工具栏 */ +.kf-editor-toolbar { + width: 100%; + padding: 1px 10px; + position: relative; + top: 0; + left: 0; + z-index: 2; + background-color: #f6f5ee; + border-bottom: 1px solid #ccc; + -moz-box-shadow:1px 1px 1px rgba( 0, 0, 0, 0.1 ); + -webkit-box-shadow:1px 1px 1px rgba( 0, 0, 0, 0.1 ); + box-shadow:1px 1px 1px rgba( 0, 0, 0, 0.1 ); + color: #000; + font-family: Helvetica, Arial, "微软雅黑", "Microsoft YaHei", "宋体", sans-serif; +} + +/* 按钮 */ +.kf-editor-ui-button { + padding: 8px 6px; + height: 79px; + font-size: 12px; + display: inline-block; + border: 1px solid transparent; + border-radius: 3px; + cursor: default; + position: relative; + top: 0; + left: 0; + z-index: 3; + vertical-align: top; + opacity: 0.5; + margin-right: 1px; +} + +.kf-editor-toolbar .kf-editor-ui-overlap-button { + width: 100%; + height: 25px; + background: #53b856; + border-radius: 0; +} + +.kf-editor-ui-button-icon { + width: 32px; + height: 32px; + margin: 2px auto; +} + +.kf-editor-ui-button-label { + color: #666; + text-align: center; + display: block; + font-size: 12px; + line-height: 20px; +} + +.kf-editor-ui-overlap-button .kf-editor-ui-button-label { + padding: 3px 5px; + text-align: left; + color: white; + font-size: 12px; +} + +.kf-editor-ui-button-sign { + border: 4px solid transparent; + border-top-color: #2d2d2d; + width: 0; + height: 0; + display: inline-block; + margin: 8px auto; + vertical-align: top; +} + +.kf-editor-ui-button-mount-point { + display: none; + position: absolute; + bottom: -2px; + left: -1px; +} + +.kf-editor-ui-overlap-button .kf-editor-ui-button-mount-point { + width: 100%; + height: 10000px; +} + +.kf-editor-ui-wrap-group { + overflow-x: hidden; + overflow-y: auto; +} + +.kf-editor-ui-overlap-button .kf-editor-ui-button-mount-point { + top: 27px; +} + +.kf-editor-toolbar .kf-editor-ui-button-in { + border-color: #8fcc91!important; + background: #e0f0dd!important; +} + +.kf-editor-toolbar .kf-editor-ui-overlap-button { + padding-top: 0; + padding-bottom: 0; + border-color: #61b864!important; + background: #61b864!important; +} + +/* 分割符 */ +.kf-editor-ui-delimiter { + width: 11px; + height: 100%; + display: none; +} + +.kf-editor-ui-enabled.kf-editor-ui-button:HOVER { + border: 1px solid #a9d9ab; + background: #ebf7e6; +} + +.kf-editor-ui-enabled.kf-editor-ui-overlap-button:HOVER { + border: 1px solid #53b856; + background: #53b856; +} + +.kf-editor-ui-delimiter-line { + width: 1px; + height: 100%; + margin: 0 auto; + background: -webkit-linear-gradient(top, rgba(233, 233, 233, 0.11), rgba(92, 92, 92, 0.20) 60%, rgba(92, 92, 92, 0.41) 80%, rgba(123, 123, 123, 0.50)); +} + +/* box */ +.kf-editor-ui-box { + border: 1px solid #b3aead; + border-radius: 3px; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.11); + background: white; + position: absolute; + top: 0; + left: -1px; + overflow-x: hidden; + overflow-y: auto; +} + +.kf-editor-ui-area .kf-editor-ui-box { + border-color: #61b864; +} + +.kf-editor-ui-box-container { + font-size: 12px; +} + +.kf-editor-ui-box-group-title { + background-color: #f7f6f0; + height: 23px; + line-height: 23px; + font-size: 12px; + border: 1px solid #ebeae4; + border-width: 1px 0; + padding-left: 12px; +} + +.kf-editor-ui-box-group-item-container { + padding: 7px 9px 17px 9px; +} + +.kf-editor-ui-overlap-container { + overflow: hidden; +} + +.kf-editor-ui-area .kf-editor-ui-box { + top: -1px; +} + +.kf-editor-ui-overlap-container .kf-editor-ui-button-sign { + border-top-color: white; + border-width: 4px; + margin-left: 10px; + margin-top: 8px; +} + +.kf-editor-ui-yushe-btn .kf-editor-ui-box-item { + border: 1px solid transparent; + padding: 5px; +} + +.kf-editor-ui-box-item { + display: inline-block; + margin: 4px; +} + +.kf-editor-ui-box-item-content:HOVER { + border-color: #dff3df; +} + +.kf-editor-ui-box-item-content:HOVER .kf-editor-ui-box-item-val { + border-color: #6eb864; +} + +.kf-editor-ui-area .kf-editor-ui-box-item { + position: relative; + top: 0; + left: 0; + width: 32px; + height: 32px; + border: 0; + margin: 3px; + padding: 0; + z-index: 1; +} + +.kf-editor-ui-area .kf-editor-ui-box-item img { + width: 32px; + height: 32px; +} + + +.kf-editor-ui-box-item-label { + margin-bottom: 5px; +} + +.kf-editor-ui-box-item-content { + background: white; + border: 1px solid white; +} + +.kf-editor-ui-area .kf-editor-ui-box-item-content { + position: absolute; + top: 0; + left: 0; +} + +.kf-editor-ui-area .kf-editor-ui-box-item-content:HOVER { + border: 1px solid #dff3df; +} + +.kf-editor-ui-box-item-val { + padding: 5px; + line-height: 0; + border: 1px solid #808080; +} + +.kf-editor-ui-area .kf-editor-ui-box-item-val { + padding: 0; + margin: 0; +} + +/* area */ +.kf-editor-ui-area { + height: 79px; + display: inline-block; + cursor: default; + position: relative; + top: 0; + left: 0; + vertical-align: top; + opacity: 0.5; + z-index: 4; + border: 1px solid #e0dfd5; + border-radius: 4px; + background: white; + margin: 8px 10px; +} + +.kf-editor-ui-area-container { + width: 293px; + height: 70px; + /*margin: 7px 5px 5px 5px;*/ + margin: 5px; + display: inline-block; + border-right: 0; + vertical-align: top; + position: relative; + top: 0; + left: 0; + overflow: hidden; +} + +.kf-editor-ui-area-panel { + position: absolute; + top: 0; + left: 0; + line-height: 0; + background: white; + -webkit-transition: top 0.5s linear; + -moz-transition: top 0.5s linear; + transition: top 0.5s linear; +} + +.kf-editor-ui-area-button-container { + display: inline-block; + width: 16px; + height: 100%; + overflow: hidden; + text-align: center; + border: 0 solid #D3D3D3; + border-left-width: 1px; + background-color: #f2f0e6; +} + +.kf-editor-ui-moveup-button, .kf-editor-ui-movedown-button { + line-height: 25px; + height: 30px; +} + +.kf-editor-ui-moveup-button { + background: url("../images/toolbar/btn.png") -304px 9px no-repeat; +} + +.kf-editor-ui-movedown-button { + border: 1px solid #D3D3D3; + border-width: 1px 0; + background: url("../images/toolbar/btn.png") -325px 9px no-repeat; +} + +.kf-editor-ui-area-button { + width: 100%; + height: 50px; + line-height: 26px; + background: url("../images/toolbar/btn.png") -346px 0 no-repeat; +} + +.kf-editor-ui-enabled .kf-editor-ui-area-button:HOVER { + background-color: #e5e4e1; +} + +.kf-editor-ui-enabled .kf-editor-ui-moveup-button:HOVER { + background-color: #e5e4e1; +} + +.kf-editor-ui-enabled .kf-editor-ui-movedown-button:HOVER { + background-color: #e5e4e1; +} + +.kf-editor-ui-area-button-container .kf-editor-ui-disabled { + opacity: 0.25; + background-color: transparent!important; +} + +.kf-editor-ui-area-mount { + position: absolute; + top: 0; + left: 0; + display: none; +} + +.kf-editor-ui-overlap-title { + width: 100%; + line-height: 1.5; +} + +/* list */ +.kf-editor-ui-list { + background: #f9f8f5; + border: 1px solid #b3aead; + border-radius: 3px; + position: fixed; + top: 0; + left: 0; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.11); +} + +.kf-editor-ui-list-bg { + display: none; +} + +.kf-editor-ui-list-item-container { + position: relative; + top: 0; + left: 0; + z-index: 2; +} + +.kf-editor-ui-list-item { + line-height: 24px; + padding: 2px 6px; + border: 1px solid transparent; + border-width: 1px 0; +} + +.kf-editor-ui-list-item-select { + color: #61b864; + font-weight: bold; +} + +.kf-editor-ui-list-item-select .kf-editor-ui-list-item-icon { + visibility: visible; + width: 16px; + height: 16px; + background: url(../images/toolbar/btn.png) no-repeat -367px 0; +} + +.kf-editor-ui-list-item:HOVER { + border-color: #beddbf; + background-color: #ecf3e9; +} + +.kf-editor-ui-list-item-icon { + width: 16px; + height: 16px; + display: inline-block; + vertical-align: middle; + margin-top: -2px; + margin-right: 4px; + visibility: hidden; +} + +/* area 内容区 */ +.kf-editor-ui-area-item { + width: 26px; + height: 26px; + position: absolute; + top: 0; + left: 0; +} + +.kf-editor-ui-area-item-inner { + width: 34px; + height: 34px; + border: 1px solid white; + position: absolute; + top: -4px; + left: -4px; + -webkit-transition: all 0.1s linear; + -moz-transition: all 0.1s linear; + transition: all 0.1s linear; + + -webkit-transform: scale( 0.76 ); + -moz-transform: scale( 0.76 ); + transform: scale( 0.76 ); +} + +.kf-editor-ui-enabled .kf-editor-ui-area-item-inner:HOVER { + border-color: #dff3df; + + -webkit-transform: scale( 1 ); + -moz-transform: scale( 1 ); + transform: scale( 1 ); +} + +.kf-editor-ui-area-item-img { + width: 32px; + height: 32px; + border: 1px solid #808080; + -webkit-transition: all 0.1s linear; + -moz-transition: all 0.1s linear; + transition: all 0.1s linear; +} + +.kf-editor-ui-enabled .kf-editor-ui-area-item-inner:HOVER .kf-editor-ui-area-item-img { + border-color: #6eb864; +} + +.kf-editor-ui-enabled { + opacity: 1; +} + +.kf-editor-ui-overlap-container .kf-editor-ui-box-item { + width: 34px; + height: 34px; + border: 1px solid white; +} + +.kf-editor-ui-overlap-container .kf-editor-ui-box-item-content:HOVER { +} + +.kf-editor-ui-overlap-container .kf-editor-ui-box-item-val { + width: 32px; + height: 32px; +} + +/* scrollbar */ +.kf-editor-ui-box::-webkit-scrollbar { + width: 17px; + background: url(../images/scrollbar/custom/bg.png) 0 0 repeat-y white; +} + +.kf-editor-ui-box::-webkit-scrollbar-button:end:increment { + height: 5px; + background: url(../images/scrollbar/custom/down.png) 0 0 repeat-y white; +} +/*定义滚动条渐减按扭的样式 */ +.kf-editor-ui-box::-webkit-scrollbar-button:start:decrement { + height: 5px; + background: url(../images/scrollbar/custom/up.png) 0 0 repeat-y white; +} + +/* 垂直滚动条的第三层轨道的上段 */ +.kf-editor-ui-box::-webkit-scrollbar-track-piece:vertical:start { + background-image: url(../images/scrollbar/custom/top.png), url(../images/scrollbar/custom/bg.png); + background-repeat: no-repeat, repeat-y; +} +/* 垂直滚动条的第三层轨道的下段 */ +.kf-editor-ui-box::-webkit-scrollbar-track-piece:vertical:end { + background-image: url(../images/scrollbar/custom/bottom.png), url(../images/scrollbar/custom/bg.png); + background-repeat: no-repeat, repeat-y; + background-position: 0 bottom, 0 0; +} +/* 垂直滚动条的滑动块 */ +.kf-editor-ui-box::-webkit-scrollbar-thumb:vertical { + /*background: url(./images2/bar.png) 6px 0 no-repeat;*/ + /*background-size: 6px;*/ + -webkit-border-image: url(../images/scrollbar/custom/bar.png) 8; + border-width: 10px; +} + +.kf-editor-ui-wrap-group::-webkit-scrollbar { + width: 17px; + background: url(../images/scrollbar/custom/bg.png) 0 0 repeat-y white; +} + +.kf-editor-ui-wrap-group::-webkit-scrollbar-button:end:increment { + height: 5px; + background: url(../images/scrollbar/custom/down.png) 0 0 repeat-y white; +} +/*定义滚动条渐减按扭的样式 */ +.kf-editor-ui-wrap-group::-webkit-scrollbar-button:start:decrement { + height: 5px; + background: url(../images/scrollbar/custom/up.png) 0 0 repeat-y white; +} + +/* 垂直滚动条的第三层轨道的上段 */ +.kf-editor-ui-wrap-group::-webkit-scrollbar-track-piece:vertical:start { + background-image: url(../images/scrollbar/custom/top.png), url(../images/scrollbar/custom/bg.png); + background-repeat: no-repeat, repeat-y; +} +/* 垂直滚动条的第三层轨道的下段 */ +.kf-editor-ui-wrap-group::-webkit-scrollbar-track-piece:vertical:end { + background-image: url(../images/scrollbar/custom/bottom.png), url(../images/scrollbar/custom/bg.png); + background-repeat: no-repeat, repeat-y; + background-position: 0 bottom, 0 0; +} +/* 垂直滚动条的滑动块 */ +.kf-editor-ui-wrap-group::-webkit-scrollbar-thumb:vertical { + -webkit-border-image: url(../images/scrollbar/custom/bar.png) 8; + border-width: 10px; +} \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.css b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.css new file mode 100644 index 0000000000000000000000000000000000000000..de07bba550fb8ebfbf732e4a1990cb6c19f7854b --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.css @@ -0,0 +1,540 @@ +/** + * 所有构件样式规则 + **/ +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-widget { + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-user-drag: none; + color: #000000; + line-height: 1.5; + font-size: 12px; + font-family: "ff-tisa-web-pro-1", "ff-tisa-web-pro-2", "Lucida Grande", "Hiragino Sans GB", "Hiragino Sans GB W3", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; + -webkit-font-smoothing: antialiased; + outline: none; + display: inline-block; + vertical-align: top; + position: relative; + top: 0; + left: 0; +} +.fui-widget.fui-selectable { + -webkit-user-select: text; + -khtml-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + -webkit-user-drag: text; +} +.fui-widget * { + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-user-drag: none; +} +.fui-widget.fui-disabled { + opacity: 0.3!important; +} +.fui-widget.fui-hide { + display: none!important; +} +.fui-widget.fui-mask-animate { + -webkit-transition: all 0.2s; +} +.fui-widget.fui-mask-hint { + -webkit-transform: perspective(600px) translateZ(30px); +} + +/** + * 容器类通用样式 + **/ +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-container { + overflow: hidden; + position: relative; + top: 0; + left: 0; +} +.fui-container.fui-disabled { + opacity: 1!important; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-button-menu { + border: 1px solid white; +} +.fui-button-menu:HOVER { + border-color: #d5e1f2; +} +.fui-button-menu.fui-button-active { + border-color: #d5e1f2; + background: #d5e1f2; +} +.fui-button-menu.fui-button-active .fui-button { + background: #d5e1f2; +} +.fui-button-menu.fui-layout-top, +.fui-button-menu.fui-layout-bottom { + text-align: center; +} +.fui-button-menu.fui-layout-top .fui-open-btn, +.fui-button-menu.fui-layout-bottom .fui-open-btn { + display: block; +} + +/** + * 通用button + */ +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-button { + overflow: hidden; + cursor: default; + font-size: 0; +} +.fui-button ._layout .fui-label { + display: block; +} +.fui-button ._layout .fui-icon { + display: block; +} +.fui-button .fui-icon { + display: inline-block; + vertical-align: middle; +} +.fui-button .fui-label { + display: inline-block; + vertical-align: middle; +} +.fui-button.fui-button-layout-top .fui-label { + display: block; +} +.fui-button.fui-button-layout-top .fui-icon { + display: block; +} +.fui-button.fui-button-layout-bottom .fui-label { + display: block; +} +.fui-button.fui-button-layout-bottom .fui-icon { + display: block; +} +.fui-button:HOVER { + background-color: #d5e1f2 !important; + color: #000000 !important; +} +.fui-button:ACTIVE { + background-color: #87a9da !important; + color: #000000 !important; +} +.fui-button.fui-disabled:HOVER { + background-color: #ffffff !important; + color: #000000 !important; +} +.fui-button.fui-disabled:ACTIVE { + background-color: #ffffff !important; + color: #000000 !important; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-colorpicker { + background-color: #fff; +} +.fui-colorpicker-container { + border: 1px solid #d3d3d3; +} +.fui-colorpicker-container .fui-colorpicker-title { + background: #eee; + padding: 2px 4px; +} +.fui-colorpicker-container .fui-colorpicker-colors { + margin: 0; + padding: 0; + font-size: 0; + line-height: 0; +} +.fui-colorpicker-container .fui-colorpicker-colors-line0 { + margin-bottom: 3px; +} +.fui-colorpicker-container .fui-colorpicker-item { + display: inline-block; + margin: 0 2px; + width: 13px; + height: 13px; + border-style: solid; + border-width: 1px; +} +.fui-colorpicker-container .fui-colorpicker-commoncolor, +.fui-colorpicker-container .fui-colorpicker-standardcolor { + margin: 4px 3px; + white-space: nowrap; +} +.fui-colorpicker-container .fui-colorpicker-toolbar { + margin: 4px; + height: 27px; +} +.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-preview { + display: inline-block; + height: 25px; + line-height: 25px; + width: 120px; + border: 1px solid #d3d3d3; +} +.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-clear { + display: inline-block; + height: 25px; + line-height: 25px; + width: 60px; + border: 1px solid #d3d3d3; + font-size: 12px; + text-align: center; + position: absolute; + right: 5px; + cursor: pointer; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ + +/** + * 通用button + */ +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-dialog { + position: fixed; + top: -1000000px; + left: -100000px; + border: 1px solid #B1B1B1; + background: #fff; +} +.fui-dialog .fui-panel-content { + width: auto!important; + height: auto!important; + padding: 2px; +} +.fui-dialog .fui-dialog-caption { + margin: 0; + padding: 5px; + font-size: 16px; + font-weight: normal; + line-height: 1; + display: inline-block; +} +.fui-dialog .fui-dialog-head .fui-close-button { + float: right; +} +.fui-dialog .fui-dialog-head .fui-close-button .fui-close-button-icon { + width: 16px; + height: 16px; + background: url("images/close.png") no-repeat 0 0; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-drop-panel { + border: 1px solid #d3d3d3; + overflow: hidden; + position: relative; +} +.fui-drop-panel .fui-drop-panel-content { + display: inline-block; +} +.fui-drop-panel .fui-drop-panel-placeholder { + display: none; +} +.fui-drop-panel .fui-drop-panel-button { + border-left: 1px solid #d3d3d3; + visibility: visible; +} +.fui-drop-panel .fui-drop-panel-button:HOVER { + border-color: #d5e1f2; +} +.fui-drop-panel .fui-drop-panel-button:ACTIVE { + border-color: #87a9da; +} +.fui-drop-panel:HOVER { + border-color: #d5e1f2; +} +.fui-drop-panel:HOVER .fui-drop-panel-button { + border-left-color: #d5e1f2; +} +.fui-drop-panel:ACTIVE { + border-color: #87a9da; +} +.fui-drop-panel:ACTIVE .fui-drop-panel-button { + border-left-color: #d5e1f2; +} +.fui-drop-panel.fui-drop-panel-open { + overflow: visible; +} +.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-content { + border: 1px solid #d3d3d3; + position: absolute; + top: -1px; + left: -1px; +} +.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-button { + visibility: hidden; +} +.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-placeholder { + display: inline-block; +} +.fui-drop-panel-popup { + border: 1px solid #d3d3d3; +} +.fui-drop-panel-popup:HOVER { + border-color: #d5e1f2; +} +.fui-drop-panel-popup:HOVER .fui-drop-panel-button { + border-left-color: #d5e1f2; +} +.fui-drop-panel-popup:ACTIVE { + border-color: #87a9da; +} +.fui-drop-panel-popup:ACTIVE .fui-drop-panel-button { + border-left-color: #d5e1f2; +} + +.fui-icon { + text-align: center; + font-size: 0; +} +.fui-icon img { + display: inline-block; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-input-button { + border: 1px solid #ababab; +} +.fui-input-button .fui-input { + vertical-align: middle; + border: none!important; +} +.fui-input-button .fui-button { + vertical-align: middle; +} +.fui-input-button:HOVER { + border-color: #87a9da; +} +.fui-input-button:ACTIVE { + border-color: #87a9da; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-input { + border: 1px solid #d3d3d3; + padding: 1px; + margin: 0; +} +.fui-input:HOVER, +.fui-input:FOCUS { + border-color: #4d90fe!important; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-item { + font-size: 0; +} +.fui-item .fui-icon { + vertical-align: middle; +} +.fui-item .fui-label { + vertical-align: middle; +} +.fui-item.fui-item-selected { + background: #87a9da; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-label-panel .fui-label-panel-label { + width: 100%; + color: #666; +} +.fui-label-panel.fui-no-position .fui-label-panel-label { + position: static!important; +} +.fui-label-panel.fui-layout-bottom .fui-label-panel-label { + position: absolute; + bottom: 0; + left: 0; + top: auto; + z-index: 2; +} + +.fui-label { + cursor: default; + display: inline-block; + white-space: nowrap; +} + +/** + * 通用button + */ +.fui-mask { + position: fixed; + z-index: 99998; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-menu { + background-color: #fff; + border: 1px solid #d3d3d3; +} +.fui-menu .fui-item { + padding: 2px 5px; + display: block!important; +} +.fui-menu .fui-item:HOVER { + background: #d5e1f2; +} + +/** + * 通用button + */ +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-panel { + display: inline-block; + vertical-align: top; + overflow-y: auto; + overflow-x: hidden; +} +.fui-panel .fui-panel-content { + position: relative; + top: 0; + left: 0; +} +.fui-panel .fui-panel-content { + width: 100%; + height: 100%; +} +.fui-panel.fui-container-column { + font-size: 0; +} +.fui-panel.fui-container-column .fui-column { + display: block; +} + +/** + * 通用button + */ +.fui-ppanel::-webkit-scrollbar { + width: 15px; +} +.fui-ppanel::-webkit-scrollbar-button:start:decrement, +.fui-ppanel::-webkit-scrollbar-button:end:decrement, +.fui-ppanel::-webkit-scrollbar-button:start:increment, +.fui-ppanel::-webkit-scrollbar-button:end:increment, +.fui-ppanel::-webkit-scrollbar-thumb { + border: 1px solid #e7e7e7; +} +.fui-ppanel.fui-ppanel-position { + position: fixed; + z-index: 99999; +} + +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-separator { + background: #6d6d6d; +} + +/** + * Spin-button + */ +.fui-spin-button .fui-spin-up-btn .fui-icon, +.fui-spin-button .fui-spin-down-btn .fui-icon { + width: 16px; + height: 9px; + background: url("images/up.png") no-repeat 3px 1.5px; +} +.fui-spin-button .fui-spin-down-btn .fui-icon { + background-image: url("images/down.png"); +} + +/** + * 通用button + */ +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-tabs .fui-selected { + background-color: #d5e1f2; +} + +/** + * 可切换Button (ToggleButton) + */ +/** + * FUI 通用样式定义 + */ +/*------------ var*/ +/*------------ mixin*/ +.fui-toggle-button.fui-button-pressed { + background-color: #aec5e6; +} +.fui-toggle-button.fui-button-pressed.fui-disabled { + background-color: #aec5e6 !important; +} diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.min.css b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.min.css new file mode 100644 index 0000000000000000000000000000000000000000..3faab2ac1ea32991c667e6ff208385bbb4f6a06b --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/fui.min.css @@ -0,0 +1,10 @@ +/*! + * ==================================================== + * Themes file * Flex UI - v1.0.0 - 2014-07-28 + * https://github.com/fex-team/fui + * GitHub: https://github.com/fex-team/fui.git + * Copyright (c) 2014 Baidu Kity Group; Licensed MIT + * ==================================================== + */ + +.fui-widget{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;color:#000;line-height:1.5;font-size:12px;font-family:ff-tisa-web-pro-1,ff-tisa-web-pro-2,"Lucida Grande","Hiragino Sans GB","Hiragino Sans GB W3","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;-webkit-font-smoothing:antialiased;outline:0;display:inline-block;vertical-align:top;position:relative;top:0;left:0}.fui-widget.fui-selectable{-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;-webkit-user-drag:text}.fui-widget *{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none}.fui-widget.fui-disabled{opacity:.3!important}.fui-widget.fui-hide{display:none!important}.fui-widget.fui-mask-animate{-webkit-transition:all .2s}.fui-widget.fui-mask-hint{-webkit-transform:perspective(600px) translateZ(30px)}.fui-container{overflow:hidden;position:relative;top:0;left:0}.fui-container.fui-disabled{opacity:1!important}.fui-button-menu{border:1px solid #fff}.fui-button-menu:HOVER{border-color:#d5e1f2}.fui-button-menu.fui-button-active{border-color:#d5e1f2;background:#d5e1f2}.fui-button-menu.fui-button-active .fui-button{background:#d5e1f2}.fui-button-menu.fui-layout-bottom,.fui-button-menu.fui-layout-top{text-align:center}.fui-button-menu.fui-layout-bottom .fui-open-btn,.fui-button-menu.fui-layout-top .fui-open-btn{display:block}.fui-button{overflow:hidden;cursor:default;font-size:0}.fui-button ._layout .fui-icon,.fui-button ._layout .fui-label{display:block}.fui-button .fui-icon,.fui-button .fui-label{display:inline-block;vertical-align:middle}.fui-button.fui-button-layout-bottom .fui-icon,.fui-button.fui-button-layout-bottom .fui-label,.fui-button.fui-button-layout-top .fui-icon,.fui-button.fui-button-layout-top .fui-label{display:block}.fui-button:HOVER{background-color:#d5e1f2!important;color:#000!important}.fui-button:ACTIVE{background-color:#87a9da!important;color:#000!important}.fui-button.fui-disabled:ACTIVE,.fui-button.fui-disabled:HOVER{background-color:#fff!important;color:#000!important}.fui-colorpicker{background-color:#fff}.fui-colorpicker-container{border:1px solid #d3d3d3}.fui-colorpicker-container .fui-colorpicker-title{background:#eee;padding:2px 4px}.fui-colorpicker-container .fui-colorpicker-colors{margin:0;padding:0;font-size:0;line-height:0}.fui-colorpicker-container .fui-colorpicker-colors-line0{margin-bottom:3px}.fui-colorpicker-container .fui-colorpicker-item{display:inline-block;margin:0 2px;width:13px;height:13px;border-style:solid;border-width:1px}.fui-colorpicker-container .fui-colorpicker-commoncolor,.fui-colorpicker-container .fui-colorpicker-standardcolor{margin:4px 3px;white-space:nowrap}.fui-colorpicker-container .fui-colorpicker-toolbar{margin:4px;height:27px}.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-preview{display:inline-block;height:25px;line-height:25px;width:120px;border:1px solid #d3d3d3}.fui-colorpicker-container .fui-colorpicker-toolbar .fui-colorpicker-clear{display:inline-block;height:25px;line-height:25px;width:60px;border:1px solid #d3d3d3;font-size:12px;text-align:center;position:absolute;right:5px;cursor:pointer}.fui-dialog{position:fixed;top:-1000000px;left:-100000px;border:1px solid #B1B1B1;background:#fff}.fui-dialog .fui-panel-content{width:auto!important;height:auto!important;padding:2px}.fui-dialog .fui-dialog-caption{margin:0;padding:5px;font-size:16px;font-weight:400;line-height:1;display:inline-block}.fui-dialog .fui-dialog-head .fui-close-button{float:right}.fui-dialog .fui-dialog-head .fui-close-button .fui-close-button-icon{width:16px;height:16px;background:url(images/close.png) no-repeat}.fui-drop-panel{border:1px solid #d3d3d3;overflow:hidden;position:relative}.fui-drop-panel .fui-drop-panel-content{display:inline-block}.fui-drop-panel .fui-drop-panel-placeholder{display:none}.fui-drop-panel .fui-drop-panel-button{border-left:1px solid #d3d3d3;visibility:visible}.fui-drop-panel .fui-drop-panel-button:HOVER{border-color:#d5e1f2}.fui-drop-panel .fui-drop-panel-button:ACTIVE{border-color:#87a9da}.fui-drop-panel:HOVER{border-color:#d5e1f2}.fui-drop-panel:HOVER .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-drop-panel:ACTIVE{border-color:#87a9da}.fui-drop-panel:ACTIVE .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-drop-panel.fui-drop-panel-open{overflow:visible}.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-content{border:1px solid #d3d3d3;position:absolute;top:-1px;left:-1px}.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-button{visibility:hidden}.fui-drop-panel.fui-drop-panel-open .fui-drop-panel-placeholder{display:inline-block}.fui-drop-panel-popup{border:1px solid #d3d3d3}.fui-drop-panel-popup:HOVER{border-color:#d5e1f2}.fui-drop-panel-popup:HOVER .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-drop-panel-popup:ACTIVE{border-color:#87a9da}.fui-drop-panel-popup:ACTIVE .fui-drop-panel-button{border-left-color:#d5e1f2}.fui-icon{text-align:center;font-size:0}.fui-icon img{display:inline-block}.fui-input-button{border:1px solid #ababab}.fui-input-button .fui-input{vertical-align:middle;border:none!important}.fui-input-button .fui-button{vertical-align:middle}.fui-input-button:ACTIVE,.fui-input-button:HOVER{border-color:#87a9da}.fui-input{border:1px solid #d3d3d3;padding:1px;margin:0}.fui-input:FOCUS,.fui-input:HOVER{border-color:#4d90fe!important}.fui-item{font-size:0}.fui-item .fui-icon,.fui-item .fui-label{vertical-align:middle}.fui-item.fui-item-selected{background:#87a9da}.fui-label-panel .fui-label-panel-label{width:100%;color:#666}.fui-label-panel.fui-no-position .fui-label-panel-label{position:static!important}.fui-label-panel.fui-layout-bottom .fui-label-panel-label{position:absolute;bottom:0;left:0;top:auto;z-index:2}.fui-label{cursor:default;display:inline-block;white-space:nowrap}.fui-mask{position:fixed;z-index:99998}.fui-menu{background-color:#fff;border:1px solid #d3d3d3}.fui-menu .fui-item{padding:2px 5px;display:block!important}.fui-menu .fui-item:HOVER{background:#d5e1f2}.fui-panel{display:inline-block;vertical-align:top;overflow-y:auto;overflow-x:hidden}.fui-panel .fui-panel-content{position:relative;top:0;left:0;width:100%;height:100%}.fui-panel.fui-container-column{font-size:0}.fui-panel.fui-container-column .fui-column{display:block}.fui-ppanel::-webkit-scrollbar{width:15px}.fui-ppanel::-webkit-scrollbar-button:end:decrement,.fui-ppanel::-webkit-scrollbar-button:end:increment,.fui-ppanel::-webkit-scrollbar-button:start:decrement,.fui-ppanel::-webkit-scrollbar-button:start:increment,.fui-ppanel::-webkit-scrollbar-thumb{border:1px solid #e7e7e7}.fui-ppanel.fui-ppanel-position{position:fixed;z-index:99999}.fui-separator{background:#6d6d6d}.fui-spin-button .fui-spin-down-btn .fui-icon,.fui-spin-button .fui-spin-up-btn .fui-icon{width:16px;height:9px;background:url(images/up.png) 3px 1.5px no-repeat}.fui-spin-button .fui-spin-down-btn .fui-icon{background-image:url(images/down.png)}.fui-tabs .fui-selected{background-color:#d5e1f2}.fui-toggle-button.fui-button-pressed{background-color:#aec5e6}.fui-toggle-button.fui-button-pressed.fui-disabled{background-color:#aec5e6!important} \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/close.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/close.png new file mode 100644 index 0000000000000000000000000000000000000000..4f8885f47e0ce084c2a963bad9a3d9998e4c292d Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/close.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/down.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/down.png new file mode 100644 index 0000000000000000000000000000000000000000..cf92db68069cad3c42ef007f543f905fe00fb2b3 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/down.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/open.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/open.png new file mode 100644 index 0000000000000000000000000000000000000000..861a04e883c7eeabda06bf1ea385218b2c34ff3e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/open.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/up.png b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/up.png new file mode 100644 index 0000000000000000000000000000000000000000..4e4a6d1f9831b280fc99774f19b835ae0ff96c7e Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/assets/theme/default/images/up.png differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/jquery-3.6.0.min.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/jquery-3.6.0.min.js new file mode 100644 index 0000000000000000000000000000000000000000..c4c6022f2982e8dae64cebd6b9a2b59f2547faad --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/jquery-3.6.0.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
    ",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0p;p++)k=n[p],k!==h?k?"string"==typeof k?(n[p]="brackets"===e.name&&2>p?k:"function"===e.name&&0===p?k:c("text",k),f.operand.push(n[p])):(f.operand.push({}),n[p]=b(a.operand[p],k,f.operand[f.operand.length-1],g,i)):(n[p]=c("empty"),f.operand.push(n[p])):(m.push(p),i.hasOwnProperty("startOffset")||(i.startOffset=p),i.endOffset=p,e.attr&&e.attr.id&&(i.groupId=e.attr.id));for(2===m.length&&(i.endOffset-=1);p=m.length;)p=m[p-1],n.splice(p,1),m.length--,a.operand.splice(p,1)}if(o=d(e.name),!o)throw new Error("operator type error: not found "+e.operator);j=function(){},j.prototype=o.prototype,l=new j,o.apply(l,n),f.func=l;for(var r in e.callFn)e.callFn.hasOwnProperty(r)&&l[r]&&l[r].apply(l,e.callFn[r]);return e.attr&&(e.attr.id&&(g[e.attr.id]={objGroup:l,strGroup:a}),e.attr["data-root"]&&(g.root={objGroup:l,strGroup:a}),l.setAttr(e.attr)),l}function c(a,b){switch(a){case"empty":return new kf.EmptyExpression;case"text":return new kf.TextExpression(b)}}function d(a){return g[a]||kf[a.replace(/^[a-z]/i,function(a){return a.toUpperCase()}).replace(/-([a-z])/gi,function(a,b){return b.toUpperCase()})+"Expression"]}function e(a){var b={};if("[object Array]"==={}.toString.call(a)){b=[];for(var c=0,d=a.length;d>c;c++)b[c]=f(a[c])}else for(var e in a)a.hasOwnProperty(e)&&(b[e]=f(a[e]));return b}function f(a){return a?"object"!=typeof a?a:e(a):a}var g={},h="\uf155";return a.prototype.generateBy=function(a){var c=a.tree,d={},f={},g={};if("string"==typeof c)throw new Error("Unhandled error");return this.formula.appendExpression(b(c,e(c),d,g,f)),{select:f,parsedTree:c,tree:d,mapping:g}},a.prototype.regenerateBy=function(a){return this.formula.clearExpressions(),this.generateBy(a)},a}},b[1]={value:function(){return{toRPNExpression:b.r(2),generateTree:b.r(3)}}},b[2]={value:function(){function a(b){var e=[],f=null;for(b=c(b);f=b.shift();)"combination"===f.name&&1===f.operand.length&&"brackets"===f.operand[0].name&&(f=f.operand[0]),e.push(d.isArray(f)?a(f):f);return e}function c(a){for(var b=[],c=null;void 0!==(c=a.pop());)if(!c||"object"!=typeof c||c.sign!==!1&&"function"!==c.name)b.push(c);else{var d=c.handler(c,[],b.reverse());b.unshift(d),b.reverse()}return b.reverse()}var d=b.r(4);return a}},b[3]={value:function(){function a(b){for(var e=null,f=[],g=0,h=b.length;h>g;g++)d.isArray(b[g])&&(b[g]=a(b[g]));for(;e=b.shift();)f.push("object"==typeof e&&e.handler?e.handler(e,f,b):e);return c(f)}var c=b.r(13),d=b.r(4);return a}},b[4]={value:function(){var a=b.r(7),c=b.r(6),d=b.r(15),e={getLatexType:function(b){return b=b.replace(/^\\/,""),a[b]?"operator":c[b]?"function":"text"},isArray:function(a){return a&&"[object Array]"===Object.prototype.toString.call(a)},getDefine:function(b){return e.extend({},a[b.replace("\\","")])},getFuncDefine:function(a){return{name:"function",params:a.replace(/^\\/,""),handler:d}},getBracketsDefine:function(b,c){return e.extend({params:[b,c]},a.brackets)},extend:function(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}};return e}},b[5]={value:function(){var a=!0;return{".":a,"{":a,"}":a,"[":a,"]":a,"(":a,")":a,"|":a}}},b[6]={value:function(){return{sin:1,cos:1,arccos:1,cosh:1,det:1,inf:1,limsup:1,Pr:1,tan:1,arcsin:1,cot:1,dim:1,ker:1,ln:1,sec:1,tanh:1,arctan:1,coth:1,exp:1,lg:1,log:1,arg:1,csc:1,gcd:1,lim:1,max:1,sinh:1,deg:1,hom:1,liminf:1,min:1,sup:1}}},b[7]={value:function(){var a=b.r(22),c=b.r(11);return{"^":{name:"superscript",type:c.OP,handler:a},_:{name:"subscript",type:c.OP,handler:a},frac:{name:"fraction",type:c.FN,sign:!1,handler:b.r(14)},sqrt:{name:"radical",type:c.FN,sign:!1,handler:b.r(23)},sum:{name:"summation",type:c.FN,traversal:"rtl",handler:b.r(24)},"int":{name:"integration",type:c.FN,traversal:"rtl",handler:b.r(16)},brackets:{name:"brackets",type:c.FN,handler:b.r(12)},mathcal:{name:"mathcal",type:c.FN,sign:!1,handler:b.r(19)},mathfrak:{name:"mathfrak",type:c.FN,sign:!1,handler:b.r(20)},mathbb:{name:"mathbb",type:c.FN,sign:!1,handler:b.r(18)},mathrm:{name:"mathrm",type:c.FN,sign:!1,handler:b.r(21)}}}},b[8]={value:function(){return{"int":b.r(26),quot:b.r(27)}}},b[9]={value:function(){return{combination:b.r(29),fraction:b.r(30),"function":b.r(31),integration:b.r(32),subscript:b.r(39),superscript:b.r(41),script:b.r(37),radical:b.r(38),summation:b.r(40),brackets:b.r(28),mathcal:b.r(34),mathfrak:b.r(35),mathbb:b.r(33),mathrm:b.r(36)}}},b[10]={value:function(){return{"#":1,$:1,"%":1,_:1,"&":1,"{":1,"}":1,"^":1,"~":1}}},b[11]={value:function(){return{OP:1,FN:2}}},b[12]={value:function(){var a=b.r(5);return function(b,c,d){for(var e=0,f=b.params.length;f>e;e++)if(!(b.params[e]in a))throw new Error("Brackets: invalid params");return b.operand=b.params,b.params[2]=d.shift(),delete b.handler,delete b.params,b}}},b[13]={value:function(){return function(){return{name:"combination",operand:arguments[0]||[]}}}},b[14]={value:function(){return function(a,b,c){var d=c.shift(),e=c.shift();if(void 0===d||void 0===e)throw new Error("Frac: Syntax Error");return d.handler&&"integration"===d.name?(d=d.handler(d,b,[e]),e=c.shift()):e.handler&&"integration"===e.name&&(e=e.handler(e,b,[c.shift()])),a.operand=[d,e],delete a.handler,a}}},b[15]={value:function(){var a=b.r(17);return function(b,c,d){var e=a.exec(d);return e.expr&&e.expr.handler&&"integration"===e.expr.name&&(e.expr=e.expr.handler(e.expr,c,[d.shift()])),b.operand=[b.params,e.expr,e.superscript,e.subscript],delete b.params,delete b.handler,b}}},b[16]={value:function(){var a=b.r(17),c=b.r(11).FN;return function(b,d,e){var f=e.shift(),g=a.exec(e);return g.expr&&g.expr.type===c&&g.expr.handler&&"integration"===g.expr.name&&(g.expr=g.expr.handler(g.expr,d,[e.shift()])),b.operand=[g.expr,g.superscript,g.subscript],b.callFn={setType:[0|f]},delete b.handler,b}}},b[17]={value:function(){function a(a){var c=b(a),d=null,e={superscript:null,subscript:null};if(!c)return e;if(d=b(a),e[c.type]=c.value||null,d){if(d.type===c.type)throw new Error("Script: syntax error!");e[d.type]=d.value||null}return e}function b(a){var b=a.shift();return b?"subscript"===b.name||"superscript"===b.name?{type:b.name,value:a.shift()}:(a.unshift(b),null):null}return{exec:function(b){var c=a(b),d=b.shift();if(d&&d.name&&-1!==d.name.indexOf("script"))throw new Error("Script: syntax error!");return c.expr=d||null,c}}}},b[18]={value:function(){return function(a,b,c){var d=c.shift();return"object"==typeof d&&"combination"===d.name&&(d=d.operand.join("")),a.name="text",a.attr={_reverse:"mathbb"},a.callFn={setFamily:["KF AMS BB"]},a.operand=[d],delete a.handler,a}}},b[19]={value:function(){return function(a,b,c){var d=c.shift();return"object"==typeof d&&"combination"===d.name&&(d=d.operand.join("")),a.name="text",a.attr={_reverse:"mathcal"},a.callFn={setFamily:["KF AMS CAL"]},a.operand=[d],delete a.handler,a}}},b[20]={value:function(){return function(a,b,c){var d=c.shift();return"object"==typeof d&&"combination"===d.name&&(d=d.operand.join("")),a.name="text",a.attr={_reverse:"mathfrak"},a.callFn={setFamily:["KF AMS FRAK"]},a.operand=[d],delete a.handler,a}}},b[21]={value:function(){return function(a,b,c){var d=c.shift();return"object"==typeof d&&"combination"===d.name&&(d=d.operand.join("")),a.name="text",a.attr={_reverse:"mathrm"},a.callFn={setFamily:["KF AMS ROMAN"]},a.operand=[d],delete a.handler,a}}},b[22]={value:function(){return function(a,b,c){var d=b.pop(),e=c.shift()||null;if(!e)throw new Error("Missing script");if(d=d||"",d.name===a.name||"script"===d.name)throw new Error("script error");return"subscript"===d.name?(d.name="script",d.operand[2]=d.operand[1],d.operand[1]=e,d):"superscript"===d.name?(d.name="script",d.operand[2]=e,d):(a.operand=[d,e],delete a.handler,a)}}},b[23]={value:function(){var a=b.r(13);return function(b,c,d){var e=d.shift(),f=null,g=null;if("["===e){for(e=[];(f=d.shift())&&"]"!==f;)e.push(f);e=0===e.length?null:a(e),g=d.shift()}else g=e,e=null;return b.operand=[g,e],delete b.handler,b}}},b[24]={value:function(){var a=b.r(17),c=b.r(11).FN;return function(b,d,e){var f=a.exec(e);return f.expr&&f.expr.type===c&&f.expr.handler&&"integration"===f.expr.name&&(f.expr=f.expr.handler(f.expr,d,[e.shift()])),b.operand=[f.expr,f.superscript,f.subscript],delete b.handler,b}}},b[25]={value:function(){function a(a){if(d(a))return a.substring(1);switch(m.getLatexType(a)){case"operator":return m.getDefine(a);case"function":return m.getFuncDefine(a);default:return c(a)}}function c(a){return 0===a.indexOf("\\")?a+"\\":a}function d(a){return 0===a.indexOf("\\")?!!l[a.substring(1)]:!1}function e(a){return a.replace(/\\\s+/,"").replace(/\s*([^a-z0-9\s])\s*/gi,function(a,b){return b})}var f=b.r(43).Parser,g=b.r(1),h=b.r(8),i=b.r(42),j=b.r(7),k=b.r(9),l=b.r(10),m=b.r(4),n="\ufff8",o="\ufffc",p=new RegExp(n+"|"+o,"g"),q=new RegExp(n,"g"),r=new RegExp(o,"g");f.register("latex",f.implement({parse:function(a){var b=this.split(this.format(a));return b=this.parseToGroup(b),b=this.parseToStruct(b),this.generateTree(b)},serialization:function(a,b){return i(a,b)},expand:function(a){var b=a.parse,c=null,d=a.pre,e=a.reverse;for(var f in b)b.hasOwnProperty(f)&&(c=f.replace(/\\/g,""),j[c]=b[f]);for(var f in e)e.hasOwnProperty(f)&&(k[f.replace(/\\/g,"")]=e[f]);if(d)for(var f in d)d.hasOwnProperty(f)&&(h[f.replace(/\\/g,"")]=d[f])},format:function(a){a=e(a),a=a.replace(p,"").replace(/\\{/gi,n).replace(/\\}/gi,o);for(var b in h)h.hasOwnProperty(b)&&(a=h[b](a));return a},split:function(a){var b=[],c=/(?:\\[^a-z]\s*)|(?:\\[a-z]+\s*)|(?:[{}]\s*)|(?:[^\\{}]\s*)/gi,d=/^\s+|\s+$/g,e=null;for(a=a.replace(d,"");e=c.exec(a);)e=e[0].replace(d,""),e&&b.push(e);return b},generateTree:function(a){for(var b=[],c=null;c=a.shift();)b.push(m.isArray(c)?this.generateTree(c):c);return b=g.toRPNExpression(b),g.generateTree(b)},parseToGroup:function(a){for(var b=[],c=[b],d=0,e=0,f=0,g=a.length;g>f;f++)switch(a[f]){case"{":d++,c.push(b),b.push([]),b=b[b.length-1];break;case"}":d--,b=c.pop();break;case"\\left":e++,c.push(b),b.push([[]]),b=b[b.length-1][0],b.type="brackets",f++,b.leftBrackets=a[f].replace(q,"{").replace(r,"}");break;case"\\right":e--,f++,b.rightBrackets=a[f].replace(q,"{").replace(r,"}"),b=c.pop();break;default:b.push(a[f].replace(q,"\\{").replace(r,"\\}"))}if(0!==d)throw new Error("Group Error!");if(0!==e)throw new Error("Brackets Error!");return c[0]},parseToStruct:function(b){for(var c=[],d=0,e=b.length;e>d;d++)m.isArray(b[d])?"brackets"===b[d].type?(c.push(m.getBracketsDefine(b[d].leftBrackets,b[d].rightBrackets)),c.push(this.parseToStruct(b[d]))):c.push(this.parseToStruct(b[d])):c.push(a(b[d]));return c}}))}},b[26]={value:function(){return function(a){return a.replace(/\\(i+)nt(\b|[^a-zA-Z])/g,function(a,b,c){return"\\int "+b.length+c})}}},b[27]={value:function(){return function(a){return a.replace(/``/g,"\u201c")}}},b[28]={value:function(){return function(a){return("{"===a[0]||"}"===a[0])&&(a[0]="\\"+a[0]),("{"===a[1]||"}"===a[1])&&(a[1]="\\"+a[1]),["\\left",a[0],a[2],"\\right",a[1]].join(" ")}}},b[29]={value:function(){return function(a){return this.attr["data-root"]||this.attr["data-placeholder"]?a.join(""):"{"+a.join("")+"}"}}},b[30]={value:function(){return function(a){return"\\frac "+a[0]+" "+a[1]}}},b[31]={value:function(){return function(a){var b=["\\"+a[0]];return a[2]&&b.push("^"+a[2]),a[3]&&b.push("_"+a[3]),a[1]&&b.push(" "+a[1]),b.join("")}}},b[32]={value:function(){return function(a){var b=["\\int "];if(this.callFn&&this.callFn.setType){b=["\\"];for(var c=0,d=this.callFn.setType;d>c;c++)b.push("i");b.push("nt ")}return a[1]&&b.push("^"+a[1]),a[2]&&b.push("_"+a[2]),a[0]&&b.push(" "+a[0]),b.join("")}}},b[33]={value:function(){return function(a){return"\\mathbb{"+a[0]+"}"}}},b[34]={value:function(){return function(a){return"\\mathcal{"+a[0]+"}"}}},b[35]={value:function(){return function(a){return"\\mathfrak{"+a[0]+"}"}}},b[36]={value:function(){return function(a){return"\\mathrm{"+a[0]+"}"}}},b[37]={value:function(){return function(a){return a[0]+"^"+a[1]+"_"+a[2]}}},b[38]={value:function(){return function(a){var b=["\\sqrt"];return a[1]&&b.push("["+a[1]+"]"),b.push(" "+a[0]),b.join("")}}},b[39]={value:function(){return function(a){return a[0]+"_"+a[1]}}},b[40]={value:function(){return function(a){var b=["\\sum "];return a[1]&&b.push("^"+a[1]),a[2]&&b.push("_"+a[2]),a[0]&&b.push(" "+a[0]),b.join("")}}},b[41]={value:function(){return function(a){return a[0]+"^"+a[1]}}},b[42]={value:function(){function a(b,e){var g=[],h=null,i=null;if("object"!=typeof b)return c(b)?"\\"+b+" ":b.replace(f,function(a,b){return b+" "});"combination"===b.name&&1===b.operand.length&&"combination"===b.operand[0].name&&(b=b.operand[0]),i=b.operand;for(var j=0,k=i.length;k>j;j++)g.push(i[j]?a(i[j]):i[j]);return h=b.attr&&b.attr._reverse?b.attr._reverse:b.name,d[h].call(b,g,e)}function c(a){return!!e[a]}var d=b.r(9),e=b.r(10),f=/(\\(?:[\w]+)|(?:[^a-z]))\\/gi;return function(b,c){return a(b,c)}}},b[43]={value:function(a,b,c){function d(a){this.impl=new a,this.conf={}}function e(){this.conf={}}var f={},g={},h={extend:function(a,b){var c=null;b=[].slice.call(arguments,1);for(var d=0,e=b.length;e>d;d++){c=b[d];for(var f in c)c.hasOwnProperty(f)&&(a[f]=c[f])}},setData:function(a,b,c){if("string"==typeof b)a[b]=c;else{if("object"!=typeof b)throw new Error("invalid option");for(c in b)b.hasOwnProperty(c)&&(a[c]=b[c])}}},i={use:function(a){if(!g[a])throw new Error("unknown parser type");return this.proxy(g[a])},config:function(a,b){return h.setData(f,a,b),this},register:function(a,b){return g[a.toLowerCase()]=b,this},implement:function(a){var b=function(){},c=a.constructor||function(){},d=function(){e.call(this),c.call(this)};b.prototype=e.prototype,d.prototype=new b,delete a.constructor;for(var f in a)"constructor"!==f&&a.hasOwnProperty(f)&&(d.prototype[f]=a[f]);return d},proxy:function(a){return new d(a)}};h.extend(d.prototype,{config:function(a,b){h.setData(this.conf,a,b)},set:function(a,b){this.impl.set(a,b)},parse:function(a){var b={config:{},tree:this.impl.parse(a)};return h.extend(b.config,f,this.conf),b},serialization:function(a,b){return this.impl.serialization(a,b)},expand:function(a){this.impl.expand(a)}}),h.extend(e.prototype,{set:function(a,b){h.extend(this.conf,a,b)},parse:function(){throw new Error("Abstract function")}}),c.exports={Parser:i,ParserInterface:e}}},b[44]={value:function(){var a=b.r(43).Parser;b.r(25),window.kf.Parser=a,window.kf.Assembly=b.r(0)}};var c={"kf.start":44};!function(){try{a("kf.start")}catch(b){}}(this)}(); \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kity-formula-render.all.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kity-formula-render.all.js new file mode 100644 index 0000000000000000000000000000000000000000..80665993b6bfe5d26925a5599cecac437f88a1e7 --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kity-formula-render.all.js @@ -0,0 +1,5757 @@ +/*! + * ==================================================== + * Kity Formula Render - v1.0.0 - 2014-07-30 + * https://github.com/kitygraph/formula + * GitHub: https://github.com/kitygraph/formula.git + * Copyright (c) 2014 Baidu Kity Group; Licensed MIT + * ==================================================== + */ + +(function () { +var _p = { + r: function(index) { + if (_p[index].inited) { + return _p[index].value; + } + if (typeof _p[index].value === "function") { + var module = { + exports: {} + }, returnValue = _p[index].value(null, module.exports, module); + _p[index].inited = true; + _p[index].value = returnValue; + if (returnValue !== undefined) { + return returnValue; + } else { + for (var key in module.exports) { + if (module.exports.hasOwnProperty(key)) { + _p[index].inited = true; + _p[index].value = module.exports; + return module.exports; + } + } + } + } else { + _p[index].inited = true; + return _p[index].value; + } + } +}; + +/*! + * canvg库封装 + * canvg官网: https://code.google.com/p/canvg/ + */ +_p[0] = { + value: function(require) { + /** + * A class to parse color values + * @author Stoyan Stefanov + * @link http://www.phpied.com/rgb-color-parser-in-javascript/ + * @license Use it if you like it + */ + function RGBColor(color_string) { + this.ok = false; + // strip any leading # + if (color_string.charAt(0) == "#") { + // remove # if any + color_string = color_string.substr(1, 6); + } + color_string = color_string.replace(/ /g, ""); + color_string = color_string.toLowerCase(); + // before getting into regexps, try simple matches + // and overwrite the input + var simple_colors = { + aliceblue: "f0f8ff", + antiquewhite: "faebd7", + aqua: "00ffff", + aquamarine: "7fffd4", + azure: "f0ffff", + beige: "f5f5dc", + bisque: "ffe4c4", + black: "000000", + blanchedalmond: "ffebcd", + blue: "0000ff", + blueviolet: "8a2be2", + brown: "a52a2a", + burlywood: "deb887", + cadetblue: "5f9ea0", + chartreuse: "7fff00", + chocolate: "d2691e", + coral: "ff7f50", + cornflowerblue: "6495ed", + cornsilk: "fff8dc", + crimson: "dc143c", + cyan: "00ffff", + darkblue: "00008b", + darkcyan: "008b8b", + darkgoldenrod: "b8860b", + darkgray: "a9a9a9", + darkgreen: "006400", + darkkhaki: "bdb76b", + darkmagenta: "8b008b", + darkolivegreen: "556b2f", + darkorange: "ff8c00", + darkorchid: "9932cc", + darkred: "8b0000", + darksalmon: "e9967a", + darkseagreen: "8fbc8f", + darkslateblue: "483d8b", + darkslategray: "2f4f4f", + darkturquoise: "00ced1", + darkviolet: "9400d3", + deeppink: "ff1493", + deepskyblue: "00bfff", + dimgray: "696969", + dodgerblue: "1e90ff", + feldspar: "d19275", + firebrick: "b22222", + floralwhite: "fffaf0", + forestgreen: "228b22", + fuchsia: "ff00ff", + gainsboro: "dcdcdc", + ghostwhite: "f8f8ff", + gold: "ffd700", + goldenrod: "daa520", + gray: "808080", + green: "008000", + greenyellow: "adff2f", + honeydew: "f0fff0", + hotpink: "ff69b4", + indianred: "cd5c5c", + indigo: "4b0082", + ivory: "fffff0", + khaki: "f0e68c", + lavender: "e6e6fa", + lavenderblush: "fff0f5", + lawngreen: "7cfc00", + lemonchiffon: "fffacd", + lightblue: "add8e6", + lightcoral: "f08080", + lightcyan: "e0ffff", + lightgoldenrodyellow: "fafad2", + lightgrey: "d3d3d3", + lightgreen: "90ee90", + lightpink: "ffb6c1", + lightsalmon: "ffa07a", + lightseagreen: "20b2aa", + lightskyblue: "87cefa", + lightslateblue: "8470ff", + lightslategray: "778899", + lightsteelblue: "b0c4de", + lightyellow: "ffffe0", + lime: "00ff00", + limegreen: "32cd32", + linen: "faf0e6", + magenta: "ff00ff", + maroon: "800000", + mediumaquamarine: "66cdaa", + mediumblue: "0000cd", + mediumorchid: "ba55d3", + mediumpurple: "9370d8", + mediumseagreen: "3cb371", + mediumslateblue: "7b68ee", + mediumspringgreen: "00fa9a", + mediumturquoise: "48d1cc", + mediumvioletred: "c71585", + midnightblue: "191970", + mintcream: "f5fffa", + mistyrose: "ffe4e1", + moccasin: "ffe4b5", + navajowhite: "ffdead", + navy: "000080", + oldlace: "fdf5e6", + olive: "808000", + olivedrab: "6b8e23", + orange: "ffa500", + orangered: "ff4500", + orchid: "da70d6", + palegoldenrod: "eee8aa", + palegreen: "98fb98", + paleturquoise: "afeeee", + palevioletred: "d87093", + papayawhip: "ffefd5", + peachpuff: "ffdab9", + peru: "cd853f", + pink: "ffc0cb", + plum: "dda0dd", + powderblue: "b0e0e6", + purple: "800080", + red: "ff0000", + rosybrown: "bc8f8f", + royalblue: "4169e1", + saddlebrown: "8b4513", + salmon: "fa8072", + sandybrown: "f4a460", + seagreen: "2e8b57", + seashell: "fff5ee", + sienna: "a0522d", + silver: "c0c0c0", + skyblue: "87ceeb", + slateblue: "6a5acd", + slategray: "708090", + snow: "fffafa", + springgreen: "00ff7f", + steelblue: "4682b4", + tan: "d2b48c", + teal: "008080", + thistle: "d8bfd8", + tomato: "ff6347", + turquoise: "40e0d0", + violet: "ee82ee", + violetred: "d02090", + wheat: "f5deb3", + white: "ffffff", + whitesmoke: "f5f5f5", + yellow: "ffff00", + yellowgreen: "9acd32" + }; + for (var key in simple_colors) { + if (color_string == key) { + color_string = simple_colors[key]; + } + } + // emd of simple type-in colors + // array of color definition objects + var color_defs = [ { + re: /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/, + example: [ "rgb(123, 234, 45)", "rgb(255,234,245)" ], + process: function(bits) { + return [ parseInt(bits[1]), parseInt(bits[2]), parseInt(bits[3]) ]; + } + }, { + re: /^(\w{2})(\w{2})(\w{2})$/, + example: [ "#00ff00", "336699" ], + process: function(bits) { + return [ parseInt(bits[1], 16), parseInt(bits[2], 16), parseInt(bits[3], 16) ]; + } + }, { + re: /^(\w{1})(\w{1})(\w{1})$/, + example: [ "#fb0", "f0f" ], + process: function(bits) { + return [ parseInt(bits[1] + bits[1], 16), parseInt(bits[2] + bits[2], 16), parseInt(bits[3] + bits[3], 16) ]; + } + } ]; + // search through the definitions to find a match + for (var i = 0; i < color_defs.length; i++) { + var re = color_defs[i].re; + var processor = color_defs[i].process; + var bits = re.exec(color_string); + if (bits) { + channels = processor(bits); + this.r = channels[0]; + this.g = channels[1]; + this.b = channels[2]; + this.ok = true; + } + } + // validate/cleanup values + this.r = this.r < 0 || isNaN(this.r) ? 0 : this.r > 255 ? 255 : this.r; + this.g = this.g < 0 || isNaN(this.g) ? 0 : this.g > 255 ? 255 : this.g; + this.b = this.b < 0 || isNaN(this.b) ? 0 : this.b > 255 ? 255 : this.b; + // some getters + this.toRGB = function() { + return "rgb(" + this.r + ", " + this.g + ", " + this.b + ")"; + }; + this.toHex = function() { + var r = this.r.toString(16); + var g = this.g.toString(16); + var b = this.b.toString(16); + if (r.length == 1) r = "0" + r; + if (g.length == 1) g = "0" + g; + if (b.length == 1) b = "0" + b; + return "#" + r + g + b; + }; + // help + this.getHelpXML = function() { + var examples = new Array(); + // add regexps + for (var i = 0; i < color_defs.length; i++) { + var example = color_defs[i].example; + for (var j = 0; j < example.length; j++) { + examples[examples.length] = example[j]; + } + } + // add type-in colors + for (var sc in simple_colors) { + examples[examples.length] = sc; + } + var xml = document.createElement("ul"); + xml.setAttribute("id", "rgbcolor-examples"); + for (var i = 0; i < examples.length; i++) { + try { + var list_item = document.createElement("li"); + var list_color = new RGBColor(examples[i]); + var example_div = document.createElement("div"); + example_div.style.cssText = "margin: 3px; " + "border: 1px solid black; " + "background:" + list_color.toHex() + "; " + "color:" + list_color.toHex(); + example_div.appendChild(document.createTextNode("test")); + var list_item_value = document.createTextNode(" " + examples[i] + " -> " + list_color.toRGB() + " -> " + list_color.toHex()); + list_item.appendChild(example_div); + list_item.appendChild(list_item_value); + xml.appendChild(list_item); + } catch (e) {} + } + return xml; + }; + } + /* + + StackBlur - a fast almost Gaussian Blur For Canvas + + Version: 0.5 + Author: Mario Klingemann + Contact: mario@quasimondo.com + Website: http://www.quasimondo.com/StackBlurForCanvas + Twitter: @quasimondo + + In case you find this class useful - especially in commercial projects - + I am not totally unhappy for a small donation to my PayPal account + mario@quasimondo.de + + Or support me on flattr: + https://flattr.com/thing/72791/StackBlur-a-fast-almost-Gaussian-Blur-Effect-for-CanvasJavascript + + Copyright (c) 2010 Mario Klingemann + + 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. + */ + var mul_table = [ 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292, 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292, 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259, 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292, 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373, 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259, 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381, 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292, 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461, 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373, 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309, 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259, 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442, 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381, 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332, 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292, 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259 ]; + var shg_table = [ 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24 ]; + function stackBlurImage(imageID, canvasID, radius, blurAlphaChannel) { + var img = document.getElementById(imageID); + var w = img.naturalWidth; + var h = img.naturalHeight; + var canvas = document.getElementById(canvasID); + canvas.style.width = w + "px"; + canvas.style.height = h + "px"; + canvas.width = w; + canvas.height = h; + var context = canvas.getContext("2d"); + context.clearRect(0, 0, w, h); + context.drawImage(img, 0, 0); + if (isNaN(radius) || radius < 1) return; + if (blurAlphaChannel) stackBlurCanvasRGBA(canvasID, 0, 0, w, h, radius); else stackBlurCanvasRGB(canvasID, 0, 0, w, h, radius); + } + function stackBlurCanvasRGBA(id, top_x, top_y, width, height, radius) { + if (isNaN(radius) || radius < 1) return; + radius |= 0; + var canvas = document.getElementById(id); + var context = canvas.getContext("2d"); + var imageData; + try { + try { + imageData = context.getImageData(top_x, top_y, width, height); + } catch (e) { + // NOTE: this part is supposedly only needed if you want to work with local files + // so it might be okay to remove the whole try/catch block and just use + // imageData = context.getImageData( top_x, top_y, width, height ); + try { + netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); + imageData = context.getImageData(top_x, top_y, width, height); + } catch (e) { + alert("Cannot access local image"); + throw new Error("unable to access local image data: " + e); + return; + } + } + } catch (e) { + alert("Cannot access image"); + throw new Error("unable to access image data: " + e); + } + var pixels = imageData.data; + var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs; + var div = radius + radius + 1; + var w4 = width << 2; + var widthMinus1 = width - 1; + var heightMinus1 = height - 1; + var radiusPlus1 = radius + 1; + var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2; + var stackStart = new BlurStack(); + var stack = stackStart; + for (i = 1; i < div; i++) { + stack = stack.next = new BlurStack(); + if (i == radiusPlus1) var stackEnd = stack; + } + stack.next = stackStart; + var stackIn = null; + var stackOut = null; + yw = yi = 0; + var mul_sum = mul_table[radius]; + var shg_sum = shg_table[radius]; + for (y = 0; y < height; y++) { + r_in_sum = g_in_sum = b_in_sum = a_in_sum = r_sum = g_sum = b_sum = a_sum = 0; + r_out_sum = radiusPlus1 * (pr = pixels[yi]); + g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]); + b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]); + a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]); + r_sum += sumFactor * pr; + g_sum += sumFactor * pg; + b_sum += sumFactor * pb; + a_sum += sumFactor * pa; + stack = stackStart; + for (i = 0; i < radiusPlus1; i++) { + stack.r = pr; + stack.g = pg; + stack.b = pb; + stack.a = pa; + stack = stack.next; + } + for (i = 1; i < radiusPlus1; i++) { + p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2); + r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i); + g_sum += (stack.g = pg = pixels[p + 1]) * rbs; + b_sum += (stack.b = pb = pixels[p + 2]) * rbs; + a_sum += (stack.a = pa = pixels[p + 3]) * rbs; + r_in_sum += pr; + g_in_sum += pg; + b_in_sum += pb; + a_in_sum += pa; + stack = stack.next; + } + stackIn = stackStart; + stackOut = stackEnd; + for (x = 0; x < width; x++) { + pixels[yi + 3] = pa = a_sum * mul_sum >> shg_sum; + if (pa != 0) { + pa = 255 / pa; + pixels[yi] = (r_sum * mul_sum >> shg_sum) * pa; + pixels[yi + 1] = (g_sum * mul_sum >> shg_sum) * pa; + pixels[yi + 2] = (b_sum * mul_sum >> shg_sum) * pa; + } else { + pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0; + } + r_sum -= r_out_sum; + g_sum -= g_out_sum; + b_sum -= b_out_sum; + a_sum -= a_out_sum; + r_out_sum -= stackIn.r; + g_out_sum -= stackIn.g; + b_out_sum -= stackIn.b; + a_out_sum -= stackIn.a; + p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2; + r_in_sum += stackIn.r = pixels[p]; + g_in_sum += stackIn.g = pixels[p + 1]; + b_in_sum += stackIn.b = pixels[p + 2]; + a_in_sum += stackIn.a = pixels[p + 3]; + r_sum += r_in_sum; + g_sum += g_in_sum; + b_sum += b_in_sum; + a_sum += a_in_sum; + stackIn = stackIn.next; + r_out_sum += pr = stackOut.r; + g_out_sum += pg = stackOut.g; + b_out_sum += pb = stackOut.b; + a_out_sum += pa = stackOut.a; + r_in_sum -= pr; + g_in_sum -= pg; + b_in_sum -= pb; + a_in_sum -= pa; + stackOut = stackOut.next; + yi += 4; + } + yw += width; + } + for (x = 0; x < width; x++) { + g_in_sum = b_in_sum = a_in_sum = r_in_sum = g_sum = b_sum = a_sum = r_sum = 0; + yi = x << 2; + r_out_sum = radiusPlus1 * (pr = pixels[yi]); + g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]); + b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]); + a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]); + r_sum += sumFactor * pr; + g_sum += sumFactor * pg; + b_sum += sumFactor * pb; + a_sum += sumFactor * pa; + stack = stackStart; + for (i = 0; i < radiusPlus1; i++) { + stack.r = pr; + stack.g = pg; + stack.b = pb; + stack.a = pa; + stack = stack.next; + } + yp = width; + for (i = 1; i <= radius; i++) { + yi = yp + x << 2; + r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i); + g_sum += (stack.g = pg = pixels[yi + 1]) * rbs; + b_sum += (stack.b = pb = pixels[yi + 2]) * rbs; + a_sum += (stack.a = pa = pixels[yi + 3]) * rbs; + r_in_sum += pr; + g_in_sum += pg; + b_in_sum += pb; + a_in_sum += pa; + stack = stack.next; + if (i < heightMinus1) { + yp += width; + } + } + yi = x; + stackIn = stackStart; + stackOut = stackEnd; + for (y = 0; y < height; y++) { + p = yi << 2; + pixels[p + 3] = pa = a_sum * mul_sum >> shg_sum; + if (pa > 0) { + pa = 255 / pa; + pixels[p] = (r_sum * mul_sum >> shg_sum) * pa; + pixels[p + 1] = (g_sum * mul_sum >> shg_sum) * pa; + pixels[p + 2] = (b_sum * mul_sum >> shg_sum) * pa; + } else { + pixels[p] = pixels[p + 1] = pixels[p + 2] = 0; + } + r_sum -= r_out_sum; + g_sum -= g_out_sum; + b_sum -= b_out_sum; + a_sum -= a_out_sum; + r_out_sum -= stackIn.r; + g_out_sum -= stackIn.g; + b_out_sum -= stackIn.b; + a_out_sum -= stackIn.a; + p = x + ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2; + r_sum += r_in_sum += stackIn.r = pixels[p]; + g_sum += g_in_sum += stackIn.g = pixels[p + 1]; + b_sum += b_in_sum += stackIn.b = pixels[p + 2]; + a_sum += a_in_sum += stackIn.a = pixels[p + 3]; + stackIn = stackIn.next; + r_out_sum += pr = stackOut.r; + g_out_sum += pg = stackOut.g; + b_out_sum += pb = stackOut.b; + a_out_sum += pa = stackOut.a; + r_in_sum -= pr; + g_in_sum -= pg; + b_in_sum -= pb; + a_in_sum -= pa; + stackOut = stackOut.next; + yi += width; + } + } + context.putImageData(imageData, top_x, top_y); + } + function stackBlurCanvasRGB(id, top_x, top_y, width, height, radius) { + if (isNaN(radius) || radius < 1) return; + radius |= 0; + var canvas = document.getElementById(id); + var context = canvas.getContext("2d"); + var imageData; + try { + try { + imageData = context.getImageData(top_x, top_y, width, height); + } catch (e) { + // NOTE: this part is supposedly only needed if you want to work with local files + // so it might be okay to remove the whole try/catch block and just use + // imageData = context.getImageData( top_x, top_y, width, height ); + try { + netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); + imageData = context.getImageData(top_x, top_y, width, height); + } catch (e) { + alert("Cannot access local image"); + throw new Error("unable to access local image data: " + e); + return; + } + } + } catch (e) { + alert("Cannot access image"); + throw new Error("unable to access image data: " + e); + } + var pixels = imageData.data; + var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, r_out_sum, g_out_sum, b_out_sum, r_in_sum, g_in_sum, b_in_sum, pr, pg, pb, rbs; + var div = radius + radius + 1; + var w4 = width << 2; + var widthMinus1 = width - 1; + var heightMinus1 = height - 1; + var radiusPlus1 = radius + 1; + var sumFactor = radiusPlus1 * (radiusPlus1 + 1) / 2; + var stackStart = new BlurStack(); + var stack = stackStart; + for (i = 1; i < div; i++) { + stack = stack.next = new BlurStack(); + if (i == radiusPlus1) var stackEnd = stack; + } + stack.next = stackStart; + var stackIn = null; + var stackOut = null; + yw = yi = 0; + var mul_sum = mul_table[radius]; + var shg_sum = shg_table[radius]; + for (y = 0; y < height; y++) { + r_in_sum = g_in_sum = b_in_sum = r_sum = g_sum = b_sum = 0; + r_out_sum = radiusPlus1 * (pr = pixels[yi]); + g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]); + b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]); + r_sum += sumFactor * pr; + g_sum += sumFactor * pg; + b_sum += sumFactor * pb; + stack = stackStart; + for (i = 0; i < radiusPlus1; i++) { + stack.r = pr; + stack.g = pg; + stack.b = pb; + stack = stack.next; + } + for (i = 1; i < radiusPlus1; i++) { + p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2); + r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i); + g_sum += (stack.g = pg = pixels[p + 1]) * rbs; + b_sum += (stack.b = pb = pixels[p + 2]) * rbs; + r_in_sum += pr; + g_in_sum += pg; + b_in_sum += pb; + stack = stack.next; + } + stackIn = stackStart; + stackOut = stackEnd; + for (x = 0; x < width; x++) { + pixels[yi] = r_sum * mul_sum >> shg_sum; + pixels[yi + 1] = g_sum * mul_sum >> shg_sum; + pixels[yi + 2] = b_sum * mul_sum >> shg_sum; + r_sum -= r_out_sum; + g_sum -= g_out_sum; + b_sum -= b_out_sum; + r_out_sum -= stackIn.r; + g_out_sum -= stackIn.g; + b_out_sum -= stackIn.b; + p = yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1) << 2; + r_in_sum += stackIn.r = pixels[p]; + g_in_sum += stackIn.g = pixels[p + 1]; + b_in_sum += stackIn.b = pixels[p + 2]; + r_sum += r_in_sum; + g_sum += g_in_sum; + b_sum += b_in_sum; + stackIn = stackIn.next; + r_out_sum += pr = stackOut.r; + g_out_sum += pg = stackOut.g; + b_out_sum += pb = stackOut.b; + r_in_sum -= pr; + g_in_sum -= pg; + b_in_sum -= pb; + stackOut = stackOut.next; + yi += 4; + } + yw += width; + } + for (x = 0; x < width; x++) { + g_in_sum = b_in_sum = r_in_sum = g_sum = b_sum = r_sum = 0; + yi = x << 2; + r_out_sum = radiusPlus1 * (pr = pixels[yi]); + g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]); + b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]); + r_sum += sumFactor * pr; + g_sum += sumFactor * pg; + b_sum += sumFactor * pb; + stack = stackStart; + for (i = 0; i < radiusPlus1; i++) { + stack.r = pr; + stack.g = pg; + stack.b = pb; + stack = stack.next; + } + yp = width; + for (i = 1; i <= radius; i++) { + yi = yp + x << 2; + r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i); + g_sum += (stack.g = pg = pixels[yi + 1]) * rbs; + b_sum += (stack.b = pb = pixels[yi + 2]) * rbs; + r_in_sum += pr; + g_in_sum += pg; + b_in_sum += pb; + stack = stack.next; + if (i < heightMinus1) { + yp += width; + } + } + yi = x; + stackIn = stackStart; + stackOut = stackEnd; + for (y = 0; y < height; y++) { + p = yi << 2; + pixels[p] = r_sum * mul_sum >> shg_sum; + pixels[p + 1] = g_sum * mul_sum >> shg_sum; + pixels[p + 2] = b_sum * mul_sum >> shg_sum; + r_sum -= r_out_sum; + g_sum -= g_out_sum; + b_sum -= b_out_sum; + r_out_sum -= stackIn.r; + g_out_sum -= stackIn.g; + b_out_sum -= stackIn.b; + p = x + ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width << 2; + r_sum += r_in_sum += stackIn.r = pixels[p]; + g_sum += g_in_sum += stackIn.g = pixels[p + 1]; + b_sum += b_in_sum += stackIn.b = pixels[p + 2]; + stackIn = stackIn.next; + r_out_sum += pr = stackOut.r; + g_out_sum += pg = stackOut.g; + b_out_sum += pb = stackOut.b; + r_in_sum -= pr; + g_in_sum -= pg; + b_in_sum -= pb; + stackOut = stackOut.next; + yi += width; + } + } + context.putImageData(imageData, top_x, top_y); + } + function BlurStack() { + this.r = 0; + this.g = 0; + this.b = 0; + this.a = 0; + this.next = null; + } + /* + * canvg.js - Javascript SVG parser and renderer on Canvas + * MIT Licensed + * Gabe Lerner (gabelerner@gmail.com) + * http://code.google.com/p/canvg/ + * + * Requires: rgbcolor.js - http://www.phpied.com/rgb-color-parser-in-javascript/ + */ + (function() { + // canvg(target, s) + // empty parameters: replace all 'svg' elements on page with 'canvas' elements + // target: canvas element or the id of a canvas element + // s: svg string, url to svg file, or xml document + // opts: optional hash of options + // ignoreMouse: true => ignore mouse events + // ignoreAnimation: true => ignore animations + // ignoreDimensions: true => does not try to resize canvas + // ignoreClear: true => does not clear canvas + // offsetX: int => draws at a x offset + // offsetY: int => draws at a y offset + // scaleWidth: int => scales horizontally to width + // scaleHeight: int => scales vertically to height + // renderCallback: function => will call the function after the first render is completed + // forceRedraw: function => will call the function on every frame, if it returns true, will redraw + this.canvg = function(target, s, opts) { + // no parameters + if (target == null && s == null && opts == null) { + var svgTags = document.getElementsByTagName("svg"); + for (var i = 0; i < svgTags.length; i++) { + var svgTag = svgTags[i]; + var c = document.createElement("canvas"); + c.width = svgTag.clientWidth; + c.height = svgTag.clientHeight; + svgTag.parentNode.insertBefore(c, svgTag); + svgTag.parentNode.removeChild(svgTag); + var div = document.createElement("div"); + div.appendChild(svgTag); + canvg(c, div.innerHTML); + } + return; + } + opts = opts || {}; + if (typeof target == "string") { + target = document.getElementById(target); + } + // store class on canvas + if (target.svg != null) target.svg.stop(); + var svg = build(); + // on i.e. 8 for flash canvas, we can't assign the property so check for it + if (!(target.childNodes.length == 1 && target.childNodes[0].nodeName == "OBJECT")) target.svg = svg; + svg.opts = opts; + var ctx = target.getContext("2d"); + if (typeof s.documentElement != "undefined") { + // load from xml doc + svg.loadXmlDoc(ctx, s); + } else if (s.substr(0, 1) == "<") { + // load from xml string + svg.loadXml(ctx, s); + } else { + // load from url + svg.load(ctx, s); + } + }; + function build() { + var svg = {}; + svg.FRAMERATE = 30; + svg.MAX_VIRTUAL_PIXELS = 3e4; + // globals + svg.init = function(ctx) { + var uniqueId = 0; + svg.UniqueId = function() { + uniqueId++; + return "canvg" + uniqueId; + }; + svg.Definitions = {}; + svg.Styles = {}; + svg.Animations = []; + svg.Images = []; + svg.ctx = ctx; + svg.ViewPort = new function() { + this.viewPorts = []; + this.Clear = function() { + this.viewPorts = []; + }; + this.SetCurrent = function(width, height) { + this.viewPorts.push({ + width: width, + height: height + }); + }; + this.RemoveCurrent = function() { + this.viewPorts.pop(); + }; + this.Current = function() { + return this.viewPorts[this.viewPorts.length - 1]; + }; + this.width = function() { + return this.Current().width; + }; + this.height = function() { + return this.Current().height; + }; + this.ComputeSize = function(d) { + if (d != null && typeof d == "number") return d; + if (d == "x") return this.width(); + if (d == "y") return this.height(); + return Math.sqrt(Math.pow(this.width(), 2) + Math.pow(this.height(), 2)) / Math.sqrt(2); + }; + }(); + }; + svg.init(); + // images loaded + svg.ImagesLoaded = function() { + for (var i = 0; i < svg.Images.length; i++) { + if (!svg.Images[i].loaded) return false; + } + return true; + }; + // trim + svg.trim = function(s) { + return s.replace(/^\s+|\s+$/g, ""); + }; + // compress spaces + svg.compressSpaces = function(s) { + return s.replace(/[\s\r\t\n]+/gm, " "); + }; + // ajax + svg.ajax = function(url) { + var AJAX; + if (window.XMLHttpRequest) { + AJAX = new XMLHttpRequest(); + } else { + AJAX = new ActiveXObject("Microsoft.XMLHTTP"); + } + if (AJAX) { + AJAX.open("GET", url, false); + AJAX.send(null); + return AJAX.responseText; + } + return null; + }; + // parse xml + svg.parseXml = function(xml) { + if (window.DOMParser) { + var parser = new DOMParser(); + return parser.parseFromString(xml, "text/xml"); + } else { + xml = xml.replace(/]*>/, ""); + var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); + xmlDoc.async = "false"; + xmlDoc.loadXML(xml); + return xmlDoc; + } + }; + svg.Property = function(name, value) { + this.name = name; + this.value = value; + }; + svg.Property.prototype.getValue = function() { + return this.value; + }; + svg.Property.prototype.hasValue = function() { + return this.value != null && this.value !== ""; + }; + // return the numerical value of the property + svg.Property.prototype.numValue = function() { + if (!this.hasValue()) return 0; + var n = parseFloat(this.value); + if ((this.value + "").match(/%$/)) { + n = n / 100; + } + return n; + }; + svg.Property.prototype.valueOrDefault = function(def) { + if (this.hasValue()) return this.value; + return def; + }; + svg.Property.prototype.numValueOrDefault = function(def) { + if (this.hasValue()) return this.numValue(); + return def; + }; + // color extensions + // augment the current color value with the opacity + svg.Property.prototype.addOpacity = function(opacity) { + var newValue = this.value; + if (opacity != null && opacity != "" && typeof this.value == "string") { + // can only add opacity to colors, not patterns + var color = new RGBColor(this.value); + if (color.ok) { + newValue = "rgba(" + color.r + ", " + color.g + ", " + color.b + ", " + opacity + ")"; + } + } + return new svg.Property(this.name, newValue); + }; + // definition extensions + // get the definition from the definitions table + svg.Property.prototype.getDefinition = function() { + var name = this.value.match(/#([^\)'"]+)/); + if (name) { + name = name[1]; + } + if (!name) { + name = this.value; + } + return svg.Definitions[name]; + }; + svg.Property.prototype.isUrlDefinition = function() { + return this.value.indexOf("url(") == 0; + }; + svg.Property.prototype.getFillStyleDefinition = function(e, opacityProp) { + var def = this.getDefinition(); + // gradient + if (def != null && def.createGradient) { + return def.createGradient(svg.ctx, e, opacityProp); + } + // pattern + if (def != null && def.createPattern) { + if (def.getHrefAttribute().hasValue()) { + var pt = def.attribute("patternTransform"); + def = def.getHrefAttribute().getDefinition(); + if (pt.hasValue()) { + def.attribute("patternTransform", true).value = pt.value; + } + } + return def.createPattern(svg.ctx, e); + } + return null; + }; + // length extensions + svg.Property.prototype.getDPI = function(viewPort) { + return 96; + }; + svg.Property.prototype.getEM = function(viewPort) { + var em = 12; + var fontSize = new svg.Property("fontSize", svg.Font.Parse(svg.ctx.font).fontSize); + if (fontSize.hasValue()) em = fontSize.toPixels(viewPort); + return em; + }; + svg.Property.prototype.getUnits = function() { + var s = this.value + ""; + return s.replace(/[0-9\.\-]/g, ""); + }; + // get the length as pixels + svg.Property.prototype.toPixels = function(viewPort, processPercent) { + if (!this.hasValue()) return 0; + var s = this.value + ""; + if (s.match(/em$/)) return this.numValue() * this.getEM(viewPort); + if (s.match(/ex$/)) return this.numValue() * this.getEM(viewPort) / 2; + if (s.match(/px$/)) return this.numValue(); + if (s.match(/pt$/)) return this.numValue() * this.getDPI(viewPort) * (1 / 72); + if (s.match(/pc$/)) return this.numValue() * 15; + if (s.match(/cm$/)) return this.numValue() * this.getDPI(viewPort) / 2.54; + if (s.match(/mm$/)) return this.numValue() * this.getDPI(viewPort) / 25.4; + if (s.match(/in$/)) return this.numValue() * this.getDPI(viewPort); + if (s.match(/%$/)) return this.numValue() * svg.ViewPort.ComputeSize(viewPort); + var n = this.numValue(); + if (processPercent && n < 1) return n * svg.ViewPort.ComputeSize(viewPort); + return n; + }; + // time extensions + // get the time as milliseconds + svg.Property.prototype.toMilliseconds = function() { + if (!this.hasValue()) return 0; + var s = this.value + ""; + if (s.match(/s$/)) return this.numValue() * 1e3; + if (s.match(/ms$/)) return this.numValue(); + return this.numValue(); + }; + // angle extensions + // get the angle as radians + svg.Property.prototype.toRadians = function() { + if (!this.hasValue()) return 0; + var s = this.value + ""; + if (s.match(/deg$/)) return this.numValue() * (Math.PI / 180); + if (s.match(/grad$/)) return this.numValue() * (Math.PI / 200); + if (s.match(/rad$/)) return this.numValue(); + return this.numValue() * (Math.PI / 180); + }; + // fonts + svg.Font = new function() { + this.Styles = "normal|italic|oblique|inherit"; + this.Variants = "normal|small-caps|inherit"; + this.Weights = "normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit"; + this.CreateFont = function(fontStyle, fontVariant, fontWeight, fontSize, fontFamily, inherit) { + var f = inherit != null ? this.Parse(inherit) : this.CreateFont("", "", "", "", "", svg.ctx.font); + return { + fontFamily: fontFamily || f.fontFamily, + fontSize: fontSize || f.fontSize, + fontStyle: fontStyle || f.fontStyle, + fontWeight: fontWeight || f.fontWeight, + fontVariant: fontVariant || f.fontVariant, + toString: function() { + return [ this.fontStyle, this.fontVariant, this.fontWeight, this.fontSize, this.fontFamily ].join(" "); + } + }; + }; + var that = this; + this.Parse = function(s) { + var f = {}; + var d = svg.trim(svg.compressSpaces(s || "")).split(" "); + var set = { + fontSize: false, + fontStyle: false, + fontWeight: false, + fontVariant: false + }; + var ff = ""; + for (var i = 0; i < d.length; i++) { + if (!set.fontStyle && that.Styles.indexOf(d[i]) != -1) { + if (d[i] != "inherit") f.fontStyle = d[i]; + set.fontStyle = true; + } else if (!set.fontVariant && that.Variants.indexOf(d[i]) != -1) { + if (d[i] != "inherit") f.fontVariant = d[i]; + set.fontStyle = set.fontVariant = true; + } else if (!set.fontWeight && that.Weights.indexOf(d[i]) != -1) { + if (d[i] != "inherit") f.fontWeight = d[i]; + set.fontStyle = set.fontVariant = set.fontWeight = true; + } else if (!set.fontSize) { + if (d[i] != "inherit") f.fontSize = d[i].split("/")[0]; + set.fontStyle = set.fontVariant = set.fontWeight = set.fontSize = true; + } else { + if (d[i] != "inherit") ff += d[i]; + } + } + if (ff != "") f.fontFamily = ff; + return f; + }; + }(); + // points and paths + svg.ToNumberArray = function(s) { + var a = svg.trim(svg.compressSpaces((s || "").replace(/,/g, " "))).split(" "); + for (var i = 0; i < a.length; i++) { + a[i] = parseFloat(a[i]); + } + return a; + }; + svg.Point = function(x, y) { + this.x = x; + this.y = y; + }; + svg.Point.prototype.angleTo = function(p) { + return Math.atan2(p.y - this.y, p.x - this.x); + }; + svg.Point.prototype.applyTransform = function(v) { + var xp = this.x * v[0] + this.y * v[2] + v[4]; + var yp = this.x * v[1] + this.y * v[3] + v[5]; + this.x = xp; + this.y = yp; + }; + svg.CreatePoint = function(s) { + var a = svg.ToNumberArray(s); + return new svg.Point(a[0], a[1]); + }; + svg.CreatePath = function(s) { + var a = svg.ToNumberArray(s); + var path = []; + for (var i = 0; i < a.length; i += 2) { + path.push(new svg.Point(a[i], a[i + 1])); + } + return path; + }; + // bounding box + svg.BoundingBox = function(x1, y1, x2, y2) { + // pass in initial points if you want + this.x1 = Number.NaN; + this.y1 = Number.NaN; + this.x2 = Number.NaN; + this.y2 = Number.NaN; + this.x = function() { + return this.x1; + }; + this.y = function() { + return this.y1; + }; + this.width = function() { + return this.x2 - this.x1; + }; + this.height = function() { + return this.y2 - this.y1; + }; + this.addPoint = function(x, y) { + if (x != null) { + if (isNaN(this.x1) || isNaN(this.x2)) { + this.x1 = x; + this.x2 = x; + } + if (x < this.x1) this.x1 = x; + if (x > this.x2) this.x2 = x; + } + if (y != null) { + if (isNaN(this.y1) || isNaN(this.y2)) { + this.y1 = y; + this.y2 = y; + } + if (y < this.y1) this.y1 = y; + if (y > this.y2) this.y2 = y; + } + }; + this.addX = function(x) { + this.addPoint(x, null); + }; + this.addY = function(y) { + this.addPoint(null, y); + }; + this.addBoundingBox = function(bb) { + this.addPoint(bb.x1, bb.y1); + this.addPoint(bb.x2, bb.y2); + }; + this.addQuadraticCurve = function(p0x, p0y, p1x, p1y, p2x, p2y) { + var cp1x = p0x + 2 / 3 * (p1x - p0x); + // CP1 = QP0 + 2/3 *(QP1-QP0) + var cp1y = p0y + 2 / 3 * (p1y - p0y); + // CP1 = QP0 + 2/3 *(QP1-QP0) + var cp2x = cp1x + 1 / 3 * (p2x - p0x); + // CP2 = CP1 + 1/3 *(QP2-QP0) + var cp2y = cp1y + 1 / 3 * (p2y - p0y); + // CP2 = CP1 + 1/3 *(QP2-QP0) + this.addBezierCurve(p0x, p0y, cp1x, cp2x, cp1y, cp2y, p2x, p2y); + }; + this.addBezierCurve = function(p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y) { + // from http://blog.hackers-cafe.net/2009/06/how-to-calculate-bezier-curves-bounding.html + var p0 = [ p0x, p0y ], p1 = [ p1x, p1y ], p2 = [ p2x, p2y ], p3 = [ p3x, p3y ]; + this.addPoint(p0[0], p0[1]); + this.addPoint(p3[0], p3[1]); + for (i = 0; i <= 1; i++) { + var f = function(t) { + return Math.pow(1 - t, 3) * p0[i] + 3 * Math.pow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * Math.pow(t, 2) * p2[i] + Math.pow(t, 3) * p3[i]; + }; + var b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i]; + var a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i]; + var c = 3 * p1[i] - 3 * p0[i]; + if (a == 0) { + if (b == 0) continue; + var t = -c / b; + if (0 < t && t < 1) { + if (i == 0) this.addX(f(t)); + if (i == 1) this.addY(f(t)); + } + continue; + } + var b2ac = Math.pow(b, 2) - 4 * c * a; + if (b2ac < 0) continue; + var t1 = (-b + Math.sqrt(b2ac)) / (2 * a); + if (0 < t1 && t1 < 1) { + if (i == 0) this.addX(f(t1)); + if (i == 1) this.addY(f(t1)); + } + var t2 = (-b - Math.sqrt(b2ac)) / (2 * a); + if (0 < t2 && t2 < 1) { + if (i == 0) this.addX(f(t2)); + if (i == 1) this.addY(f(t2)); + } + } + }; + this.isPointInBox = function(x, y) { + return this.x1 <= x && x <= this.x2 && this.y1 <= y && y <= this.y2; + }; + this.addPoint(x1, y1); + this.addPoint(x2, y2); + }; + // transforms + svg.Transform = function(v) { + var that = this; + this.Type = {}; + // translate + this.Type.translate = function(s) { + this.p = svg.CreatePoint(s); + this.apply = function(ctx) { + ctx.translate(this.p.x || 0, this.p.y || 0); + }; + this.unapply = function(ctx) { + ctx.translate(-1 * this.p.x || 0, -1 * this.p.y || 0); + }; + this.applyToPoint = function(p) { + p.applyTransform([ 1, 0, 0, 1, this.p.x || 0, this.p.y || 0 ]); + }; + }; + // rotate + this.Type.rotate = function(s) { + var a = svg.ToNumberArray(s); + this.angle = new svg.Property("angle", a[0]); + this.cx = a[1] || 0; + this.cy = a[2] || 0; + this.apply = function(ctx) { + ctx.translate(this.cx, this.cy); + ctx.rotate(this.angle.toRadians()); + ctx.translate(-this.cx, -this.cy); + }; + this.unapply = function(ctx) { + ctx.translate(this.cx, this.cy); + ctx.rotate(-1 * this.angle.toRadians()); + ctx.translate(-this.cx, -this.cy); + }; + this.applyToPoint = function(p) { + var a = this.angle.toRadians(); + p.applyTransform([ 1, 0, 0, 1, this.p.x || 0, this.p.y || 0 ]); + p.applyTransform([ Math.cos(a), Math.sin(a), -Math.sin(a), Math.cos(a), 0, 0 ]); + p.applyTransform([ 1, 0, 0, 1, -this.p.x || 0, -this.p.y || 0 ]); + }; + }; + this.Type.scale = function(s) { + this.p = svg.CreatePoint(s); + this.apply = function(ctx) { + ctx.scale(this.p.x || 1, this.p.y || this.p.x || 1); + }; + this.unapply = function(ctx) { + ctx.scale(1 / this.p.x || 1, 1 / this.p.y || this.p.x || 1); + }; + this.applyToPoint = function(p) { + p.applyTransform([ this.p.x || 0, 0, 0, this.p.y || 0, 0, 0 ]); + }; + }; + this.Type.matrix = function(s) { + this.m = svg.ToNumberArray(s); + this.apply = function(ctx) { + ctx.transform(this.m[0], this.m[1], this.m[2], this.m[3], this.m[4], this.m[5]); + }; + this.applyToPoint = function(p) { + p.applyTransform(this.m); + }; + }; + this.Type.SkewBase = function(s) { + this.base = that.Type.matrix; + this.base(s); + this.angle = new svg.Property("angle", s); + }; + this.Type.SkewBase.prototype = new this.Type.matrix(); + this.Type.skewX = function(s) { + this.base = that.Type.SkewBase; + this.base(s); + this.m = [ 1, 0, Math.tan(this.angle.toRadians()), 1, 0, 0 ]; + }; + this.Type.skewX.prototype = new this.Type.SkewBase(); + this.Type.skewY = function(s) { + this.base = that.Type.SkewBase; + this.base(s); + this.m = [ 1, Math.tan(this.angle.toRadians()), 0, 1, 0, 0 ]; + }; + this.Type.skewY.prototype = new this.Type.SkewBase(); + this.transforms = []; + this.apply = function(ctx) { + for (var i = 0; i < this.transforms.length; i++) { + this.transforms[i].apply(ctx); + } + }; + this.unapply = function(ctx) { + for (var i = this.transforms.length - 1; i >= 0; i--) { + this.transforms[i].unapply(ctx); + } + }; + this.applyToPoint = function(p) { + for (var i = 0; i < this.transforms.length; i++) { + this.transforms[i].applyToPoint(p); + } + }; + var data = svg.trim(svg.compressSpaces(v)).replace(/\)(\s?,\s?)/g, ") ").split(/\s(?=[a-z])/); + for (var i = 0; i < data.length; i++) { + var type = svg.trim(data[i].split("(")[0]); + var s = data[i].split("(")[1].replace(")", ""); + var transform = new this.Type[type](s); + transform.type = type; + this.transforms.push(transform); + } + }; + // aspect ratio + svg.AspectRatio = function(ctx, aspectRatio, width, desiredWidth, height, desiredHeight, minX, minY, refX, refY) { + // aspect ratio - http://www.w3.org/TR/SVG/coords.html#PreserveAspectRatioAttribute + aspectRatio = svg.compressSpaces(aspectRatio); + aspectRatio = aspectRatio.replace(/^defer\s/, ""); + // ignore defer + var align = aspectRatio.split(" ")[0] || "xMidYMid"; + var meetOrSlice = aspectRatio.split(" ")[1] || "meet"; + // calculate scale + var scaleX = width / desiredWidth; + var scaleY = height / desiredHeight; + var scaleMin = Math.min(scaleX, scaleY); + var scaleMax = Math.max(scaleX, scaleY); + if (meetOrSlice == "meet") { + desiredWidth *= scaleMin; + desiredHeight *= scaleMin; + } + if (meetOrSlice == "slice") { + desiredWidth *= scaleMax; + desiredHeight *= scaleMax; + } + refX = new svg.Property("refX", refX); + refY = new svg.Property("refY", refY); + if (refX.hasValue() && refY.hasValue()) { + ctx.translate(-scaleMin * refX.toPixels("x"), -scaleMin * refY.toPixels("y")); + } else { + // align + if (align.match(/^xMid/) && (meetOrSlice == "meet" && scaleMin == scaleY || meetOrSlice == "slice" && scaleMax == scaleY)) ctx.translate(width / 2 - desiredWidth / 2, 0); + if (align.match(/YMid$/) && (meetOrSlice == "meet" && scaleMin == scaleX || meetOrSlice == "slice" && scaleMax == scaleX)) ctx.translate(0, height / 2 - desiredHeight / 2); + if (align.match(/^xMax/) && (meetOrSlice == "meet" && scaleMin == scaleY || meetOrSlice == "slice" && scaleMax == scaleY)) ctx.translate(width - desiredWidth, 0); + if (align.match(/YMax$/) && (meetOrSlice == "meet" && scaleMin == scaleX || meetOrSlice == "slice" && scaleMax == scaleX)) ctx.translate(0, height - desiredHeight); + } + // scale + if (align == "none") ctx.scale(scaleX, scaleY); else if (meetOrSlice == "meet") ctx.scale(scaleMin, scaleMin); else if (meetOrSlice == "slice") ctx.scale(scaleMax, scaleMax); + // translate + ctx.translate(minX == null ? 0 : -minX, minY == null ? 0 : -minY); + }; + // elements + svg.Element = {}; + svg.EmptyProperty = new svg.Property("EMPTY", ""); + svg.Element.ElementBase = function(node) { + this.attributes = {}; + this.styles = {}; + this.children = []; + // get or create attribute + this.attribute = function(name, createIfNotExists) { + var a = this.attributes[name]; + if (a != null) return a; + if (createIfNotExists == true) { + a = new svg.Property(name, ""); + this.attributes[name] = a; + } + return a || svg.EmptyProperty; + }; + this.getHrefAttribute = function() { + for (var a in this.attributes) { + if (a.match(/:href$/)) { + return this.attributes[a]; + } + } + return svg.EmptyProperty; + }; + // get or create style, crawls up node tree + this.style = function(name, createIfNotExists) { + var s = this.styles[name]; + if (s != null) return s; + var a = this.attribute(name); + if (a != null && a.hasValue()) { + this.styles[name] = a; + // move up to me to cache + return a; + } + var p = this.parent; + if (p != null) { + var ps = p.style(name); + if (ps != null && ps.hasValue()) { + return ps; + } + } + if (createIfNotExists == true) { + s = new svg.Property(name, ""); + this.styles[name] = s; + } + return s || svg.EmptyProperty; + }; + // base render + this.render = function(ctx) { + // don't render display=none + if (this.style("display").value == "none") return; + // don't render visibility=hidden + if (this.attribute("visibility").value == "hidden") return; + ctx.save(); + if (this.attribute("mask").hasValue()) { + // mask + var mask = this.attribute("mask").getDefinition(); + if (mask != null) mask.apply(ctx, this); + } else if (this.style("filter").hasValue()) { + // filter + var filter = this.style("filter").getDefinition(); + if (filter != null) filter.apply(ctx, this); + } else { + this.setContext(ctx); + this.renderChildren(ctx); + this.clearContext(ctx); + } + ctx.restore(); + }; + // base set context + this.setContext = function(ctx) {}; + // base clear context + this.clearContext = function(ctx) {}; + // base render children + this.renderChildren = function(ctx) { + for (var i = 0; i < this.children.length; i++) { + this.children[i].render(ctx); + } + }; + this.addChild = function(childNode, create) { + var child = childNode; + if (create) child = svg.CreateElement(childNode); + child.parent = this; + this.children.push(child); + }; + if (node != null && node.nodeType == 1) { + //ELEMENT_NODE + // add children + for (var i = 0; i < node.childNodes.length; i++) { + var childNode = node.childNodes[i]; + if (childNode.nodeType == 1) this.addChild(childNode, true); + //ELEMENT_NODE + if (this.captureTextNodes && childNode.nodeType == 3) { + var text = childNode.nodeValue || childNode.text || ""; + if (svg.trim(svg.compressSpaces(text)) != "") { + this.addChild(new svg.Element.tspan(childNode), false); + } + } + } + // add attributes + for (var i = 0; i < node.attributes.length; i++) { + var attribute = node.attributes[i]; + this.attributes[attribute.nodeName] = new svg.Property(attribute.nodeName, attribute.nodeValue); + } + // add tag styles + var styles = svg.Styles[node.nodeName]; + if (styles != null) { + for (var name in styles) { + this.styles[name] = styles[name]; + } + } + // add class styles + if (this.attribute("class").hasValue()) { + var classes = svg.compressSpaces(this.attribute("class").value).split(" "); + for (var j = 0; j < classes.length; j++) { + styles = svg.Styles["." + classes[j]]; + if (styles != null) { + for (var name in styles) { + this.styles[name] = styles[name]; + } + } + styles = svg.Styles[node.nodeName + "." + classes[j]]; + if (styles != null) { + for (var name in styles) { + this.styles[name] = styles[name]; + } + } + } + } + // add id styles + if (this.attribute("id").hasValue()) { + var styles = svg.Styles["#" + this.attribute("id").value]; + if (styles != null) { + for (var name in styles) { + this.styles[name] = styles[name]; + } + } + } + // add inline styles + if (this.attribute("style").hasValue()) { + var styles = this.attribute("style").value.split(";"); + for (var i = 0; i < styles.length; i++) { + if (svg.trim(styles[i]) != "") { + var style = styles[i].split(":"); + var name = svg.trim(style[0]); + var value = svg.trim(style[1]); + this.styles[name] = new svg.Property(name, value); + } + } + } + // add id + if (this.attribute("id").hasValue()) { + if (svg.Definitions[this.attribute("id").value] == null) { + svg.Definitions[this.attribute("id").value] = this; + } + } + } + }; + svg.Element.RenderedElementBase = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.setContext = function(ctx) { + // fill + if (this.style("fill").isUrlDefinition()) { + var fs = this.style("fill").getFillStyleDefinition(this, this.style("fill-opacity")); + if (fs != null) ctx.fillStyle = fs; + } else if (this.style("fill").hasValue()) { + var fillStyle = this.style("fill"); + if (fillStyle.value == "currentColor") fillStyle.value = this.style("color").value; + ctx.fillStyle = fillStyle.value == "none" ? "rgba(0,0,0,0)" : fillStyle.value; + } + if (this.style("fill-opacity").hasValue()) { + var fillStyle = new svg.Property("fill", ctx.fillStyle); + fillStyle = fillStyle.addOpacity(this.style("fill-opacity").value); + ctx.fillStyle = fillStyle.value; + } + // stroke + if (this.style("stroke").isUrlDefinition()) { + var fs = this.style("stroke").getFillStyleDefinition(this, this.style("stroke-opacity")); + if (fs != null) ctx.strokeStyle = fs; + } else if (this.style("stroke").hasValue()) { + var strokeStyle = this.style("stroke"); + if (strokeStyle.value == "currentColor") strokeStyle.value = this.style("color").value; + ctx.strokeStyle = strokeStyle.value == "none" ? "rgba(0,0,0,0)" : strokeStyle.value; + } + if (this.style("stroke-opacity").hasValue()) { + var strokeStyle = new svg.Property("stroke", ctx.strokeStyle); + strokeStyle = strokeStyle.addOpacity(this.style("stroke-opacity").value); + ctx.strokeStyle = strokeStyle.value; + } + if (this.style("stroke-width").hasValue()) { + var newLineWidth = this.style("stroke-width").toPixels(); + ctx.lineWidth = newLineWidth == 0 ? .001 : newLineWidth; + } + if (this.style("stroke-linecap").hasValue()) ctx.lineCap = this.style("stroke-linecap").value; + if (this.style("stroke-linejoin").hasValue()) ctx.lineJoin = this.style("stroke-linejoin").value; + if (this.style("stroke-miterlimit").hasValue()) ctx.miterLimit = this.style("stroke-miterlimit").value; + if (this.style("stroke-dasharray").hasValue()) { + var gaps = svg.ToNumberArray(this.style("stroke-dasharray").value); + if (typeof ctx.setLineDash != "undefined") { + ctx.setLineDash(gaps); + } else if (typeof ctx.webkitLineDash != "undefined") { + ctx.webkitLineDash = gaps; + } else if (typeof ctx.mozDash != "undefined") { + ctx.mozDash = gaps; + } + var offset = this.style("stroke-dashoffset").numValueOrDefault(1); + if (typeof ctx.lineDashOffset != "undefined") { + ctx.lineDashOffset = offset; + } else if (typeof ctx.webkitLineDashOffset != "undefined") { + ctx.webkitLineDashOffset = offset; + } else if (typeof ctx.mozDashOffset != "undefined") { + ctx.mozDashOffset = offset; + } + } + // font + if (typeof ctx.font != "undefined") { + ctx.font = svg.Font.CreateFont(this.style("font-style").value, this.style("font-variant").value, this.style("font-weight").value, this.style("font-size").hasValue() ? this.style("font-size").toPixels() + "px" : "", this.style("font-family").value).toString(); + } + // transform + if (this.attribute("transform").hasValue()) { + var transform = new svg.Transform(this.attribute("transform").value); + transform.apply(ctx); + } + // clip + if (this.style("clip-path").hasValue()) { + var clip = this.style("clip-path").getDefinition(); + if (clip != null) clip.apply(ctx); + } + // opacity + if (this.style("opacity").hasValue()) { + ctx.globalAlpha = this.style("opacity").numValue(); + } + }; + }; + svg.Element.RenderedElementBase.prototype = new svg.Element.ElementBase(); + svg.Element.PathElementBase = function(node) { + this.base = svg.Element.RenderedElementBase; + this.base(node); + this.path = function(ctx) { + if (ctx != null) ctx.beginPath(); + return new svg.BoundingBox(); + }; + this.renderChildren = function(ctx) { + this.path(ctx); + svg.Mouse.checkPath(this, ctx); + if (ctx.fillStyle != "") { + if (this.attribute("fill-rule").hasValue()) { + ctx.fill(this.attribute("fill-rule").value); + } else { + ctx.fill(); + } + } + if (ctx.strokeStyle != "") ctx.stroke(); + var markers = this.getMarkers(); + if (markers != null) { + if (this.style("marker-start").isUrlDefinition()) { + var marker = this.style("marker-start").getDefinition(); + marker.render(ctx, markers[0][0], markers[0][1]); + } + if (this.style("marker-mid").isUrlDefinition()) { + var marker = this.style("marker-mid").getDefinition(); + for (var i = 1; i < markers.length - 1; i++) { + marker.render(ctx, markers[i][0], markers[i][1]); + } + } + if (this.style("marker-end").isUrlDefinition()) { + var marker = this.style("marker-end").getDefinition(); + marker.render(ctx, markers[markers.length - 1][0], markers[markers.length - 1][1]); + } + } + }; + this.getBoundingBox = function() { + return this.path(); + }; + this.getMarkers = function() { + return null; + }; + }; + svg.Element.PathElementBase.prototype = new svg.Element.RenderedElementBase(); + // svg element + svg.Element.svg = function(node) { + this.base = svg.Element.RenderedElementBase; + this.base(node); + this.baseClearContext = this.clearContext; + this.clearContext = function(ctx) { + this.baseClearContext(ctx); + svg.ViewPort.RemoveCurrent(); + }; + this.baseSetContext = this.setContext; + this.setContext = function(ctx) { + // initial values + ctx.strokeStyle = "rgba(0,0,0,0)"; + ctx.lineCap = "butt"; + ctx.lineJoin = "miter"; + ctx.miterLimit = 4; + this.baseSetContext(ctx); + // create new view port + if (!this.attribute("x").hasValue()) this.attribute("x", true).value = 0; + if (!this.attribute("y").hasValue()) this.attribute("y", true).value = 0; + ctx.translate(this.attribute("x").toPixels("x"), this.attribute("y").toPixels("y")); + var width = svg.ViewPort.width(); + var height = svg.ViewPort.height(); + if (!this.attribute("width").hasValue()) this.attribute("width", true).value = "100%"; + if (!this.attribute("height").hasValue()) this.attribute("height", true).value = "100%"; + if (typeof this.root == "undefined") { + width = this.attribute("width").toPixels("x"); + height = this.attribute("height").toPixels("y"); + var x = 0; + var y = 0; + if (this.attribute("refX").hasValue() && this.attribute("refY").hasValue()) { + x = -this.attribute("refX").toPixels("x"); + y = -this.attribute("refY").toPixels("y"); + } + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.lineTo(width, y); + ctx.lineTo(width, height); + ctx.lineTo(x, height); + ctx.closePath(); + ctx.clip(); + } + svg.ViewPort.SetCurrent(width, height); + // viewbox + if (this.attribute("viewBox").hasValue()) { + var viewBox = svg.ToNumberArray(this.attribute("viewBox").value); + var minX = viewBox[0]; + var minY = viewBox[1]; + width = viewBox[2]; + height = viewBox[3]; + svg.AspectRatio(ctx, this.attribute("preserveAspectRatio").value, svg.ViewPort.width(), width, svg.ViewPort.height(), height, minX, minY, this.attribute("refX").value, this.attribute("refY").value); + svg.ViewPort.RemoveCurrent(); + svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]); + } + }; + }; + svg.Element.svg.prototype = new svg.Element.RenderedElementBase(); + // rect element + svg.Element.rect = function(node) { + this.base = svg.Element.PathElementBase; + this.base(node); + this.path = function(ctx) { + var x = this.attribute("x").toPixels("x"); + var y = this.attribute("y").toPixels("y"); + var width = this.attribute("width").toPixels("x"); + var height = this.attribute("height").toPixels("y"); + var rx = this.attribute("rx").toPixels("x"); + var ry = this.attribute("ry").toPixels("y"); + if (this.attribute("rx").hasValue() && !this.attribute("ry").hasValue()) ry = rx; + if (this.attribute("ry").hasValue() && !this.attribute("rx").hasValue()) rx = ry; + rx = Math.min(rx, width / 2); + ry = Math.min(ry, height / 2); + if (ctx != null) { + ctx.beginPath(); + ctx.moveTo(x + rx, y); + ctx.lineTo(x + width - rx, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + ry); + ctx.lineTo(x + width, y + height - ry); + ctx.quadraticCurveTo(x + width, y + height, x + width - rx, y + height); + ctx.lineTo(x + rx, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - ry); + ctx.lineTo(x, y + ry); + ctx.quadraticCurveTo(x, y, x + rx, y); + ctx.closePath(); + } + return new svg.BoundingBox(x, y, x + width, y + height); + }; + }; + svg.Element.rect.prototype = new svg.Element.PathElementBase(); + // circle element + svg.Element.circle = function(node) { + this.base = svg.Element.PathElementBase; + this.base(node); + this.path = function(ctx) { + var cx = this.attribute("cx").toPixels("x"); + var cy = this.attribute("cy").toPixels("y"); + var r = this.attribute("r").toPixels(); + if (ctx != null) { + ctx.beginPath(); + ctx.arc(cx, cy, r, 0, Math.PI * 2, true); + ctx.closePath(); + } + return new svg.BoundingBox(cx - r, cy - r, cx + r, cy + r); + }; + }; + svg.Element.circle.prototype = new svg.Element.PathElementBase(); + // ellipse element + svg.Element.ellipse = function(node) { + this.base = svg.Element.PathElementBase; + this.base(node); + this.path = function(ctx) { + var KAPPA = 4 * ((Math.sqrt(2) - 1) / 3); + var rx = this.attribute("rx").toPixels("x"); + var ry = this.attribute("ry").toPixels("y"); + var cx = this.attribute("cx").toPixels("x"); + var cy = this.attribute("cy").toPixels("y"); + if (ctx != null) { + ctx.beginPath(); + ctx.moveTo(cx, cy - ry); + ctx.bezierCurveTo(cx + KAPPA * rx, cy - ry, cx + rx, cy - KAPPA * ry, cx + rx, cy); + ctx.bezierCurveTo(cx + rx, cy + KAPPA * ry, cx + KAPPA * rx, cy + ry, cx, cy + ry); + ctx.bezierCurveTo(cx - KAPPA * rx, cy + ry, cx - rx, cy + KAPPA * ry, cx - rx, cy); + ctx.bezierCurveTo(cx - rx, cy - KAPPA * ry, cx - KAPPA * rx, cy - ry, cx, cy - ry); + ctx.closePath(); + } + return new svg.BoundingBox(cx - rx, cy - ry, cx + rx, cy + ry); + }; + }; + svg.Element.ellipse.prototype = new svg.Element.PathElementBase(); + // line element + svg.Element.line = function(node) { + this.base = svg.Element.PathElementBase; + this.base(node); + this.getPoints = function() { + return [ new svg.Point(this.attribute("x1").toPixels("x"), this.attribute("y1").toPixels("y")), new svg.Point(this.attribute("x2").toPixels("x"), this.attribute("y2").toPixels("y")) ]; + }; + this.path = function(ctx) { + var points = this.getPoints(); + if (ctx != null) { + ctx.beginPath(); + ctx.moveTo(points[0].x, points[0].y); + ctx.lineTo(points[1].x, points[1].y); + } + return new svg.BoundingBox(points[0].x, points[0].y, points[1].x, points[1].y); + }; + this.getMarkers = function() { + var points = this.getPoints(); + var a = points[0].angleTo(points[1]); + return [ [ points[0], a ], [ points[1], a ] ]; + }; + }; + svg.Element.line.prototype = new svg.Element.PathElementBase(); + // polyline element + svg.Element.polyline = function(node) { + this.base = svg.Element.PathElementBase; + this.base(node); + this.points = svg.CreatePath(this.attribute("points").value); + this.path = function(ctx) { + var bb = new svg.BoundingBox(this.points[0].x, this.points[0].y); + if (ctx != null) { + ctx.beginPath(); + ctx.moveTo(this.points[0].x, this.points[0].y); + } + for (var i = 1; i < this.points.length; i++) { + bb.addPoint(this.points[i].x, this.points[i].y); + if (ctx != null) ctx.lineTo(this.points[i].x, this.points[i].y); + } + return bb; + }; + this.getMarkers = function() { + var markers = []; + for (var i = 0; i < this.points.length - 1; i++) { + markers.push([ this.points[i], this.points[i].angleTo(this.points[i + 1]) ]); + } + markers.push([ this.points[this.points.length - 1], markers[markers.length - 1][1] ]); + return markers; + }; + }; + svg.Element.polyline.prototype = new svg.Element.PathElementBase(); + // polygon element + svg.Element.polygon = function(node) { + this.base = svg.Element.polyline; + this.base(node); + this.basePath = this.path; + this.path = function(ctx) { + var bb = this.basePath(ctx); + if (ctx != null) { + ctx.lineTo(this.points[0].x, this.points[0].y); + ctx.closePath(); + } + return bb; + }; + }; + svg.Element.polygon.prototype = new svg.Element.polyline(); + // path element + svg.Element.path = function(node) { + this.base = svg.Element.PathElementBase; + this.base(node); + var d = this.attribute("d").value; + // TODO: convert to real lexer based on http://www.w3.org/TR/SVG11/paths.html#PathDataBNF + d = d.replace(/,/gm, " "); + // get rid of all commas + d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, "$1 $2"); + // separate commands from commands + d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([MmZzLlHhVvCcSsQqTtAa])/gm, "$1 $2"); + // separate commands from commands + d = d.replace(/([MmZzLlHhVvCcSsQqTtAa])([^\s])/gm, "$1 $2"); + // separate commands from points + d = d.replace(/([^\s])([MmZzLlHhVvCcSsQqTtAa])/gm, "$1 $2"); + // separate commands from points + d = d.replace(/([0-9])([+\-])/gm, "$1 $2"); + // separate digits when no comma + d = d.replace(/(\.[0-9]*)(\.)/gm, "$1 $2"); + // separate digits when no comma + d = d.replace(/([Aa](\s+[0-9]+){3})\s+([01])\s*([01])/gm, "$1 $3 $4 "); + // shorthand elliptical arc path syntax + d = svg.compressSpaces(d); + // compress multiple spaces + d = svg.trim(d); + this.PathParser = new function(d) { + this.tokens = d.split(" "); + this.reset = function() { + this.i = -1; + this.command = ""; + this.previousCommand = ""; + this.start = new svg.Point(0, 0); + this.control = new svg.Point(0, 0); + this.current = new svg.Point(0, 0); + this.points = []; + this.angles = []; + }; + this.isEnd = function() { + return this.i >= this.tokens.length - 1; + }; + this.isCommandOrEnd = function() { + if (this.isEnd()) return true; + return this.tokens[this.i + 1].match(/^[A-Za-z]$/) != null; + }; + this.isRelativeCommand = function() { + switch (this.command) { + case "m": + case "l": + case "h": + case "v": + case "c": + case "s": + case "q": + case "t": + case "a": + case "z": + return true; + break; + } + return false; + }; + this.getToken = function() { + this.i++; + return this.tokens[this.i]; + }; + this.getScalar = function() { + return parseFloat(this.getToken()); + }; + this.nextCommand = function() { + this.previousCommand = this.command; + this.command = this.getToken(); + }; + this.getPoint = function() { + var p = new svg.Point(this.getScalar(), this.getScalar()); + return this.makeAbsolute(p); + }; + this.getAsControlPoint = function() { + var p = this.getPoint(); + this.control = p; + return p; + }; + this.getAsCurrentPoint = function() { + var p = this.getPoint(); + this.current = p; + return p; + }; + this.getReflectedControlPoint = function() { + if (this.previousCommand.toLowerCase() != "c" && this.previousCommand.toLowerCase() != "s" && this.previousCommand.toLowerCase() != "q" && this.previousCommand.toLowerCase() != "t") { + return this.current; + } + // reflect point + var p = new svg.Point(2 * this.current.x - this.control.x, 2 * this.current.y - this.control.y); + return p; + }; + this.makeAbsolute = function(p) { + if (this.isRelativeCommand()) { + p.x += this.current.x; + p.y += this.current.y; + } + return p; + }; + this.addMarker = function(p, from, priorTo) { + // if the last angle isn't filled in because we didn't have this point yet ... + if (priorTo != null && this.angles.length > 0 && this.angles[this.angles.length - 1] == null) { + this.angles[this.angles.length - 1] = this.points[this.points.length - 1].angleTo(priorTo); + } + this.addMarkerAngle(p, from == null ? null : from.angleTo(p)); + }; + this.addMarkerAngle = function(p, a) { + this.points.push(p); + this.angles.push(a); + }; + this.getMarkerPoints = function() { + return this.points; + }; + this.getMarkerAngles = function() { + for (var i = 0; i < this.angles.length; i++) { + if (this.angles[i] == null) { + for (var j = i + 1; j < this.angles.length; j++) { + if (this.angles[j] != null) { + this.angles[i] = this.angles[j]; + break; + } + } + } + } + return this.angles; + }; + }(d); + this.path = function(ctx) { + var pp = this.PathParser; + pp.reset(); + var bb = new svg.BoundingBox(); + if (ctx != null) ctx.beginPath(); + while (!pp.isEnd()) { + pp.nextCommand(); + switch (pp.command) { + case "M": + case "m": + var p = pp.getAsCurrentPoint(); + pp.addMarker(p); + bb.addPoint(p.x, p.y); + if (ctx != null) ctx.moveTo(p.x, p.y); + pp.start = pp.current; + while (!pp.isCommandOrEnd()) { + var p = pp.getAsCurrentPoint(); + pp.addMarker(p, pp.start); + bb.addPoint(p.x, p.y); + if (ctx != null) ctx.lineTo(p.x, p.y); + } + break; + + case "L": + case "l": + while (!pp.isCommandOrEnd()) { + var c = pp.current; + var p = pp.getAsCurrentPoint(); + pp.addMarker(p, c); + bb.addPoint(p.x, p.y); + if (ctx != null) ctx.lineTo(p.x, p.y); + } + break; + + case "H": + case "h": + while (!pp.isCommandOrEnd()) { + var newP = new svg.Point((pp.isRelativeCommand() ? pp.current.x : 0) + pp.getScalar(), pp.current.y); + pp.addMarker(newP, pp.current); + pp.current = newP; + bb.addPoint(pp.current.x, pp.current.y); + if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y); + } + break; + + case "V": + case "v": + while (!pp.isCommandOrEnd()) { + var newP = new svg.Point(pp.current.x, (pp.isRelativeCommand() ? pp.current.y : 0) + pp.getScalar()); + pp.addMarker(newP, pp.current); + pp.current = newP; + bb.addPoint(pp.current.x, pp.current.y); + if (ctx != null) ctx.lineTo(pp.current.x, pp.current.y); + } + break; + + case "C": + case "c": + while (!pp.isCommandOrEnd()) { + var curr = pp.current; + var p1 = pp.getPoint(); + var cntrl = pp.getAsControlPoint(); + var cp = pp.getAsCurrentPoint(); + pp.addMarker(cp, cntrl, p1); + bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y); + if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y); + } + break; + + case "S": + case "s": + while (!pp.isCommandOrEnd()) { + var curr = pp.current; + var p1 = pp.getReflectedControlPoint(); + var cntrl = pp.getAsControlPoint(); + var cp = pp.getAsCurrentPoint(); + pp.addMarker(cp, cntrl, p1); + bb.addBezierCurve(curr.x, curr.y, p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y); + if (ctx != null) ctx.bezierCurveTo(p1.x, p1.y, cntrl.x, cntrl.y, cp.x, cp.y); + } + break; + + case "Q": + case "q": + while (!pp.isCommandOrEnd()) { + var curr = pp.current; + var cntrl = pp.getAsControlPoint(); + var cp = pp.getAsCurrentPoint(); + pp.addMarker(cp, cntrl, cntrl); + bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y); + if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y); + } + break; + + case "T": + case "t": + while (!pp.isCommandOrEnd()) { + var curr = pp.current; + var cntrl = pp.getReflectedControlPoint(); + pp.control = cntrl; + var cp = pp.getAsCurrentPoint(); + pp.addMarker(cp, cntrl, cntrl); + bb.addQuadraticCurve(curr.x, curr.y, cntrl.x, cntrl.y, cp.x, cp.y); + if (ctx != null) ctx.quadraticCurveTo(cntrl.x, cntrl.y, cp.x, cp.y); + } + break; + + case "A": + case "a": + while (!pp.isCommandOrEnd()) { + var curr = pp.current; + var rx = pp.getScalar(); + var ry = pp.getScalar(); + var xAxisRotation = pp.getScalar() * (Math.PI / 180); + var largeArcFlag = pp.getScalar(); + var sweepFlag = pp.getScalar(); + var cp = pp.getAsCurrentPoint(); + // Conversion from endpoint to center parameterization + // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes + // x1', y1' + var currp = new svg.Point(Math.cos(xAxisRotation) * (curr.x - cp.x) / 2 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2, -Math.sin(xAxisRotation) * (curr.x - cp.x) / 2 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2); + // adjust radii + var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2); + if (l > 1) { + rx *= Math.sqrt(l); + ry *= Math.sqrt(l); + } + // cx', cy' + var s = (largeArcFlag == sweepFlag ? -1 : 1) * Math.sqrt((Math.pow(rx, 2) * Math.pow(ry, 2) - Math.pow(rx, 2) * Math.pow(currp.y, 2) - Math.pow(ry, 2) * Math.pow(currp.x, 2)) / (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2))); + if (isNaN(s)) s = 0; + var cpp = new svg.Point(s * rx * currp.y / ry, s * -ry * currp.x / rx); + // cx, cy + var centp = new svg.Point((curr.x + cp.x) / 2 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y, (curr.y + cp.y) / 2 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y); + // vector magnitude + var m = function(v) { + return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2)); + }; + // ratio between two vectors + var r = function(u, v) { + return (u[0] * v[0] + u[1] * v[1]) / (m(u) * m(v)); + }; + // angle between two vectors + var a = function(u, v) { + return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(r(u, v)); + }; + // initial angle + var a1 = a([ 1, 0 ], [ (currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry ]); + // angle delta + var u = [ (currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry ]; + var v = [ (-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry ]; + var ad = a(u, v); + if (r(u, v) <= -1) ad = Math.PI; + if (r(u, v) >= 1) ad = 0; + // for markers + var dir = 1 - sweepFlag ? 1 : -1; + var ah = a1 + dir * (ad / 2); + var halfWay = new svg.Point(centp.x + rx * Math.cos(ah), centp.y + ry * Math.sin(ah)); + pp.addMarkerAngle(halfWay, ah - dir * Math.PI / 2); + pp.addMarkerAngle(cp, ah - dir * Math.PI); + bb.addPoint(cp.x, cp.y); + // TODO: this is too naive, make it better + if (ctx != null) { + var r = rx > ry ? rx : ry; + var sx = rx > ry ? 1 : rx / ry; + var sy = rx > ry ? ry / rx : 1; + ctx.translate(centp.x, centp.y); + ctx.rotate(xAxisRotation); + ctx.scale(sx, sy); + ctx.arc(0, 0, r, a1, a1 + ad, 1 - sweepFlag); + ctx.scale(1 / sx, 1 / sy); + ctx.rotate(-xAxisRotation); + ctx.translate(-centp.x, -centp.y); + } + } + break; + + case "Z": + case "z": + if (ctx != null) ctx.closePath(); + pp.current = pp.start; + } + } + return bb; + }; + this.getMarkers = function() { + var points = this.PathParser.getMarkerPoints(); + var angles = this.PathParser.getMarkerAngles(); + var markers = []; + for (var i = 0; i < points.length; i++) { + markers.push([ points[i], angles[i] ]); + } + return markers; + }; + }; + svg.Element.path.prototype = new svg.Element.PathElementBase(); + // pattern element + svg.Element.pattern = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.createPattern = function(ctx, element) { + var width = this.attribute("width").toPixels("x", true); + var height = this.attribute("height").toPixels("y", true); + // render me using a temporary svg element + var tempSvg = new svg.Element.svg(); + tempSvg.attributes["viewBox"] = new svg.Property("viewBox", this.attribute("viewBox").value); + tempSvg.attributes["width"] = new svg.Property("width", width + "px"); + tempSvg.attributes["height"] = new svg.Property("height", height + "px"); + tempSvg.attributes["transform"] = new svg.Property("transform", this.attribute("patternTransform").value); + tempSvg.children = this.children; + var c = document.createElement("canvas"); + c.width = width; + c.height = height; + var cctx = c.getContext("2d"); + if (this.attribute("x").hasValue() && this.attribute("y").hasValue()) { + cctx.translate(this.attribute("x").toPixels("x", true), this.attribute("y").toPixels("y", true)); + } + // render 3x3 grid so when we transform there's no white space on edges + for (var x = -1; x <= 1; x++) { + for (var y = -1; y <= 1; y++) { + cctx.save(); + cctx.translate(x * c.width, y * c.height); + tempSvg.render(cctx); + cctx.restore(); + } + } + var pattern = ctx.createPattern(c, "repeat"); + return pattern; + }; + }; + svg.Element.pattern.prototype = new svg.Element.ElementBase(); + // marker element + svg.Element.marker = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.baseRender = this.render; + this.render = function(ctx, point, angle) { + ctx.translate(point.x, point.y); + if (this.attribute("orient").valueOrDefault("auto") == "auto") ctx.rotate(angle); + if (this.attribute("markerUnits").valueOrDefault("strokeWidth") == "strokeWidth") ctx.scale(ctx.lineWidth, ctx.lineWidth); + ctx.save(); + // render me using a temporary svg element + var tempSvg = new svg.Element.svg(); + tempSvg.attributes["viewBox"] = new svg.Property("viewBox", this.attribute("viewBox").value); + tempSvg.attributes["refX"] = new svg.Property("refX", this.attribute("refX").value); + tempSvg.attributes["refY"] = new svg.Property("refY", this.attribute("refY").value); + tempSvg.attributes["width"] = new svg.Property("width", this.attribute("markerWidth").value); + tempSvg.attributes["height"] = new svg.Property("height", this.attribute("markerHeight").value); + tempSvg.attributes["fill"] = new svg.Property("fill", this.attribute("fill").valueOrDefault("black")); + tempSvg.attributes["stroke"] = new svg.Property("stroke", this.attribute("stroke").valueOrDefault("none")); + tempSvg.children = this.children; + tempSvg.render(ctx); + ctx.restore(); + if (this.attribute("markerUnits").valueOrDefault("strokeWidth") == "strokeWidth") ctx.scale(1 / ctx.lineWidth, 1 / ctx.lineWidth); + if (this.attribute("orient").valueOrDefault("auto") == "auto") ctx.rotate(-angle); + ctx.translate(-point.x, -point.y); + }; + }; + svg.Element.marker.prototype = new svg.Element.ElementBase(); + // definitions element + svg.Element.defs = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.render = function(ctx) {}; + }; + svg.Element.defs.prototype = new svg.Element.ElementBase(); + // base for gradients + svg.Element.GradientBase = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.gradientUnits = this.attribute("gradientUnits").valueOrDefault("objectBoundingBox"); + this.stops = []; + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + if (child.type == "stop") this.stops.push(child); + } + this.getGradient = function() {}; + this.createGradient = function(ctx, element, parentOpacityProp) { + var stopsContainer = this; + if (this.getHrefAttribute().hasValue()) { + stopsContainer = this.getHrefAttribute().getDefinition(); + } + var addParentOpacity = function(color) { + if (parentOpacityProp.hasValue()) { + var p = new svg.Property("color", color); + return p.addOpacity(parentOpacityProp.value).value; + } + return color; + }; + var g = this.getGradient(ctx, element); + if (g == null) return addParentOpacity(stopsContainer.stops[stopsContainer.stops.length - 1].color); + for (var i = 0; i < stopsContainer.stops.length; i++) { + g.addColorStop(stopsContainer.stops[i].offset, addParentOpacity(stopsContainer.stops[i].color)); + } + if (this.attribute("gradientTransform").hasValue()) { + // render as transformed pattern on temporary canvas + var rootView = svg.ViewPort.viewPorts[0]; + var rect = new svg.Element.rect(); + rect.attributes["x"] = new svg.Property("x", -svg.MAX_VIRTUAL_PIXELS / 3); + rect.attributes["y"] = new svg.Property("y", -svg.MAX_VIRTUAL_PIXELS / 3); + rect.attributes["width"] = new svg.Property("width", svg.MAX_VIRTUAL_PIXELS); + rect.attributes["height"] = new svg.Property("height", svg.MAX_VIRTUAL_PIXELS); + var group = new svg.Element.g(); + group.attributes["transform"] = new svg.Property("transform", this.attribute("gradientTransform").value); + group.children = [ rect ]; + var tempSvg = new svg.Element.svg(); + tempSvg.attributes["x"] = new svg.Property("x", 0); + tempSvg.attributes["y"] = new svg.Property("y", 0); + tempSvg.attributes["width"] = new svg.Property("width", rootView.width); + tempSvg.attributes["height"] = new svg.Property("height", rootView.height); + tempSvg.children = [ group ]; + var c = document.createElement("canvas"); + c.width = rootView.width; + c.height = rootView.height; + var tempCtx = c.getContext("2d"); + tempCtx.fillStyle = g; + tempSvg.render(tempCtx); + return tempCtx.createPattern(c, "no-repeat"); + } + return g; + }; + }; + svg.Element.GradientBase.prototype = new svg.Element.ElementBase(); + // linear gradient element + svg.Element.linearGradient = function(node) { + this.base = svg.Element.GradientBase; + this.base(node); + this.getGradient = function(ctx, element) { + var bb = element.getBoundingBox(); + if (!this.attribute("x1").hasValue() && !this.attribute("y1").hasValue() && !this.attribute("x2").hasValue() && !this.attribute("y2").hasValue()) { + this.attribute("x1", true).value = 0; + this.attribute("y1", true).value = 0; + this.attribute("x2", true).value = 1; + this.attribute("y2", true).value = 0; + } + var x1 = this.gradientUnits == "objectBoundingBox" ? bb.x() + bb.width() * this.attribute("x1").numValue() : this.attribute("x1").toPixels("x"); + var y1 = this.gradientUnits == "objectBoundingBox" ? bb.y() + bb.height() * this.attribute("y1").numValue() : this.attribute("y1").toPixels("y"); + var x2 = this.gradientUnits == "objectBoundingBox" ? bb.x() + bb.width() * this.attribute("x2").numValue() : this.attribute("x2").toPixels("x"); + var y2 = this.gradientUnits == "objectBoundingBox" ? bb.y() + bb.height() * this.attribute("y2").numValue() : this.attribute("y2").toPixels("y"); + if (x1 == x2 && y1 == y2) return null; + return ctx.createLinearGradient(x1, y1, x2, y2); + }; + }; + svg.Element.linearGradient.prototype = new svg.Element.GradientBase(); + // radial gradient element + svg.Element.radialGradient = function(node) { + this.base = svg.Element.GradientBase; + this.base(node); + this.getGradient = function(ctx, element) { + var bb = element.getBoundingBox(); + if (!this.attribute("cx").hasValue()) this.attribute("cx", true).value = "50%"; + if (!this.attribute("cy").hasValue()) this.attribute("cy", true).value = "50%"; + if (!this.attribute("r").hasValue()) this.attribute("r", true).value = "50%"; + var cx = this.gradientUnits == "objectBoundingBox" ? bb.x() + bb.width() * this.attribute("cx").numValue() : this.attribute("cx").toPixels("x"); + var cy = this.gradientUnits == "objectBoundingBox" ? bb.y() + bb.height() * this.attribute("cy").numValue() : this.attribute("cy").toPixels("y"); + var fx = cx; + var fy = cy; + if (this.attribute("fx").hasValue()) { + fx = this.gradientUnits == "objectBoundingBox" ? bb.x() + bb.width() * this.attribute("fx").numValue() : this.attribute("fx").toPixels("x"); + } + if (this.attribute("fy").hasValue()) { + fy = this.gradientUnits == "objectBoundingBox" ? bb.y() + bb.height() * this.attribute("fy").numValue() : this.attribute("fy").toPixels("y"); + } + var r = this.gradientUnits == "objectBoundingBox" ? (bb.width() + bb.height()) / 2 * this.attribute("r").numValue() : this.attribute("r").toPixels(); + return ctx.createRadialGradient(fx, fy, 0, cx, cy, r); + }; + }; + svg.Element.radialGradient.prototype = new svg.Element.GradientBase(); + // gradient stop element + svg.Element.stop = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.offset = this.attribute("offset").numValue(); + if (this.offset < 0) this.offset = 0; + if (this.offset > 1) this.offset = 1; + var stopColor = this.style("stop-color"); + if (this.style("stop-opacity").hasValue()) stopColor = stopColor.addOpacity(this.style("stop-opacity").value); + this.color = stopColor.value; + }; + svg.Element.stop.prototype = new svg.Element.ElementBase(); + // animation base element + svg.Element.AnimateBase = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + svg.Animations.push(this); + this.duration = 0; + this.begin = this.attribute("begin").toMilliseconds(); + this.maxDuration = this.begin + this.attribute("dur").toMilliseconds(); + this.getProperty = function() { + var attributeType = this.attribute("attributeType").value; + var attributeName = this.attribute("attributeName").value; + if (attributeType == "CSS") { + return this.parent.style(attributeName, true); + } + return this.parent.attribute(attributeName, true); + }; + this.initialValue = null; + this.initialUnits = ""; + this.removed = false; + this.calcValue = function() { + // OVERRIDE ME! + return ""; + }; + this.update = function(delta) { + // set initial value + if (this.initialValue == null) { + this.initialValue = this.getProperty().value; + this.initialUnits = this.getProperty().getUnits(); + } + // if we're past the end time + if (this.duration > this.maxDuration) { + // loop for indefinitely repeating animations + if (this.attribute("repeatCount").value == "indefinite" || this.attribute("repeatDur").value == "indefinite") { + this.duration = 0; + } else if (this.attribute("fill").valueOrDefault("remove") == "remove" && !this.removed) { + this.removed = true; + this.getProperty().value = this.initialValue; + return true; + } else { + return false; + } + } + this.duration = this.duration + delta; + // if we're past the begin time + var updated = false; + if (this.begin < this.duration) { + var newValue = this.calcValue(); + // tween + if (this.attribute("type").hasValue()) { + // for transform, etc. + var type = this.attribute("type").value; + newValue = type + "(" + newValue + ")"; + } + this.getProperty().value = newValue; + updated = true; + } + return updated; + }; + this.from = this.attribute("from"); + this.to = this.attribute("to"); + this.values = this.attribute("values"); + if (this.values.hasValue()) this.values.value = this.values.value.split(";"); + // fraction of duration we've covered + this.progress = function() { + var ret = { + progress: (this.duration - this.begin) / (this.maxDuration - this.begin) + }; + if (this.values.hasValue()) { + var p = ret.progress * (this.values.value.length - 1); + var lb = Math.floor(p), ub = Math.ceil(p); + ret.from = new svg.Property("from", parseFloat(this.values.value[lb])); + ret.to = new svg.Property("to", parseFloat(this.values.value[ub])); + ret.progress = (p - lb) / (ub - lb); + } else { + ret.from = this.from; + ret.to = this.to; + } + return ret; + }; + }; + svg.Element.AnimateBase.prototype = new svg.Element.ElementBase(); + // animate element + svg.Element.animate = function(node) { + this.base = svg.Element.AnimateBase; + this.base(node); + this.calcValue = function() { + var p = this.progress(); + // tween value linearly + var newValue = p.from.numValue() + (p.to.numValue() - p.from.numValue()) * p.progress; + return newValue + this.initialUnits; + }; + }; + svg.Element.animate.prototype = new svg.Element.AnimateBase(); + // animate color element + svg.Element.animateColor = function(node) { + this.base = svg.Element.AnimateBase; + this.base(node); + this.calcValue = function() { + var p = this.progress(); + var from = new RGBColor(p.from.value); + var to = new RGBColor(p.to.value); + if (from.ok && to.ok) { + // tween color linearly + var r = from.r + (to.r - from.r) * p.progress; + var g = from.g + (to.g - from.g) * p.progress; + var b = from.b + (to.b - from.b) * p.progress; + return "rgb(" + parseInt(r, 10) + "," + parseInt(g, 10) + "," + parseInt(b, 10) + ")"; + } + return this.attribute("from").value; + }; + }; + svg.Element.animateColor.prototype = new svg.Element.AnimateBase(); + // animate transform element + svg.Element.animateTransform = function(node) { + this.base = svg.Element.AnimateBase; + this.base(node); + this.calcValue = function() { + var p = this.progress(); + // tween value linearly + var from = svg.ToNumberArray(p.from.value); + var to = svg.ToNumberArray(p.to.value); + var newValue = ""; + for (var i = 0; i < from.length; i++) { + newValue += from[i] + (to[i] - from[i]) * p.progress + " "; + } + return newValue; + }; + }; + svg.Element.animateTransform.prototype = new svg.Element.animate(); + // font element + svg.Element.font = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.horizAdvX = this.attribute("horiz-adv-x").numValue(); + this.isRTL = false; + this.isArabic = false; + this.fontFace = null; + this.missingGlyph = null; + this.glyphs = []; + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + if (child.type == "font-face") { + this.fontFace = child; + if (child.style("font-family").hasValue()) { + svg.Definitions[child.style("font-family").value] = this; + } + } else if (child.type == "missing-glyph") this.missingGlyph = child; else if (child.type == "glyph") { + if (child.arabicForm != "") { + this.isRTL = true; + this.isArabic = true; + if (typeof this.glyphs[child.unicode] == "undefined") this.glyphs[child.unicode] = []; + this.glyphs[child.unicode][child.arabicForm] = child; + } else { + this.glyphs[child.unicode] = child; + } + } + } + }; + svg.Element.font.prototype = new svg.Element.ElementBase(); + // font-face element + svg.Element.fontface = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.ascent = this.attribute("ascent").value; + this.descent = this.attribute("descent").value; + this.unitsPerEm = this.attribute("units-per-em").numValue(); + }; + svg.Element.fontface.prototype = new svg.Element.ElementBase(); + // missing-glyph element + svg.Element.missingglyph = function(node) { + this.base = svg.Element.path; + this.base(node); + this.horizAdvX = 0; + }; + svg.Element.missingglyph.prototype = new svg.Element.path(); + // glyph element + svg.Element.glyph = function(node) { + this.base = svg.Element.path; + this.base(node); + this.horizAdvX = this.attribute("horiz-adv-x").numValue(); + this.unicode = this.attribute("unicode").value; + this.arabicForm = this.attribute("arabic-form").value; + }; + svg.Element.glyph.prototype = new svg.Element.path(); + // text element + svg.Element.text = function(node) { + this.captureTextNodes = true; + this.base = svg.Element.RenderedElementBase; + this.base(node); + this.baseSetContext = this.setContext; + this.setContext = function(ctx) { + this.baseSetContext(ctx); + if (this.style("dominant-baseline").hasValue()) ctx.textBaseline = this.style("dominant-baseline").value; + if (this.style("alignment-baseline").hasValue()) ctx.textBaseline = this.style("alignment-baseline").value; + }; + this.getBoundingBox = function() { + // TODO: implement + return new svg.BoundingBox(this.attribute("x").toPixels("x"), this.attribute("y").toPixels("y"), 0, 0); + }; + this.renderChildren = function(ctx) { + this.x = this.attribute("x").toPixels("x"); + this.y = this.attribute("y").toPixels("y"); + this.x += this.getAnchorDelta(ctx, this, 0); + for (var i = 0; i < this.children.length; i++) { + this.renderChild(ctx, this, i); + } + }; + this.getAnchorDelta = function(ctx, parent, startI) { + var textAnchor = this.style("text-anchor").valueOrDefault("start"); + if (textAnchor != "start") { + var width = 0; + for (var i = startI; i < parent.children.length; i++) { + var child = parent.children[i]; + if (i > startI && child.attribute("x").hasValue()) break; + // new group + width += child.measureTextRecursive(ctx); + } + return -1 * (textAnchor == "end" ? width : width / 2); + } + return 0; + }; + this.renderChild = function(ctx, parent, i) { + var child = parent.children[i]; + if (child.attribute("x").hasValue()) { + child.x = child.attribute("x").toPixels("x") + this.getAnchorDelta(ctx, parent, i); + } else { + if (this.attribute("dx").hasValue()) this.x += this.attribute("dx").toPixels("x"); + if (child.attribute("dx").hasValue()) this.x += child.attribute("dx").toPixels("x"); + child.x = this.x; + } + this.x = child.x + child.measureText(ctx); + if (child.attribute("y").hasValue()) { + child.y = child.attribute("y").toPixels("y"); + } else { + if (this.attribute("dy").hasValue()) this.y += this.attribute("dy").toPixels("y"); + if (child.attribute("dy").hasValue()) this.y += child.attribute("dy").toPixels("y"); + child.y = this.y; + } + this.y = child.y; + child.render(ctx); + for (var i = 0; i < child.children.length; i++) { + this.renderChild(ctx, child, i); + } + }; + }; + svg.Element.text.prototype = new svg.Element.RenderedElementBase(); + // text base + svg.Element.TextElementBase = function(node) { + this.base = svg.Element.RenderedElementBase; + this.base(node); + this.getGlyph = function(font, text, i) { + var c = text[i]; + var glyph = null; + if (font.isArabic) { + var arabicForm = "isolated"; + if ((i == 0 || text[i - 1] == " ") && i < text.length - 2 && text[i + 1] != " ") arabicForm = "terminal"; + if (i > 0 && text[i - 1] != " " && i < text.length - 2 && text[i + 1] != " ") arabicForm = "medial"; + if (i > 0 && text[i - 1] != " " && (i == text.length - 1 || text[i + 1] == " ")) arabicForm = "initial"; + if (typeof font.glyphs[c] != "undefined") { + glyph = font.glyphs[c][arabicForm]; + if (glyph == null && font.glyphs[c].type == "glyph") glyph = font.glyphs[c]; + } + } else { + glyph = font.glyphs[c]; + } + if (glyph == null) glyph = font.missingGlyph; + return glyph; + }; + this.renderChildren = function(ctx) { + var customFont = this.parent.style("font-family").getDefinition(); + if (customFont != null) { + var fontSize = this.parent.style("font-size").numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize); + var fontStyle = this.parent.style("font-style").valueOrDefault(svg.Font.Parse(svg.ctx.font).fontStyle); + var text = this.getText(); + if (customFont.isRTL) text = text.split("").reverse().join(""); + var dx = svg.ToNumberArray(this.parent.attribute("dx").value); + for (var i = 0; i < text.length; i++) { + var glyph = this.getGlyph(customFont, text, i); + var scale = fontSize / customFont.fontFace.unitsPerEm; + ctx.translate(this.x, this.y); + ctx.scale(scale, -scale); + var lw = ctx.lineWidth; + ctx.lineWidth = ctx.lineWidth * customFont.fontFace.unitsPerEm / fontSize; + if (fontStyle == "italic") ctx.transform(1, 0, .4, 1, 0, 0); + glyph.render(ctx); + if (fontStyle == "italic") ctx.transform(1, 0, -.4, 1, 0, 0); + ctx.lineWidth = lw; + ctx.scale(1 / scale, -1 / scale); + ctx.translate(-this.x, -this.y); + this.x += fontSize * (glyph.horizAdvX || customFont.horizAdvX) / customFont.fontFace.unitsPerEm; + if (typeof dx[i] != "undefined" && !isNaN(dx[i])) { + this.x += dx[i]; + } + } + return; + } + if (ctx.fillStyle != "") ctx.fillText(svg.compressSpaces(this.getText()), this.x, this.y); + if (ctx.strokeStyle != "") ctx.strokeText(svg.compressSpaces(this.getText()), this.x, this.y); + }; + this.getText = function() {}; + this.measureTextRecursive = function(ctx) { + var width = this.measureText(ctx); + for (var i = 0; i < this.children.length; i++) { + width += this.children[i].measureTextRecursive(ctx); + } + return width; + }; + this.measureText = function(ctx) { + var customFont = this.parent.style("font-family").getDefinition(); + if (customFont != null) { + var fontSize = this.parent.style("font-size").numValueOrDefault(svg.Font.Parse(svg.ctx.font).fontSize); + var measure = 0; + var text = this.getText(); + if (customFont.isRTL) text = text.split("").reverse().join(""); + var dx = svg.ToNumberArray(this.parent.attribute("dx").value); + for (var i = 0; i < text.length; i++) { + var glyph = this.getGlyph(customFont, text, i); + measure += (glyph.horizAdvX || customFont.horizAdvX) * fontSize / customFont.fontFace.unitsPerEm; + if (typeof dx[i] != "undefined" && !isNaN(dx[i])) { + measure += dx[i]; + } + } + return measure; + } + var textToMeasure = svg.compressSpaces(this.getText()); + if (!ctx.measureText) return textToMeasure.length * 10; + ctx.save(); + this.setContext(ctx); + var width = ctx.measureText(textToMeasure).width; + ctx.restore(); + return width; + }; + }; + svg.Element.TextElementBase.prototype = new svg.Element.RenderedElementBase(); + // tspan + svg.Element.tspan = function(node) { + this.captureTextNodes = true; + this.base = svg.Element.TextElementBase; + this.base(node); + this.text = node.nodeValue || node.text || ""; + this.getText = function() { + return this.text; + }; + }; + svg.Element.tspan.prototype = new svg.Element.TextElementBase(); + // tref + svg.Element.tref = function(node) { + this.base = svg.Element.TextElementBase; + this.base(node); + this.getText = function() { + var element = this.getHrefAttribute().getDefinition(); + if (element != null) return element.children[0].getText(); + }; + }; + svg.Element.tref.prototype = new svg.Element.TextElementBase(); + // a element + svg.Element.a = function(node) { + this.base = svg.Element.TextElementBase; + this.base(node); + this.hasText = true; + for (var i = 0; i < node.childNodes.length; i++) { + if (node.childNodes[i].nodeType != 3) this.hasText = false; + } + // this might contain text + this.text = this.hasText ? node.childNodes[0].nodeValue : ""; + this.getText = function() { + return this.text; + }; + this.baseRenderChildren = this.renderChildren; + this.renderChildren = function(ctx) { + if (this.hasText) { + // render as text element + this.baseRenderChildren(ctx); + var fontSize = new svg.Property("fontSize", svg.Font.Parse(svg.ctx.font).fontSize); + svg.Mouse.checkBoundingBox(this, new svg.BoundingBox(this.x, this.y - fontSize.toPixels("y"), this.x + this.measureText(ctx), this.y)); + } else { + // render as temporary group + var g = new svg.Element.g(); + g.children = this.children; + g.parent = this; + g.render(ctx); + } + }; + this.onclick = function() { + window.open(this.getHrefAttribute().value); + }; + this.onmousemove = function() { + svg.ctx.canvas.style.cursor = "pointer"; + }; + }; + svg.Element.a.prototype = new svg.Element.TextElementBase(); + // image element + svg.Element.image = function(node) { + this.base = svg.Element.RenderedElementBase; + this.base(node); + var href = this.getHrefAttribute().value; + var isSvg = href.match(/\.svg$/); + svg.Images.push(this); + this.loaded = false; + if (!isSvg) { + this.img = document.createElement("img"); + var self = this; + this.img.onload = function() { + self.loaded = true; + }; + this.img.onerror = function() { + if (typeof console != "undefined") { + console.log('ERROR: image "' + href + '" not found'); + self.loaded = true; + } + }; + this.img.src = href; + } else { + this.img = svg.ajax(href); + this.loaded = true; + } + this.renderChildren = function(ctx) { + var x = this.attribute("x").toPixels("x"); + var y = this.attribute("y").toPixels("y"); + var width = this.attribute("width").toPixels("x"); + var height = this.attribute("height").toPixels("y"); + if (width == 0 || height == 0) return; + ctx.save(); + if (isSvg) { + ctx.drawSvg(this.img, x, y, width, height); + } else { + ctx.translate(x, y); + svg.AspectRatio(ctx, this.attribute("preserveAspectRatio").value, width, this.img.width, height, this.img.height, 0, 0); + ctx.drawImage(this.img, 0, 0); + } + ctx.restore(); + }; + this.getBoundingBox = function() { + var x = this.attribute("x").toPixels("x"); + var y = this.attribute("y").toPixels("y"); + var width = this.attribute("width").toPixels("x"); + var height = this.attribute("height").toPixels("y"); + return new svg.BoundingBox(x, y, x + width, y + height); + }; + }; + svg.Element.image.prototype = new svg.Element.RenderedElementBase(); + // group element + svg.Element.g = function(node) { + this.base = svg.Element.RenderedElementBase; + this.base(node); + this.getBoundingBox = function() { + var bb = new svg.BoundingBox(); + for (var i = 0; i < this.children.length; i++) { + bb.addBoundingBox(this.children[i].getBoundingBox()); + } + return bb; + }; + }; + svg.Element.g.prototype = new svg.Element.RenderedElementBase(); + // symbol element + svg.Element.symbol = function(node) { + this.base = svg.Element.RenderedElementBase; + this.base(node); + this.baseSetContext = this.setContext; + this.setContext = function(ctx) { + this.baseSetContext(ctx); + // viewbox + if (this.attribute("viewBox").hasValue()) { + var viewBox = svg.ToNumberArray(this.attribute("viewBox").value); + var minX = viewBox[0]; + var minY = viewBox[1]; + width = viewBox[2]; + height = viewBox[3]; + svg.AspectRatio(ctx, this.attribute("preserveAspectRatio").value, this.attribute("width").toPixels("x"), width, this.attribute("height").toPixels("y"), height, minX, minY); + svg.ViewPort.SetCurrent(viewBox[2], viewBox[3]); + } + }; + }; + svg.Element.symbol.prototype = new svg.Element.RenderedElementBase(); + // style element + svg.Element.style = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + // text, or spaces then CDATA + var css = ""; + for (var i = 0; i < node.childNodes.length; i++) { + css += node.childNodes[i].nodeValue; + } + css = css.replace(/(\/\*([^*]|[\r\n]|(\*+([^*\/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm, ""); + // remove comments + css = svg.compressSpaces(css); + // replace whitespace + var cssDefs = css.split("}"); + for (var i = 0; i < cssDefs.length; i++) { + if (svg.trim(cssDefs[i]) != "") { + var cssDef = cssDefs[i].split("{"); + var cssClasses = cssDef[0].split(","); + var cssProps = cssDef[1].split(";"); + for (var j = 0; j < cssClasses.length; j++) { + var cssClass = svg.trim(cssClasses[j]); + if (cssClass != "") { + var props = {}; + for (var k = 0; k < cssProps.length; k++) { + var prop = cssProps[k].indexOf(":"); + var name = cssProps[k].substr(0, prop); + var value = cssProps[k].substr(prop + 1, cssProps[k].length - prop); + if (name != null && value != null) { + props[svg.trim(name)] = new svg.Property(svg.trim(name), svg.trim(value)); + } + } + svg.Styles[cssClass] = props; + if (cssClass == "@font-face") { + var fontFamily = props["font-family"].value.replace(/"/g, ""); + var srcs = props["src"].value.split(","); + for (var s = 0; s < srcs.length; s++) { + if (srcs[s].indexOf('format("svg")') > 0) { + var urlStart = srcs[s].indexOf("url"); + var urlEnd = srcs[s].indexOf(")", urlStart); + var url = srcs[s].substr(urlStart + 5, urlEnd - urlStart - 6); + var doc = svg.parseXml(svg.ajax(url)); + var fonts = doc.getElementsByTagName("font"); + for (var f = 0; f < fonts.length; f++) { + var font = svg.CreateElement(fonts[f]); + svg.Definitions[fontFamily] = font; + } + } + } + } + } + } + } + } + }; + svg.Element.style.prototype = new svg.Element.ElementBase(); + // use element + svg.Element.use = function(node) { + this.base = svg.Element.RenderedElementBase; + this.base(node); + this.baseSetContext = this.setContext; + this.setContext = function(ctx) { + this.baseSetContext(ctx); + if (this.attribute("x").hasValue()) ctx.translate(this.attribute("x").toPixels("x"), 0); + if (this.attribute("y").hasValue()) ctx.translate(0, this.attribute("y").toPixels("y")); + }; + this.getDefinition = function() { + var element = this.getHrefAttribute().getDefinition(); + if (this.attribute("width").hasValue()) element.attribute("width", true).value = this.attribute("width").value; + if (this.attribute("height").hasValue()) element.attribute("height", true).value = this.attribute("height").value; + return element; + }; + this.path = function(ctx) { + var element = this.getDefinition(); + if (element != null) element.path(ctx); + }; + this.getBoundingBox = function() { + var element = this.getDefinition(); + if (element != null) return element.getBoundingBox(); + }; + this.renderChildren = function(ctx) { + var element = this.getDefinition(); + if (element != null) { + // temporarily detach from parent and render + var oldParent = element.parent; + element.parent = null; + element.render(ctx); + element.parent = oldParent; + } + }; + }; + svg.Element.use.prototype = new svg.Element.RenderedElementBase(); + // mask element + svg.Element.mask = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.apply = function(ctx, element) { + // render as temp svg + var x = this.attribute("x").toPixels("x"); + var y = this.attribute("y").toPixels("y"); + var width = this.attribute("width").toPixels("x"); + var height = this.attribute("height").toPixels("y"); + if (width == 0 && height == 0) { + var bb = new svg.BoundingBox(); + for (var i = 0; i < this.children.length; i++) { + bb.addBoundingBox(this.children[i].getBoundingBox()); + } + var x = Math.floor(bb.x1); + var y = Math.floor(bb.y1); + var width = Math.floor(bb.width()); + var height = Math.floor(bb.height()); + } + // temporarily remove mask to avoid recursion + var mask = element.attribute("mask").value; + element.attribute("mask").value = ""; + var cMask = document.createElement("canvas"); + cMask.width = x + width; + cMask.height = y + height; + var maskCtx = cMask.getContext("2d"); + this.renderChildren(maskCtx); + var c = document.createElement("canvas"); + c.width = x + width; + c.height = y + height; + var tempCtx = c.getContext("2d"); + element.render(tempCtx); + tempCtx.globalCompositeOperation = "destination-in"; + tempCtx.fillStyle = maskCtx.createPattern(cMask, "no-repeat"); + tempCtx.fillRect(0, 0, x + width, y + height); + ctx.fillStyle = tempCtx.createPattern(c, "no-repeat"); + ctx.fillRect(0, 0, x + width, y + height); + // reassign mask + element.attribute("mask").value = mask; + }; + this.render = function(ctx) {}; + }; + svg.Element.mask.prototype = new svg.Element.ElementBase(); + // clip element + svg.Element.clipPath = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.apply = function(ctx) { + for (var i = 0; i < this.children.length; i++) { + var child = this.children[i]; + if (typeof child.path != "undefined") { + var transform = null; + if (child.attribute("transform").hasValue()) { + transform = new svg.Transform(child.attribute("transform").value); + transform.apply(ctx); + } + child.path(ctx); + ctx.clip(); + if (transform) { + transform.unapply(ctx); + } + } + } + }; + this.render = function(ctx) {}; + }; + svg.Element.clipPath.prototype = new svg.Element.ElementBase(); + // filters + svg.Element.filter = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.apply = function(ctx, element) { + // render as temp svg + var bb = element.getBoundingBox(); + var x = Math.floor(bb.x1); + var y = Math.floor(bb.y1); + var width = Math.floor(bb.width()); + var height = Math.floor(bb.height()); + // temporarily remove filter to avoid recursion + var filter = element.style("filter").value; + element.style("filter").value = ""; + var px = 0, py = 0; + for (var i = 0; i < this.children.length; i++) { + var efd = this.children[i].extraFilterDistance || 0; + px = Math.max(px, efd); + py = Math.max(py, efd); + } + var c = document.createElement("canvas"); + c.width = width + 2 * px; + c.height = height + 2 * py; + var tempCtx = c.getContext("2d"); + tempCtx.translate(-x + px, -y + py); + element.render(tempCtx); + // apply filters + for (var i = 0; i < this.children.length; i++) { + this.children[i].apply(tempCtx, 0, 0, width + 2 * px, height + 2 * py); + } + // render on me + ctx.drawImage(c, 0, 0, width + 2 * px, height + 2 * py, x - px, y - py, width + 2 * px, height + 2 * py); + // reassign filter + element.style("filter", true).value = filter; + }; + this.render = function(ctx) {}; + }; + svg.Element.filter.prototype = new svg.Element.ElementBase(); + svg.Element.feMorphology = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.apply = function(ctx, x, y, width, height) {}; + }; + svg.Element.feMorphology.prototype = new svg.Element.ElementBase(); + svg.Element.feColorMatrix = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + function imGet(img, x, y, width, height, rgba) { + return img[y * width * 4 + x * 4 + rgba]; + } + function imSet(img, x, y, width, height, rgba, val) { + img[y * width * 4 + x * 4 + rgba] = val; + } + this.apply = function(ctx, x, y, width, height) { + // only supporting grayscale for now per Issue 195, need to extend to all matrix + // assuming x==0 && y==0 for now + var srcData = ctx.getImageData(0, 0, width, height); + for (var y = 0; y < height; y++) { + for (var x = 0; x < width; x++) { + var r = imGet(srcData.data, x, y, width, height, 0); + var g = imGet(srcData.data, x, y, width, height, 1); + var b = imGet(srcData.data, x, y, width, height, 2); + var gray = (r + g + b) / 3; + imSet(srcData.data, x, y, width, height, 0, gray); + imSet(srcData.data, x, y, width, height, 1, gray); + imSet(srcData.data, x, y, width, height, 2, gray); + } + } + ctx.clearRect(0, 0, width, height); + ctx.putImageData(srcData, 0, 0); + }; + }; + svg.Element.feColorMatrix.prototype = new svg.Element.ElementBase(); + svg.Element.feGaussianBlur = function(node) { + this.base = svg.Element.ElementBase; + this.base(node); + this.blurRadius = Math.floor(this.attribute("stdDeviation").numValue()); + this.extraFilterDistance = this.blurRadius; + this.apply = function(ctx, x, y, width, height) { + if (typeof stackBlurCanvasRGBA == "undefined") { + if (typeof console != "undefined") { + console.log("ERROR: StackBlur.js must be included for blur to work"); + } + return; + } + // StackBlur requires canvas be on document + ctx.canvas.id = svg.UniqueId(); + ctx.canvas.style.display = "none"; + document.body.appendChild(ctx.canvas); + stackBlurCanvasRGBA(ctx.canvas.id, x, y, width, height, this.blurRadius); + document.body.removeChild(ctx.canvas); + }; + }; + svg.Element.feGaussianBlur.prototype = new svg.Element.ElementBase(); + // title element, do nothing + svg.Element.title = function(node) {}; + svg.Element.title.prototype = new svg.Element.ElementBase(); + // desc element, do nothing + svg.Element.desc = function(node) {}; + svg.Element.desc.prototype = new svg.Element.ElementBase(); + svg.Element.MISSING = function(node) { + if (typeof console != "undefined") { + console.log("ERROR: Element '" + node.nodeName + "' not yet implemented."); + } + }; + svg.Element.MISSING.prototype = new svg.Element.ElementBase(); + // element factory + svg.CreateElement = function(node) { + var className = node.nodeName.replace(/^[^:]+:/, ""); + // remove namespace + className = className.replace(/\-/g, ""); + // remove dashes + var e = null; + if (typeof svg.Element[className] != "undefined") { + e = new svg.Element[className](node); + } else { + e = new svg.Element.MISSING(node); + } + e.type = node.nodeName; + return e; + }; + // load from url + svg.load = function(ctx, url) { + svg.loadXml(ctx, svg.ajax(url)); + }; + // load from xml + svg.loadXml = function(ctx, xml) { + svg.loadXmlDoc(ctx, svg.parseXml(xml)); + }; + svg.loadXmlDoc = function(ctx, dom) { + svg.init(ctx); + var mapXY = function(p) { + var e = ctx.canvas; + while (e) { + p.x -= e.offsetLeft; + p.y -= e.offsetTop; + e = e.offsetParent; + } + if (window.scrollX) p.x += window.scrollX; + if (window.scrollY) p.y += window.scrollY; + return p; + }; + // bind mouse + if (svg.opts["ignoreMouse"] != true) { + ctx.canvas.onclick = function(e) { + var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY)); + svg.Mouse.onclick(p.x, p.y); + }; + ctx.canvas.onmousemove = function(e) { + var p = mapXY(new svg.Point(e != null ? e.clientX : event.clientX, e != null ? e.clientY : event.clientY)); + svg.Mouse.onmousemove(p.x, p.y); + }; + } + var e = svg.CreateElement(dom.documentElement); + e.root = true; + // render loop + var isFirstRender = true; + var draw = function() { + svg.ViewPort.Clear(); + if (ctx.canvas.parentNode) svg.ViewPort.SetCurrent(ctx.canvas.parentNode.clientWidth, ctx.canvas.parentNode.clientHeight); + if (svg.opts["ignoreDimensions"] != true) { + // set canvas size + if (e.style("width").hasValue()) { + ctx.canvas.width = e.style("width").toPixels("x"); + ctx.canvas.style.width = ctx.canvas.width + "px"; + } + if (e.style("height").hasValue()) { + ctx.canvas.height = e.style("height").toPixels("y"); + ctx.canvas.style.height = ctx.canvas.height + "px"; + } + } + var cWidth = ctx.canvas.clientWidth || ctx.canvas.width; + var cHeight = ctx.canvas.clientHeight || ctx.canvas.height; + if (svg.opts["ignoreDimensions"] == true && e.style("width").hasValue() && e.style("height").hasValue()) { + cWidth = e.style("width").toPixels("x"); + cHeight = e.style("height").toPixels("y"); + } + svg.ViewPort.SetCurrent(cWidth, cHeight); + if (svg.opts["offsetX"] != null) e.attribute("x", true).value = svg.opts["offsetX"]; + if (svg.opts["offsetY"] != null) e.attribute("y", true).value = svg.opts["offsetY"]; + if (svg.opts["scaleWidth"] != null && svg.opts["scaleHeight"] != null) { + var xRatio = 1, yRatio = 1, viewBox = svg.ToNumberArray(e.attribute("viewBox").value); + if (e.attribute("width").hasValue()) xRatio = e.attribute("width").toPixels("x") / svg.opts["scaleWidth"]; else if (!isNaN(viewBox[2])) xRatio = viewBox[2] / svg.opts["scaleWidth"]; + if (e.attribute("height").hasValue()) yRatio = e.attribute("height").toPixels("y") / svg.opts["scaleHeight"]; else if (!isNaN(viewBox[3])) yRatio = viewBox[3] / svg.opts["scaleHeight"]; + e.attribute("width", true).value = svg.opts["scaleWidth"]; + e.attribute("height", true).value = svg.opts["scaleHeight"]; + e.attribute("viewBox", true).value = "0 0 " + cWidth * xRatio + " " + cHeight * yRatio; + e.attribute("preserveAspectRatio", true).value = "none"; + } + // clear and render + if (svg.opts["ignoreClear"] != true) { + ctx.clearRect(0, 0, cWidth, cHeight); + } + e.render(ctx); + if (isFirstRender) { + isFirstRender = false; + if (typeof svg.opts["renderCallback"] == "function") svg.opts["renderCallback"](dom); + } + }; + var waitingForImages = true; + if (svg.ImagesLoaded()) { + waitingForImages = false; + draw(); + } + svg.intervalID = setInterval(function() { + var needUpdate = false; + if (waitingForImages && svg.ImagesLoaded()) { + waitingForImages = false; + needUpdate = true; + } + // need update from mouse events? + if (svg.opts["ignoreMouse"] != true) { + needUpdate = needUpdate | svg.Mouse.hasEvents(); + } + // need update from animations? + if (svg.opts["ignoreAnimation"] != true) { + for (var i = 0; i < svg.Animations.length; i++) { + needUpdate = needUpdate | svg.Animations[i].update(1e3 / svg.FRAMERATE); + } + } + // need update from redraw? + if (typeof svg.opts["forceRedraw"] == "function") { + if (svg.opts["forceRedraw"]() == true) needUpdate = true; + } + // render if needed + if (needUpdate) { + draw(); + svg.Mouse.runEvents(); + } + }, 1e3 / svg.FRAMERATE); + }; + svg.stop = function() { + if (svg.intervalID) { + clearInterval(svg.intervalID); + } + }; + svg.Mouse = new function() { + this.events = []; + this.hasEvents = function() { + return this.events.length != 0; + }; + this.onclick = function(x, y) { + this.events.push({ + type: "onclick", + x: x, + y: y, + run: function(e) { + if (e.onclick) e.onclick(); + } + }); + }; + this.onmousemove = function(x, y) { + this.events.push({ + type: "onmousemove", + x: x, + y: y, + run: function(e) { + if (e.onmousemove) e.onmousemove(); + } + }); + }; + this.eventElements = []; + this.checkPath = function(element, ctx) { + for (var i = 0; i < this.events.length; i++) { + var e = this.events[i]; + if (ctx.isPointInPath && ctx.isPointInPath(e.x, e.y)) this.eventElements[i] = element; + } + }; + this.checkBoundingBox = function(element, bb) { + for (var i = 0; i < this.events.length; i++) { + var e = this.events[i]; + if (bb.isPointInBox(e.x, e.y)) this.eventElements[i] = element; + } + }; + this.runEvents = function() { + svg.ctx.canvas.style.cursor = ""; + for (var i = 0; i < this.events.length; i++) { + var e = this.events[i]; + var element = this.eventElements[i]; + while (element) { + e.run(element); + element = element.parent; + } + } + // done running, clear + this.events = []; + this.eventElements = []; + }; + }(); + return svg; + } + })(); + if (typeof CanvasRenderingContext2D != "undefined") { + CanvasRenderingContext2D.prototype.drawSvg = function(s, dx, dy, dw, dh) { + canvg(this.canvas, s, { + ignoreMouse: true, + ignoreAnimation: true, + ignoreDimensions: true, + ignoreClear: true, + offsetX: dx, + offsetY: dy, + scaleWidth: dw, + scaleHeight: dh + }); + }; + } + return canvg; + } +}; + +/*! + * 输出转换器,提供输出支持 + */ +_p[1] = { + value: function(require) { + var kity = _p.r(34), canvg = _p.r(0); + return kity.createClass("Output", { + constructor: function(formula) { + this.formula = formula; + }, + toJPG: function(cb) { + toImage(this.formula, "image/jpeg", cb); + }, + toPNG: function(cb) { + toImage(this.formula, "image/png", cb); + } + }); + function toImage(formula, type, cb) { + var rectSpace = formula.container.getRenderBox(); + return getBase64DataURL(formula.node.ownerDocument, { + width: rectSpace.width, + height: rectSpace.height, + content: getSVGContent(formula.node) + }, type, cb); + } + function getBase64DataURL(doc, data, type, cb) { + var canvas = null, args = arguments, ctx = null; + if (true) { + drawToCanvas.apply(null, args); + } else { + canvas = getImageCanvas(doc, data.width, data.height, type); + ctx = canvas.getContext("2d"); + var image = new Image(); + image.onload = function() { + try { + ctx.drawImage(image, 0, 0); + cb(canvas.toDataURL(type)); + } catch (e) { + drawToCanvas.apply(null, args); + } + }; + image.src = getSVGDataURL(data.content); + } + } + function getSVGContent(svgNode) { + var tmp = svgNode.ownerDocument.createElement("div"), start = [ '' ]; + tmp.appendChild(svgNode.cloneNode(true)); + return tmp.innerHTML.replace(/]+?>/i, start.join("")).replace(/ /g, ""); + } + function getSVGDataURL(data) { + return "data:image/svg+xml;base64," + window.btoa(unescape(encodeURIComponent(data))); + } + function getImageCanvas(doc, width, height, type) { + var canvas = doc.createElement("canvas"), ctx = canvas.getContext("2d"); + canvas.width = width; + canvas.height = height; + if (type !== "image/png") { + ctx.fillStyle = "white"; + ctx.fillRect(0, 0, canvas.width, canvas.height); + } + return canvas; + } + function drawToCanvas(doc, data, type, cb) { + var canvas = getImageCanvas(doc, data.width, data.height, type); + canvas.style.cssText = "position: absolute; top: 0; left: 100000px; z-index: -1;"; + window.setTimeout(function() { + doc.body.appendChild(canvas); + canvg(canvas, data.content); + doc.body.removeChild(canvas); + cb(canvas.toDataURL(type)); + }, 0); + } + } +}; + +/*! + * 所有字符的列表 + */ +_p[2] = { + value: function() { + return [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "ȷ", "ı", "α", "β", "γ", "δ", "ε", "ζ", "η", "θ", "ι", "κ", "λ", "μ", "ν", "ξ", "ο", "π", "ρ", "ς", "σ", "τ", "υ", "φ", "χ", "ψ", "ω", "ϑ", "ϕ", "ϖ", "Ϟ", "Ϝ", "ϵ", "ϱ", "Ϲ", "ℜ", "ℵ", "ℑ", "℧", "ℶ", "ℷ", "ℸ", "ð", "ℏ", "⅁", "ℎ", "∂", "℘", "⅌", "Ⅎ", "∁", "ℓ", "Ⓢ", "(", ")", "Γ", "Δ", "Ε", "Ζ", "Η", "Θ", "Ι", "Κ", "Λ", "Μ", "Ν", "Ξ", "Ο", "Π", "Ρ", "Σ", "Τ", "Υ", "Φ", "Χ", "Ψ", "Ω", "Α", "Β", "#", "!", "$", "%", "&", "∠", "′", "‵", "★", "◆", "■", "▲", "▼", "⊤", "⊥", "♣", "♠", "♢", "♡", "∃", "∄", "♭", "♮", "♯", "∀", "∞", "∡", "∇", "¬", "∢", "√", "△", "▽", "∅", "ø", "◇", "◀", "▸", "[", "]", "{", "}", "〈", "〉", "ϰ", ",", ".", "/", ":", ";", "?", "\\", "⋮", "⋯", "⋰", "…", "@", """, "'", "|", "^", "`", "“", "_", "*", "+", "-", "∐", "⊼", "⊻", "◯", "⊡", "⊟", "⊞", "⊠", "•", "∩", "∪", "⋒", "⋓", "⋐", "⋑", "·", "▪", "◦", "⊛", "⊚", "⊖", "⊙", "⊝", "⊕", "⊗", "⊘", "±", "∓", "⋏", "⋎", "†", "‡", "⋄", "÷", "⋇", "∔", "⌭", "⋗", "⋖", "⋉", "⋊", "⋋", "⋌", "⊓", "⊔", "⊑", "⊒", "⊏", "⊐", "⋆", "×", "⊳", "⊲", "⊵", "⊴", "⊎", "∨", "∧", "≀", "<", "=", ">", "≈", "≇", "≍", "≒", "≓", "≊", "∽", "≁", "≂", "≃", "⋍", "≏", "≎", "≗", "≅", "⋞", "⋟", "≐", "≑", "≖", "⪖", "⪕", "≡", "≥", "≤", "≦", "≧", "⩾", "⩽", "≫", "≪", "≨", "≩", "⋘", "⋙", "⪇", "⪈", "⪉", "⪊", "⋧", "⋦", "⪆", "⪅", "⋛", "⋚", "⪋", "⪌", "≷", "≶", "≳", "≲", "⌮", "⌯", "≯", "≱", "≰", "≮", "⌱", "⌰", "⌲", "⌳", "≬", "⊀", "⊁", "⋠", "⋡", "≺", "≻", "≼", "≽", "≾", "≿", "⊂", "⊃", "⊈", "⊉", "⊆", "⊇", "⊊", "⊋", "⪷", "⪸", "⪯", "⪰", "⪹", "⪺", "⪵", "⪶", "⋨", "⋩", "∼", "≜", "↶", "↷", "↺", "↻", "↾", "↿", "⇂", "⇃", "⇄", "⇆", "⇈", "⇊", "⇋", "⇌", "⇍", "⇎", "⇏", "⇐", "⇑", "⇒", "⇓", "⇔", "⇕", "⇚", "⇛", "⇝", "↫", "↬", "↭", "↮", "←", "↑", "→", "↓", "↔", "↕", "↖", "↗", "↘", "↙", "↞", "↠", "↢", "↣", "↰", "↱", "⊢", "⊣", "⊨", "⊩", "⊪", "⊭", "⊯", "⊸", "⊺", "⋔", "⋪", "⋫", "⋬", "⋭", "⌈", "⌉", "⌊", "⌋", "⫋", "⫌", "⫅", "⫆", "∈", "∋", "∝", "∤", "∦", "∴", "∵", "∍", "⋈", "⌢", "⌣", "∣", "∥", "⏐", "⏑", "⏒", "⏓", "⫇", "⫈", "⊮", "⊬", "⫉", "⏔", "⏕", "⏖", "⏗", "⇇", "⇉", "↼", "↽", "⇀", "⇁", "↚", "↛", "⟵", "⟶", "⟷", "⟹", "⟸", "⟺", "≢", "≠", "∉" ]; + } +}; + +/*! + * 字符配置 + */ +_p[3] = { + value: function() { + return { + // 默认字体 + defaultFont: "KF AMS MAIN" + }; + } +}; + +/*! + * 工厂方法,创建兼容各浏览器的text实现 + */ +_p[4] = { + value: function(require) { + var kity = _p.r(34), divNode = document.createElement("div"), NAMESPACE = "http://www.w3.org/XML/1998/namespace"; + function createText(content) { + var text = new kity.Text(); + // Non-IE + if ("innerHTML" in text.node) { + text.node.setAttributeNS(NAMESPACE, "xml:space", "preserve"); + } else { + if (content.indexOf(" ") != -1) { + content = convertContent(content); + } + } + text.setContent(content); + return text; + } + /** + * 构建节点来转换内容 + */ + function convertContent(content) { + divNode.innerHTML = '' + content.replace(/\s/gi, " ") + ""; + return divNode.firstChild.firstChild.textContent; + } + return { + create: function(content) { + return createText(content); + } + }; + } +}; + +/** + * 文本 + */ +_p[5] = { + value: function(require) { + var kity = _p.r(34), FONT_CONF = _p.r(47).font, FontManager = _p.r(25), TextFactory = _p.r(4); + return kity.createClass("Text", { + base: _p.r(46), + constructor: function(content, fontFamily) { + this.callBase(); + this.fontFamily = fontFamily; + this.fontSize = 50; + this.content = content || ""; + // 移除多余的节点 + this.box.remove(); + this.translationContent = this.translation(this.content); + this.contentShape = new kity.Group(); + this.contentNode = this.createContent(); + this.contentShape.addShape(this.contentNode); + this.addShape(this.contentShape); + }, + createContent: function() { + var contentNode = TextFactory.create(this.translationContent); + contentNode.setAttr({ + "font-family": this.fontFamily, + "font-size": 50, + x: 0, + y: FONT_CONF.offset + }); + return contentNode; + }, + setFamily: function(fontFamily) { + this.fontFamily = fontFamily; + this.contentNode.setAttr("font-family", fontFamily); + }, + setFontSize: function(fontSize) { + this.fontSize = fontSize; + this.contentNode.setAttr("font-size", fontSize + "px"); + this.contentNode.setAttr("y", fontSize / 50 * FONT_CONF.offset); + }, + getBaseHeight: function() { + var chars = this.contentShape.getItems(), currentChar = null, index = 0, height = 0; + while (currentChar = chars[index]) { + height = Math.max(height, currentChar.getHeight()); + index++; + } + return height; + }, + translation: function(content) { + var fontFamily = this.fontFamily; + // 首先特殊处理掉两个相连的"`"符号 + return content.replace(/``/g, "“").replace(/\\([a-zA-Z,]+)\\/g, function(match, input) { + if (input === ",") { + return " "; + } + var data = FontManager.getCharacterValue(input, fontFamily); + if (!data) { + return ""; + } + return data; + }); + } + }); + } +}; + +/** + * 定义公式中各种对象的类型 + */ +_p[6] = { + value: function() { + return { + UNKNOWN: -1, + EXP: 0, + COMPOUND_EXP: 1, + OP: 2 + }; + } +}; + +/** + * 定义公式中上下标的类型 + */ +_p[7] = { + value: function() { + return { + SIDE: "side", + FOLLOW: "follow" + }; + } +}; + +/** + * 下标表达式 + */ +_p[8] = { + value: function(require) { + var kity = _p.r(34); + return kity.createClass("SubscriptExpression", { + base: _p.r(17), + constructor: function(operand, subscript) { + this.callBase(operand, null, subscript); + this.setFlag("Subscript"); + } + }); + } +}; + +/** + * 上标表达式 + */ +_p[9] = { + value: function(require) { + var kity = _p.r(34); + return kity.createClass("SuperscriptExpression", { + base: _p.r(17), + constructor: function(operand, superscript) { + this.callBase(operand, superscript, null); + this.setFlag("Superscript"); + } + }); + } +}; + +/** + * 二元操作表达式 + */ +_p[10] = { + value: function(require) { + var kity = _p.r(34); + return kity.createClass("BinaryExpression", { + base: _p.r(19), + constructor: function(firstOperand, lastOperand) { + this.callBase(); + this.setFirstOperand(firstOperand); + this.setLastOperand(lastOperand); + }, + setFirstOperand: function(operand) { + return this.setOperand(operand, 0); + }, + getFirstOperand: function() { + return this.getOperand(0); + }, + setLastOperand: function(operand) { + return this.setOperand(operand, 1); + }, + getLastOperand: function() { + return this.getOperand(1); + } + }); + } +}; + +/** + * 自动增长括号表达式 + */ +_p[11] = { + value: function(require) { + var kity = _p.r(34), BracketsOperator = _p.r(35); + return kity.createClass("BracketsExpression", { + base: _p.r(19), + /** + * 构造函数调用方式: + * new Constructor( 左括号, 右括号, 表达式 ) + * 或者 + * new Constructor( 括号, 表达式 ), 该构造函数转换成上面的构造函数,是: new Constructor( 括号, 括号, 表达式 ) + * @param left 左括号 + * @param right 右括号 + * @param exp 表达式 + */ + constructor: function(left, right, exp) { + this.callBase(); + this.setFlag("Brackets"); + // 参数整理 + if (arguments.length === 2) { + exp = right; + right = left; + } + this.leftSymbol = left; + this.rightSymbol = right; + this.setOperator(new BracketsOperator()); + this.setOperand(exp, 0); + }, + getLeftSymbol: function() { + return this.leftSymbol; + }, + getRightSymbol: function() { + return this.rightSymbol; + } + }); + } +}; + +/** + * 组合表达式 + * 可以组合多个表达式 + */ +_p[12] = { + value: function(require) { + var kity = _p.r(34), FONT_CONF = _p.r(47).font, CombinationOperator = _p.r(36); + return kity.createClass("CombinationExpression", { + base: _p.r(19), + constructor: function() { + this.callBase(); + this.setFlag("Combination"); + this.setOperator(new CombinationOperator()); + kity.Utils.each(arguments, function(operand, index) { + this.setOperand(operand, index); + }, this); + }, + getRenderBox: function(refer) { + var rectBox = this.callBase(refer); + if (this.getOperands().length === 0) { + rectBox.height = FONT_CONF.spaceHeight; + } + return rectBox; + }, + getBaseline: function(refer) { + var maxBaseline = 0, operands = this.getOperands(); + if (operands.length === 0) { + return this.callBase(refer); + } + kity.Utils.each(operands, function(operand) { + maxBaseline = Math.max(operand.getBaseline(refer), maxBaseline); + }); + return maxBaseline; + }, + getMeanline: function(refer) { + var minMeanline = 1e7, operands = this.getOperands(); + if (operands.length === 0) { + return this.callBase(refer); + } + kity.Utils.each(operands, function(operand) { + minMeanline = Math.min(operand.getMeanline(refer), minMeanline); + }); + return minMeanline; + } + }); + } +}; + +/** + * 分数表达式 + */ +_p[13] = { + value: function(require) { + var kity = _p.r(34), FractionOperator = _p.r(38); + return kity.createClass("FractionExpression", { + base: _p.r(10), + constructor: function(upOperand, downOperand) { + this.callBase(upOperand, downOperand); + this.setFlag("Fraction"); + this.setOperator(new FractionOperator()); + }, + /*------- 重写分数结构的baseline和mealine计算方式 */ + getBaseline: function(refer) { + var downOperand = this.getOperand(1), rectBox = downOperand.getRenderBox(refer); + return rectBox.y + downOperand.getBaselineProportion() * rectBox.height; + }, + getMeanline: function(refer) { + var upOperand = this.getOperand(0), rectBox = upOperand.getRenderBox(refer); + return upOperand.getMeanlineProportion() * rectBox.height; + } + }); + } +}; + +/** + * 函数表达式 + */ +_p[14] = { + value: function(require) { + var kity = _p.r(34), FUNC_CONF = _p.r(47).func, FunctionOperator = _p.r(39); + return kity.createClass("FunctionExpression", { + base: _p.r(19), + /** + * function表达式构造函数 + * @param funcName function名称 + * @param expr 函数表达式 + * @param sup 上标 + * @param sub 下标 + */ + constructor: function(funcName, expr, sup, sub) { + this.callBase(); + this.setFlag("Func"); + this.funcName = funcName; + this.setOperator(new FunctionOperator(funcName)); + this.setExpr(expr); + this.setSuperscript(sup); + this.setSubscript(sub); + }, + // 当前函数应用的script位置是否是在侧面 + isSideScript: function() { + return !FUNC_CONF["ud-script"][this.funcName]; + }, + setExpr: function(expr) { + return this.setOperand(expr, 0); + }, + setSuperscript: function(sub) { + return this.setOperand(sub, 1); + }, + setSubscript: function(sub) { + return this.setOperand(sub, 2); + } + }); + } +}; + +/** + * 积分表达式 + */ +_p[15] = { + value: function(require) { + var kity = _p.r(34), IntegrationOperator = _p.r(40), IntegrationExpression = kity.createClass("IntegrationExpression", { + base: _p.r(19), + /** + * 构造积分表达式 + * @param integrand 被积函数 + * @param supOperand 上限 + * @param subOperand 下限 + */ + constructor: function(integrand, superscript, subscript) { + this.callBase(); + this.setFlag("Integration"); + this.setOperator(new IntegrationOperator()); + this.setIntegrand(integrand); + this.setSuperscript(superscript); + this.setSubscript(subscript); + }, + setType: function(type) { + this.getOperator().setType(type); + return this; + }, + resetType: function() { + this.getOperator().resetType(); + return this; + }, + setIntegrand: function(integrand) { + this.setOperand(integrand, 0); + }, + setSuperscript: function(sup) { + this.setOperand(sup, 1); + }, + setSubscript: function(sub) { + this.setOperand(sub, 2); + } + }); + return IntegrationExpression; + } +}; + +/** + * 方根表达式 + */ +_p[16] = { + value: function(require) { + var kity = _p.r(34), RadicalOperator = _p.r(42); + return kity.createClass("RadicalExpression", { + base: _p.r(10), + /** + * 构造开方表达式 + * @param radicand 被开方数 + * @param exponent 指数 + */ + constructor: function(radicand, exponent) { + this.callBase(radicand, exponent); + this.setFlag("Radicand"); + this.setOperator(new RadicalOperator()); + }, + setRadicand: function(operand) { + return this.setFirstOperand(operand); + }, + getRadicand: function() { + return this.getFirstOperand(); + }, + setExponent: function(operand) { + return this.setLastOperand(operand); + }, + getExponent: function() { + return this.getLastOperand(); + } + }); + } +}; + +/** + * 上标表达式 + */ +_p[17] = { + value: function(require) { + var kity = _p.r(34), ScriptOperator = _p.r(43); + return kity.createClass("ScriptExpression", { + base: _p.r(19), + constructor: function(operand, superscript, subscript) { + this.callBase(); + this.setFlag("Script"); + this.setOperator(new ScriptOperator()); + this.setOpd(operand); + this.setSuperscript(superscript); + this.setSubscript(subscript); + }, + setOpd: function(operand) { + this.setOperand(operand, 0); + }, + setSuperscript: function(sup) { + this.setOperand(sup, 1); + }, + setSubscript: function(sub) { + this.setOperand(sub, 2); + } + }); + } +}; + +/** + * 求和表达式 + */ +_p[18] = { + value: function(require) { + var kity = _p.r(34), SummationOperator = _p.r(44); + return kity.createClass("SummationExpression", { + base: _p.r(19), + /** + * 构造求和表达式 + * @param expr 求和表达式 + * @param upOperand 上标 + * @param downOperand 下标 + */ + constructor: function(expr, superscript, subscript) { + this.callBase(); + this.setFlag("Summation"); + this.setOperator(new SummationOperator()); + this.setExpr(expr); + this.setSuperscript(superscript); + this.setSubscript(subscript); + }, + setExpr: function(expr) { + this.setOperand(expr, 0); + }, + setSuperscript: function(sup) { + this.setOperand(sup, 1); + }, + setSubscript: function(sub) { + this.setOperand(sub, 2); + } + }); + } +}; + +/** + * 复合表达式 + * @abstract + */ +_p[19] = { + value: function(require) { + var kity = _p.r(34), GTYPE = _p.r(6), Expression = _p.r(21); + return kity.createClass("CompoundExpression", { + base: _p.r(21), + constructor: function() { + this.callBase(); + this.type = GTYPE.COMPOUND_EXP; + this.operands = []; + this.operator = null; + this.operatorBox = new kity.Group(); + this.operatorBox.setAttr("data-type", "kf-editor-exp-op-box"); + this.operandBox = new kity.Group(); + this.operandBox.setAttr("data-type", "kf-editor-exp-operand-box"); + this.setChildren(0, this.operatorBox); + this.setChildren(1, this.operandBox); + }, + // 操作符存储在第1位置 + setOperator: function(operator) { + if (operator === undefined) { + return this; + } + if (this.operator) { + this.operator.remove(); + } + this.operatorBox.addShape(operator); + this.operator = operator; + this.operator.setParentExpression(this); + // 表达式关联到操作符 + operator.expression = this; + return this; + }, + getOperator: function() { + return this.operator; + }, + // 操作数存储位置是从1开始 + setOperand: function(operand, index, isWrap) { + // 不包装操作数 + if (isWrap === false) { + this.operands[index] = operand; + return this; + } + operand = Expression.wrap(operand); + if (this.operands[index]) { + this.operands[index].remove(); + } + this.operands[index] = operand; + this.operandBox.addShape(operand); + return this; + }, + getOperand: function(index) { + return this.operands[index]; + }, + getOperands: function() { + return this.operands; + }, + addedCall: function() { + this.operator.applyOperand.apply(this.operator, this.operands); + return this; + } + }); + } +}; + +/** + * 空表达式 + * 该表达式主要用途是用于站位 + */ +_p[20] = { + value: function(require) { + var kity = _p.r(34), FONT_CONF = _p.r(47).font, Expression = _p.r(21), EmptyExpression = kity.createClass("EmptyExpression", { + base: Expression, + constructor: function() { + this.callBase(); + this.setFlag("Empty"); + }, + getRenderBox: function() { + return { + width: 0, + height: FONT_CONF.spaceHeight, + x: 0, + y: 0 + }; + } + }); + EmptyExpression.isEmpty = function(target) { + return target instanceof EmptyExpression; + }; + // 注册打包函数 + Expression.registerWrap("empty", function(operand) { + if (operand === null || operand === undefined) { + return new EmptyExpression(); + } + }); + return EmptyExpression; + } +}; + +/** + * 基础表达式, 该类是表达式和操作数的高层抽象 + * @abstract + */ +_p[21] = { + value: function(require) { + var kity = _p.r(34), GTYPE = _p.r(6), FONT_CONF = _p.r(47).font, // 打包函数列表 + WRAP_FN = [], // 注册的打包函数的名称与其在注册器列表中的索引之间的对应关系 + WRAP_FN_INDEX = {}, Expression = kity.createClass("Expression", { + base: _p.r(46), + constructor: function() { + this.callBase(); + this.type = GTYPE.EXP; + // 表达式的上下偏移 + this._offset = { + top: 0, + bottom: 0 + }; + this.children = []; + this.box.fill("transparent").setAttr("data-type", "kf-editor-exp-box"); + this.box.setAttr("data-type", "kf-editor-exp-bg-box"); + this.expContent = new kity.Group(); + this.expContent.setAttr("data-type", "kf-editor-exp-content-box"); + this.addShape(this.expContent); + }, + getChildren: function() { + return this.children; + }, + getChild: function(index) { + return this.children[index] || null; + }, + getTopOffset: function() { + return this._offset.top; + }, + getBottomOffset: function() { + return this._offset.bottom; + }, + getOffset: function() { + return this._offset; + }, + setTopOffset: function(val) { + this._offset.top = val; + }, + setBottomOffset: function(val) { + this._offset.bottom = val; + }, + setOffset: function(top, bottom) { + this._offset.top = top; + this._offset.bottom = bottom; + }, + setFlag: function(flag) { + this.setAttr("data-flag", flag || "Expression"); + }, + setChildren: function(index, exp) { + // 首先清理掉之前的表达式 + if (this.children[index]) { + this.children[index].remove(); + } + this.children[index] = exp; + this.expContent.addShape(exp); + }, + getBaselineProportion: function() { + return FONT_CONF.baselinePosition; + }, + getMeanlineProportion: function() { + return FONT_CONF.meanlinePosition; + }, + getBaseline: function(refer) { + // 上偏移3px + return this.getRenderBox(refer).height * FONT_CONF.baselinePosition - 3; + }, + getMeanline: function(refer) { + // 上偏移1px + return this.getRenderBox(refer).height * FONT_CONF.meanlinePosition - 1; + }, + getAscenderline: function() { + return this.getFixRenderBox().height * FONT_CONF.ascenderPosition; + }, + getDescenderline: function() { + return this.getFixRenderBox().height * FONT_CONF.descenderPosition; + }, + translateElement: function(x, y) { + this.expContent.translate(x, y); + }, + expand: function(width, height) { + var renderBox = this.getFixRenderBox(); + this.setBoxSize(renderBox.width + width, renderBox.height + height); + }, + getBaseWidth: function() { + return this.getWidth(); + }, + getBaseHeight: function() { + return this.getHeight(); + }, + updateBoxSize: function() { + var renderBox = this.expContent.getFixRenderBox(); + this.setBoxSize(renderBox.width, renderBox.height); + }, + getBox: function() { + return this.box; + } + }); + // 表达式自动打包 + kity.Utils.extend(Expression, { + registerWrap: function(name, fn) { + WRAP_FN_INDEX[name] = WRAP_FN.length; + WRAP_FN.push(fn); + }, + revokeWrap: function(name) { + var fn = null; + if (name in WRAP_FN_INDEX) { + fn = WRAP_FN[WRAP_FN_INDEX[name]]; + WRAP_FN[WRAP_FN_INDEX[name]] = null; + delete WRAP_FN_INDEX[name]; + } + return fn; + }, + // 打包函数 + wrap: function(operand) { + var result; + kity.Utils.each(WRAP_FN, function(fn) { + if (!fn) { + return; + } + result = fn(operand); + if (result) { + return false; + } + }); + return result; + } + }); + return Expression; + } +}; + +/** + * Text表达式 + */ +_p[22] = { + value: function(require) { + var Text = _p.r(5), kity = _p.r(34), FONT_CONF = _p.r(3), Expression = _p.r(21), TextExpression = kity.createClass("TextExpression", { + base: _p.r(21), + constructor: function(content, fontFamily) { + this.callBase(); + this.fontFamily = fontFamily || FONT_CONF.defaultFont; + this.setFlag("Text"); + this.content = content + ""; + this.textContent = new Text(this.content, this.fontFamily); + this.setChildren(0, this.textContent); + this.setChildren(1, new kity.Rect(0, 0, 0, 0).fill("transparent")); + }, + setFamily: function(fontFamily) { + this.textContent.setFamily(fontFamily); + }, + setFontSize: function(fontSize) { + this.textContent.setFontSize(fontSize); + }, + addedCall: function() { + var box = this.textContent.getFixRenderBox(); + this.getChild(1).setSize(box.width, box.height); + this.updateBoxSize(); + return this; + } + }); + // 注册文本表达式的打包函数 + Expression.registerWrap("text", function(operand) { + var operandType = typeof operand; + if (operandType === "number" || operandType === "string") { + operand = new TextExpression(operand); + } + return operand; + }); + return TextExpression; + } +}; + +/*! + * 字体信息检测模板,用于检测浏览器的字体信息 + */ +_p[23] = { + value: function() { + return [ '', 'x', "" ]; + } +}; + +/*! + * 字体安装器 + */ +_p[24] = { + value: function(require) { + var kity = _p.r(34), FontManager = _p.r(25), $ = _p.r(33), FONT_CONF = _p.r(47).font, CHAR_LIST = _p.r(2), NODE_LIST = []; + return kity.createClass("FontInstaller", { + constructor: function(doc, resource) { + this.callBase(); + this.resource = resource || "../src/resource/"; + this.doc = doc; + }, + // 挂载字体 + mount: function(callback) { + var fontList = FontManager.getFontList(), count = 0, _self = this; + kity.Utils.each(fontList, function(fontInfo) { + count++; + fontInfo.meta.src = _self.resource + fontInfo.meta.src; + _self.createFontStyle(fontInfo); + preload(_self.doc, fontInfo, function() { + count--; + if (count === 0) { + complete(_self.doc, callback); + } + }); + }); + }, + createFontStyle: function(fontInfo) { + var stylesheet = this.doc.createElement("style"), tpl = '@font-face{\nfont-family: "${fontFamily}";\nsrc: url("${src}");\n}'; + stylesheet.setAttribute("type", "text/css"); + stylesheet.innerHTML = tpl.replace("${fontFamily}", fontInfo.meta.fontFamily).replace("${src}", fontInfo.meta.src); + this.doc.head.appendChild(stylesheet); + } + }); + function preload(doc, fontInfo, callback) { + $.get(fontInfo.meta.src, function(data, state) { + if (state === "success") { + applyFonts(doc, fontInfo); + } + callback(); + }); + } + function complete(doc, callback) { + window.setTimeout(function() { + initFontSystemInfo(doc); + removeTmpNode(); + callback(); + }, 100); + } + function applyFonts(doc, fontInfo) { + var node = document.createElement("div"), fontFamily = fontInfo.meta.fontFamily; + node.style.cssText = "position: absolute; top: -10000px; left: -100000px;"; + node.style.fontFamily = fontFamily; + node.innerHTML = CHAR_LIST.join(""); + doc.body.appendChild(node); + NODE_LIST.push(node); + } + /** + * 计算字体系统信息 + */ + function initFontSystemInfo(doc) { + var tmpNode = doc.createElement("div"); + tmpNode.style.cssText = "position: absolute; top: 0; left: -100000px;"; + tmpNode.innerHTML = _p.r(23).join(""); + doc.body.appendChild(tmpNode); + var rectBox = tmpNode.getElementsByTagName("text")[0].getBBox(); + // text实际占用空间 + FONT_CONF.spaceHeight = rectBox.height; + // text顶部空间 + FONT_CONF.topSpace = -rectBox.y - FONT_CONF.baseline; + FONT_CONF.bottomSpace = FONT_CONF.spaceHeight - FONT_CONF.topSpace - FONT_CONF.baseHeight; + // text偏移值 + FONT_CONF.offset = FONT_CONF.baseline + FONT_CONF.topSpace; + // baseline比例 + FONT_CONF.baselinePosition = (FONT_CONF.topSpace + FONT_CONF.baseline) / FONT_CONF.spaceHeight; + // meanline比例 + FONT_CONF.meanlinePosition = (FONT_CONF.topSpace + FONT_CONF.meanline) / FONT_CONF.spaceHeight; + // 上下延伸性比例 + FONT_CONF.ascenderPosition = FONT_CONF.topSpace / FONT_CONF.spaceHeight; + FONT_CONF.descenderPosition = (FONT_CONF.topSpace + FONT_CONF.baseHeight) / FONT_CONF.spaceHeight; + doc.body.removeChild(tmpNode); + } + function removeTmpNode() { + kity.Utils.each(NODE_LIST, function(node) { + node.parentNode.removeChild(node); + }); + NODE_LIST = []; + } + } +}; + +/*! + * 字体管理器 + */ +_p[25] = { + value: function(require) { + var FONT_LIST = {}, kity = _p.r(34), CONF = _p.r(47).font.list; + // init + (function() { + kity.Utils.each(CONF, function(fontData) { + FONT_LIST[fontData.meta.fontFamily] = fontData; + }); + })(); + return { + getFontList: function() { + return FONT_LIST; + }, + getCharacterValue: function(key, fontFamily) { + if (!FONT_LIST[fontFamily]) { + return null; + } + return FONT_LIST[fontFamily].map[key] || null; + } + }; + } +}; + +/*! + * 双线字体 + */ +_p[26] = { + value: function() { + return { + meta: { + fontFamily: "KF AMS BB", + src: "KF_AMS_BB.woff" + } + }; + } +}; + +/*! + * 手写体 + */ +_p[27] = { + value: function() { + return { + meta: { + fontFamily: "KF AMS CAL", + src: "KF_AMS_CAL.woff" + } + }; + } +}; + +/*! + * 花体 + */ +_p[28] = { + value: function() { + return { + meta: { + fontFamily: "KF AMS FRAK", + src: "KF_AMS_FRAK.woff" + } + }; + } +}; + +/*! + * 字体主文件 + */ +_p[29] = { + value: function() { + return { + meta: { + fontFamily: "KF AMS MAIN", + src: "KF_AMS_MAIN.woff" + }, + map: { + // char + Alpha: "Α", + Beta: "Β", + Gamma: "Γ", + Delta: "Δ", + Epsilon: "Ε", + Zeta: "Ζ", + Eta: "Η", + Theta: "Θ", + Iota: "Ι", + Kappa: "Κ", + Lambda: "Λ", + Mu: "Μ", + Nu: "Ν", + Xi: "Ξ", + Omicron: "Ο", + Pi: "Π", + Rho: "Ρ", + Sigma: "Σ", + Tau: "Τ", + Upsilon: "Υ", + Phi: "Φ", + Chi: "Χ", + Psi: "Ψ", + Omega: "Ω", + alpha: "α", + beta: "β", + gamma: "γ", + delta: "δ", + epsilon: "ε", + zeta: "ζ", + eta: "η", + theta: "θ", + iota: "ι", + kappa: "κ", + lambda: "λ", + mu: "μ", + nu: "ν", + xi: "ξ", + omicron: "ο", + pi: "π", + rho: "ρ", + sigma: "σ", + tau: "τ", + upsilon: "υ", + phi: "φ", + varkappa: "ϰ", + chi: "χ", + psi: "ψ", + omega: "ω", + digamma: "Ϝ", + varepsilon: "ϵ", + varrho: "ϱ", + varphi: "ϕ", + vartheta: "ϑ", + varpi: "ϖ", + varsigma: "Ϲ", + aleph: "ℵ", + beth: "ℶ", + daleth: "ℸ", + gimel: "ℷ", + eth: "ð", + hbar: "ℎ", + hslash: "ℏ", + mho: "℧", + partial: "∂", + wp: "℘", + Game: "⅁", + Bbbk: "⅌", + Finv: "Ⅎ", + Im: "ℑ", + Re: "ℜ", + complement: "∁", + ell: "ℓ", + circledS: "Ⓢ", + imath: "ı", + jmath: "ȷ", + // symbol + doublecap: "⋒", + Cap: "⋒", + doublecup: "⋓", + Cup: "⋓", + ast: "*", + divideontimes: "⋇", + rightthreetimes: "⋌", + leftthreetimes: "⋋", + cdot: "·", + odot: "⊙", + dotplus: "∔", + rtimes: "⋊", + ltimes: "⋉", + centerdot: "▪", + doublebarwedge: "⌭", + setminus: "⒁", + amalg: "∐", + circ: "◦", + bigcirc: "◯", + gtrdot: "⋗", + lessdot: "⋖", + smallsetminus: "⒅", + circledast: "⊛", + circledcirc: "⊚", + sqcap: "⊓", + sqcup: "⊔", + barwedge: "⊼", + circleddash: "⊝", + star: "⋆", + bigtriangledown: "▽", + bigtriangleup: "△", + cup: "∪", + cap: "∩", + times: "×", + mp: "∓", + pm: "±", + triangleleft: "⊲", + triangleright: "⊳", + boxdot: "⊡", + curlyvee: "⋏", + curlywedge: "⋎", + boxminus: "⊟", + boxtimes: "⊠", + ominus: "⊖", + oplus: "⊕", + oslash: "⊘", + otimes: "⊗", + uplus: "⊎", + boxplus: "⊞", + dagger: "†", + ddagger: "‡", + vee: "∨", + lor: "∨", + veebar: "⊻", + bullet: "•", + diamond: "⋄", + wedge: "∧", + land: "∧", + div: "÷", + wr: "≀", + geqq: "≧", + lll: "⋘", + llless: "⋘", + ggg: "⋙", + gggtr: "⋙", + preccurlyeq: "≼", + geqslant: "⩾", + lnapprox: "⪉", + preceq: "⪯", + gg: "≫", + lneq: "⪇", + precnapprox: "⪹", + approx: "≈", + lneqq: "≨", + precneqq: "⪵", + approxeq: "≊", + gnapprox: "⪊", + lnsim: "⋦", + precnsim: "⋨", + asymp: "≍", + gneq: "⪈", + lvertneqq: "⌮", + precsim: "≾", + backsim: "∽", + gneqq: "≩", + ncong: "≇", + risingdotseq: "≓", + backsimeq: "⋍", + gnsim: "⋧", + sim: "∼", + simeq: "≃", + bumpeq: "≏", + gtrapprox: "⪆", + ngeq: "≱", + Bumpeq: "≎", + gtreqless: "⋛", + ngeqq: "⌱", + succ: "≻", + circeq: "≗", + gtreqqless: "⪌", + ngeqslant: "⌳", + succapprox: "⪸", + cong: "≅", + gtrless: "≷", + ngtr: "≯", + succcurlyeq: "≽", + curlyeqprec: "⋞", + gtrsim: "≳", + nleq: "≰", + succeq: "⪰", + curlyeqsucc: "⋟", + gvertneqq: "⌯", + neq: "≠", + ne: "≠", + nequiv: "≢", + nleqq: "⌰", + succnapprox: "⪺", + doteq: "≐", + leq: "≤", + le: "≤", + nleqslant: "⌲", + succneqq: "⪶", + doteqdot: "≑", + Doteq: "≑", + leqq: "≦", + nless: "≮", + succnsim: "⋩", + leqslant: "⩽", + nprec: "⊀", + succsim: "≿", + eqsim: "≂", + lessapprox: "⪅", + npreceq: "⋠", + eqslantgtr: "⪖", + lesseqgtr: "⋚", + nsim: "≁", + eqslantless: "⪕", + lesseqqgtr: "⪋", + nsucc: "⊁", + triangleq: "≜", + eqcirc: "≖", + equiv: "≡", + lessgtr: "≶", + nsucceq: "⋡", + fallingdotseq: "≒", + lesssim: "≲", + prec: "≺", + geq: "≥", + ge: "≥", + ll: "≪", + precapprox: "⪷", + // arrows + uparrow: "↑", + downarrow: "↓", + updownarrow: "↕", + Uparrow: "⇑", + Downarrow: "⇓", + Updownarrow: "⇕", + circlearrowleft: "↺", + circlearrowright: "↻", + curvearrowleft: "↶", + curvearrowright: "↷", + downdownarrows: "⇊", + downharpoonleft: "⇃", + downharpoonright: "⇂", + leftarrow: "←", + gets: "←", + Leftarrow: "⇐", + leftarrowtail: "↢", + leftharpoondown: "↽", + leftharpoonup: "↼", + leftleftarrows: "⇇", + leftrightarrow: "↔", + Leftrightarrow: "⇔", + leftrightarrows: "⇄", + leftrightharpoons: "⇋", + leftrightsquigarrow: "↭", + Lleftarrow: "⇚", + looparrowleft: "↫", + looparrowright: "↬", + multimap: "⊸", + nLeftarrow: "⇍", + nRightarrow: "⇏", + nLeftrightarrow: "⇎", + nearrow: "↗", + nleftarrow: "↚", + nleftrightarrow: "↮", + nrightarrow: "↛", + nwarrow: "↖", + rightarrow: "→", + to: "→", + Rightarrow: "⇒", + rightarrowtail: "↣", + rightharpoondown: "⇁", + rightharpoonup: "⇀", + rightleftarrows: "⇆", + rightleftharpoons: "⇌", + rightrightarrows: "⇉", + rightsquigarrow: "⇝", + Rrightarrow: "⇛", + searrow: "↘", + swarrow: "↙", + twoheadleftarrow: "↞", + twoheadrightarrow: "↠", + upharpoonleft: "↿", + upharpoonright: "↾", + restriction: "↾", + upuparrows: "⇈", + Lsh: "↰", + Rsh: "↱", + longleftarrow: "⟵", + longrightarrow: "⟶", + Longleftarrow: "⟸", + Longrightarrow: "⟹", + implies: "⟹", + longleftrightarrow: "⟷", + Longleftrightarrow: "⟺", + // relation + backepsilon: "∍", + because: "∵", + therefore: "∴", + between: "≬", + blacktriangleleft: "◀", + blacktriangleright: "▸", + dashv: "⊣", + bowtie: "⋈", + frown: "⌢", + "in": "∈", + notin: "∉", + mid: "∣", + parallel: "∥", + models: "⊨", + ni: "∋", + owns: "∋", + nmid: "∤", + nparallel: "∦", + nshortmid: "⏒", + nshortparallel: "⏓", + nsubseteq: "⊈", + nsubseteqq: "⫇", + nsupseteq: "⊉", + nsupseteqq: "⫈", + ntriangleleft: "⋪", + ntrianglelefteq: "⋬", + ntriangleright: "⋫", + ntrianglerighteq: "⋭", + nvdash: "⊬", + nVdash: "⊮", + nvDash: "⊭", + nVDash: "⊯", + perp: "⊥", + pitchfork: "⋔", + propto: "∝", + shortmid: "⏐", + shortparallel: "⏑", + smile: "⌣", + sqsubset: "⊏", + sqsubseteq: "⊑", + sqsupset: "⊐", + sqsupseteq: "⊒", + subset: "⊂", + Subset: "⋐", + subseteq: "⊆", + subseteqq: "⫅", + subsetneq: "⊊", + subsetneqq: "⫋", + supset: "⊃", + Supset: "⋑", + supseteq: "⊇", + supseteqq: "⫆", + supsetneq: "⊋", + supsetneqq: "⫌", + trianglelefteq: "⊴", + trianglerighteq: "⊵", + varpropto: "⫉", + varsubsetneq: "⏔", + varsubsetneqq: "⏖", + varsupsetneq: "⏕", + varsupsetneqq: "⏗", + vdash: "⊢", + Vdash: "⊩", + vDash: "⊨", + Vvdash: "⊪", + vert: "|", + Vert: "ǁ", + "|": "ǁ", + "{": "{", + "}": "}", + backslash: "\\", + langle: "〈", + rangle: "〉", + lceil: "⌈", + rceil: "⌉", + lbrace: "{", + rbrace: "}", + lfloor: "⌊", + rfloor: "⌋", + cdots: "⋯", + ddots: "⋰", + vdots: "⋮", + dots: "…", + ldots: "…", + "#": "#", + bot: "⊥", + angle: "∠", + backprime: "‵", + bigstar: "★", + blacklozenge: "◆", + blacksquare: "■", + blacktriangle: "▲", + blacktriangledown: "▼", + clubsuit: "♣", + diagdown: "⒁", + diagup: "⒂", + diamondsuit: "♢", + emptyset: "ø", + exists: "∃", + flat: "♭", + forall: "∀", + heartsuit: "♡", + infty: "∞", + lozenge: "◇", + measuredangle: "∡", + nabla: "∇", + natural: "♮", + neg: "¬", + lnot: "¬", + nexists: "∄", + prime: "′", + sharp: "♯", + spadesuit: "♠", + sphericalangle: "∢", + surd: "√", + top: "⊤", + varnothing: "∅", + triangle: "△", + triangledown: "▽" + } + }; + } +}; + +/*! + * 罗马字体 + */ +_p[30] = { + value: function() { + return { + meta: { + fontFamily: "KF AMS ROMAN", + src: "KF_AMS_ROMAN.woff" + } + }; + } +}; + +/** + * 公式对象,表达式容器 + */ +_p[31] = { + value: function(require) { + var kity = _p.r(34), GTYPE = _p.r(6), FontManager = _p.r(25), FontInstaller = _p.r(24), DEFAULT_OPTIONS = { + fontsize: 50, + autoresize: true, + padding: [ 0 ] + }, Output = _p.r(1), EXPRESSION_INTERVAL = 10, ExpressionWrap = kity.createClass("ExpressionWrap", { + constructor: function(exp, config) { + this.wrap = new kity.Group(); + this.bg = new kity.Rect(0, 0, 0, 0).fill("transparent"); + this.exp = exp; + this.config = config; + this.wrap.setAttr("data-type", "kf-exp-wrap"); + this.bg.setAttr("data-type", "kf-exp-wrap-bg"); + this.wrap.addShape(this.bg); + this.wrap.addShape(this.exp); + }, + getWrapShape: function() { + return this.wrap; + }, + getExpression: function() { + return this.exp; + }, + getBackground: function() { + return this.bg; + }, + resize: function() { + var padding = this.config.padding, expBox = this.exp.getFixRenderBox(); + if (padding.length === 1) { + padding[1] = padding[0]; + } + this.bg.setSize(padding[1] * 2 + expBox.width, padding[0] * 2 + expBox.height); + this.exp.translate(padding[1], padding[0]); + } + }), Formula = kity.createClass("Formula", { + base: _p.r(32), + constructor: function(container, config) { + this.callBase(container); + this.expressions = []; + this.fontInstaller = new FontInstaller(this); + this.config = kity.Utils.extend({}, DEFAULT_OPTIONS, config); + this.initEnvironment(); + this.initInnerFont(); + }, + getContentContainer: function() { + return this.container; + }, + initEnvironment: function() { + this.zoom = this.config.fontsize / 50; + if ("width" in this.config) { + this.setWidth(this.config.width); + } + if ("height" in this.config) { + this.setHeight(this.config.height); + } + this.node.setAttribute("font-size", DEFAULT_OPTIONS.fontsize); + }, + initInnerFont: function() { + var fontList = FontManager.getFontList(), _self = this; + kity.Utils.each(fontList, function(fontInfo) { + createFontStyle(fontInfo); + }); + function createFontStyle(fontInfo) { + var stylesheet = _self.doc.createElement("style"), tpl = '@font-face{font-family: "${fontFamily}";font-style: normal;src: url("${src}") format("woff");}'; + stylesheet.setAttribute("type", "text/css"); + stylesheet.innerHTML = tpl.replace("${fontFamily}", fontInfo.meta.fontFamily).replace("${src}", fontInfo.meta.src); + _self.resourceNode.appendChild(stylesheet); + } + }, + insertExpression: function(expression, index) { + var expWrap = this.wrap(expression); + // clear zoom + this.container.clearTransform(); + this.expressions.splice(index, 0, expWrap.getWrapShape()); + this.addShape(expWrap.getWrapShape()); + notifyExpression.call(this, expWrap.getExpression()); + expWrap.resize(); + correctOffset.call(this); + this.resetZoom(); + this.config.autoresize && this.resize(); + }, + appendExpression: function(expression) { + this.insertExpression(expression, this.expressions.length); + }, + resize: function() { + var renderBox = this.container.getRenderBox("paper"); + this.node.setAttribute("width", renderBox.width); + this.node.setAttribute("height", renderBox.height); + }, + resetZoom: function() { + var zoomLevel = this.zoom / this.getBaseZoom(); + if (zoomLevel !== 0) { + this.container.scale(zoomLevel); + } + }, + wrap: function(exp) { + return new ExpressionWrap(exp, this.config); + }, + clear: function() { + this.callBase(); + this.expressions = []; + }, + clearExpressions: function() { + kity.Utils.each(this.expressions, function(exp) { + exp.remove(); + }); + this.expressions = []; + }, + toJPG: function(cb) { + new Output(this).toJPG(cb); + }, + toPNG: function(cb) { + new Output(this).toPNG(cb); + } + }); + kity.Utils.extend(Formula, { + registerFont: function(fontData) { + FontManager.registerFont(fontData); + } + }); + // 调整表达式之间的偏移 + function correctOffset() { + var exprOffset = 0; + kity.Utils.each(this.expressions, function(expr) { + var box = null; + if (!expr) { + return; + } + expr.setMatrix(new kity.Matrix(1, 0, 0, 1, 0, 0)); + box = expr.getFixRenderBox(); + expr.translate(0 - box.x, exprOffset); + exprOffset += box.height + EXPRESSION_INTERVAL; + }); + return this; + } + // 通知表达式已接入到paper + function notifyExpression(expression) { + var len = 0; + if (!expression) { + return; + } + if (expression.getType() === GTYPE.EXP) { + for (var i = 0, len = expression.getChildren().length; i < len; i++) { + notifyExpression(expression.getChild(i)); + } + } else if (expression.getType() === GTYPE.COMPOUND_EXP) { + // 操作数处理 + for (var i = 0, len = expression.getOperands().length; i < len; i++) { + notifyExpression(expression.getOperand(i)); + } + // 处理操作符 + notifyExpression(expression.getOperator()); + } + expression.addedCall && expression.addedCall(); + } + return Formula; + } +}; + +/** + * 公式专用paper + */ +_p[32] = { + value: function(require) { + var kity = _p.r(34); + return kity.createClass("FPaper", { + base: kity.Paper, + constructor: function(container) { + this.callBase(container); + this.doc = container.ownerDocument; + this.container = new kity.Group(); + this.container.setAttr("data-type", "kf-container"); + this.background = new kity.Group(); + this.background.setAttr("data-type", "kf-bg"); + this.baseZoom = 1; + this.zoom = 1; + this.base("addShape", this.background); + this.base("addShape", this.container); + }, + getZoom: function() { + return this.zoom; + }, + getBaseZoom: function() { + return this.baseZoom; + }, + addShape: function(shape, pos) { + return this.container.addShape(shape, pos); + }, + getBackground: function() { + return this.background; + }, + removeShape: function(pos) { + return this.container.removeShape(pos); + }, + clear: function() { + return this.container.clear(); + } + }); + } +}; + +/** + * jquery + */ +_p[33] = { + value: function() { + if (!window.jQuery) { + throw new Error("Missing jQuery"); + } + return window.jQuery; + } +}; + +/** + * kity库封包 + */ +_p[34] = { + value: function() { + if (!window.kity) { + throw new Error("Missing Kity Graphic Lib"); + } + return window.kity; + } +}; + +/** + * 小括号操作符:() + */ +_p[35] = { + value: function(require) { + var kity = _p.r(34), Text = _p.r(5); + return kity.createClass("BracketsOperator", { + base: _p.r(41), + constructor: function() { + this.callBase("Brackets"); + }, + applyOperand: function(exp) { + generate.call(this, exp); + } + }); + function generate(exp) { + var left = this.getParentExpression().getLeftSymbol(), right = this.getParentExpression().getRightSymbol(), fontSize = exp.getFixRenderBox().height, group = new kity.Group(), offset = 0, leftOp = new Text(left, "KF AMS MAIN").fill("black"), rightOp = new Text(right, "KF AMS MAIN").fill("black"); + leftOp.setFontSize(fontSize); + rightOp.setFontSize(fontSize); + this.addOperatorShape(group.addShape(leftOp).addShape(rightOp)); + offset += leftOp.getFixRenderBox().width; + exp.translate(offset, 0); + offset += exp.getFixRenderBox().width; + rightOp.translate(offset, 0); + } + } +}; + +/** + * 组合操作符 + * 操作多个表达式组合在一起 + */ +_p[36] = { + value: function(require) { + var kity = _p.r(34); + return kity.createClass("CombinationOperator", { + base: _p.r(41), + constructor: function() { + this.callBase("Combination"); + }, + applyOperand: function() { + // 偏移量 + var offsetX = 0, // 操作数 + operands = arguments, // 操作对象最大高度 + maxHeight = 0, // 垂直距离最大偏移 + maxOffsetTop = 0, maxOffsetBottom = 0, cached = [], // 偏移集合 + offsets = []; + kity.Utils.each(operands, function(operand) { + var box = operand.getFixRenderBox(), offsetY = operand.getOffset(); + box.height -= offsetY.top + offsetY.bottom; + cached.push(box); + offsets.push(offsetY); + maxOffsetTop = Math.max(offsetY.top, maxOffsetTop); + maxOffsetBottom = Math.max(offsetY.bottom, maxOffsetBottom); + maxHeight = Math.max(box.height, maxHeight); + }); + kity.Utils.each(operands, function(operand, index) { + var box = cached[index]; + operand.translate(offsetX - box.x, (maxHeight - (box.y + box.height)) / 2 + maxOffsetBottom - offsets[index].bottom); + offsetX += box.width; + }); + this.parentExpression.setOffset(maxOffsetTop, maxOffsetBottom); + this.parentExpression.updateBoxSize(); + } + }); + } +}; + +/*! + * 上下标控制器 + */ +_p[37] = { + value: function(require) { + var kity = _p.r(34), EmptyExpression = _p.r(20), defaultOptions = { + subOffset: 0, + supOffset: 0, + // 上下标的默认缩放值 + zoom: .66 + }; + return kity.createClass("ScriptController", { + constructor: function(opObj, target, sup, sub, options) { + this.observer = opObj.getParentExpression(); + this.target = target; + this.sup = sup; + this.sub = sub; + this.options = kity.Utils.extend({}, defaultOptions, options); + }, + // 上下标记 + applyUpDown: function() { + var target = this.target, sup = this.sup, sub = this.sub, options = this.options; + sup.scale(options.zoom); + sub.scale(options.zoom); + var targetBox = target.getFixRenderBox(); + if (EmptyExpression.isEmpty(sup) && EmptyExpression.isEmpty(sub)) { + return { + width: targetBox.width, + height: targetBox.height, + top: 0, + bottom: 0 + }; + } else { + // 上标 + if (!EmptyExpression.isEmpty(sup) && EmptyExpression.isEmpty(sub)) { + return this.applyUp(target, sup); + } else if (EmptyExpression.isEmpty(sup) && !EmptyExpression.isEmpty(sub)) { + return this.applyDown(target, sub); + } else { + return this.applyUpDownScript(target, sup, sub); + } + } + }, + /** + * 返回应用上下标后的空间占用情况,其中的key各自的意义是: + * top: 上空间偏移 + * bottom: 下空间偏移 + * width: 当前整个图形的实际占用空间的width + * height: 当前整个图形的实际占用空间的height + * @returns {*} + */ + applySide: function() { + var target = this.target, sup = this.sup, sub = this.sub; + if (EmptyExpression.isEmpty(sup) && EmptyExpression.isEmpty(sub)) { + var targetRectBox = target.getRenderBox(this.observer); + return { + width: targetRectBox.width, + height: targetRectBox.height, + top: 0, + bottom: 0 + }; + } else { + // 下标处理 + if (EmptyExpression.isEmpty(sup) && !EmptyExpression.isEmpty(sub)) { + return this.applySideSub(target, sub); + } else if (!EmptyExpression.isEmpty(sup) && EmptyExpression.isEmpty(sub)) { + return this.applySideSuper(target, sup); + } else { + return this.applySideScript(target, sup, sub); + } + } + }, + applySideSuper: function(target, sup) { + sup.scale(this.options.zoom); + var targetRectBox = target.getRenderBox(this.observer), supRectBox = sup.getRenderBox(this.observer), targetMeanline = target.getMeanline(this.observer), supBaseline = sup.getBaseline(this.observer), positionline = targetMeanline, diff = supBaseline - positionline, space = { + top: 0, + bottom: 0, + width: targetRectBox.width + supRectBox.width, + height: targetRectBox.height + }; + sup.translate(targetRectBox.width, 0); + if (this.options.supOffset) { + sup.translate(this.options.supOffset, 0); + } + if (diff > 0) { + target.translate(0, diff); + space.bottom = diff; + space.height += diff; + } else { + sup.translate(0, -diff); + } + return space; + }, + applySideSub: function(target, sub) { + sub.scale(this.options.zoom); + var targetRectBox = target.getRenderBox(this.observer), subRectBox = sub.getRenderBox(this.observer), subOffset = sub.getOffset(), targetBaseline = target.getBaseline(this.observer), // 下标定位线 + subPosition = (subRectBox.height + subOffset.top + subOffset.bottom) / 2, diff = targetRectBox.height - targetBaseline - subPosition, space = { + top: 0, + bottom: 0, + width: targetRectBox.width + subRectBox.width, + height: targetRectBox.height + }; + // 定位下标位置 + sub.translate(targetRectBox.width, subOffset.top + targetBaseline - subPosition); + if (this.options.subOffset) { + sub.translate(this.options.subOffset, 0); + } + if (diff < 0) { + space.top = -diff; + space.height -= diff; + } + return space; + }, + applySideScript: function(target, sup, sub) { + sup.scale(this.options.zoom); + sub.scale(this.options.zoom); + var targetRectBox = target.getRenderBox(this.observer), subRectBox = sub.getRenderBox(this.observer), supRectBox = sup.getRenderBox(this.observer), targetMeanline = target.getMeanline(this.observer), targetBaseline = target.getBaseline(this.observer), supBaseline = sup.getBaseline(this.observer), // 上下标都存在时, 下标的定位以上伸线为准 + subAscenderline = sub.getAscenderline(this.observer), supPosition = targetMeanline, subPosition = targetMeanline + (targetBaseline - targetMeanline) * 2 / 3, topDiff = supPosition - supBaseline, bottomDiff = targetRectBox.height - subPosition - (subRectBox.height - subAscenderline), space = { + top: 0, + bottom: 0, + width: targetRectBox.width + Math.max(subRectBox.width, supRectBox.width), + height: targetRectBox.height + }; + sup.translate(targetRectBox.width, topDiff); + sub.translate(targetRectBox.width, subPosition - subAscenderline); + if (this.options.supOffset) { + sup.translate(this.options.supOffset, 0); + } + if (this.options.subOffset) { + sub.translate(this.options.subOffset, 0); + } + // 定位纠正 + if (topDiff > 0) { + if (bottomDiff < 0) { + targetRectBox.height -= bottomDiff; + space.top = -bottomDiff; + } + } else { + target.translate(0, -topDiff); + sup.translate(0, -topDiff); + sub.translate(0, -topDiff); + space.height -= topDiff; + if (bottomDiff > 0) { + space.bottom = -topDiff; + } else { + space.height -= bottomDiff; + // 比较上下偏移, 获取正确的偏移值 + topDiff = -topDiff; + bottomDiff = -bottomDiff; + if (topDiff > bottomDiff) { + space.bottom = topDiff - bottomDiff; + } else { + space.top = bottomDiff - topDiff; + } + } + } + return space; + }, + applyUp: function(target, sup) { + var supBox = sup.getFixRenderBox(), targetBox = target.getFixRenderBox(), space = { + width: Math.max(targetBox.width, supBox.width), + height: supBox.height + targetBox.height, + top: 0, + bottom: supBox.height + }; + sup.translate((space.width - supBox.width) / 2, 0); + target.translate((space.width - targetBox.width) / 2, supBox.height); + return space; + }, + applyDown: function(target, sub) { + var subBox = sub.getFixRenderBox(), targetBox = target.getFixRenderBox(), space = { + width: Math.max(targetBox.width, subBox.width), + height: subBox.height + targetBox.height, + top: subBox.height, + bottom: 0 + }; + sub.translate((space.width - subBox.width) / 2, targetBox.height); + target.translate((space.width - targetBox.width) / 2, 0); + return space; + }, + applyUpDownScript: function(target, sup, sub) { + var supBox = sup.getFixRenderBox(), subBox = sub.getFixRenderBox(), targetBox = target.getFixRenderBox(), space = { + width: Math.max(targetBox.width, supBox.width, subBox.width), + height: supBox.height + subBox.height + targetBox.height, + top: 0, + bottom: 0 + }; + sup.translate((space.width - supBox.width) / 2, 0); + target.translate((space.width - targetBox.width) / 2, supBox.height); + sub.translate((space.width - subBox.width) / 2, supBox.height + targetBox.height); + return space; + } + }); + } +}; + +/** + * 分数操作符 + */ +_p[38] = { + value: function(require) { + var kity = _p.r(34), ZOOM = _p.r(47).zoom; + return kity.createClass("FractionOperator", { + base: _p.r(41), + constructor: function() { + this.callBase("Fraction"); + }, + applyOperand: function(upOperand, downOperand) { + upOperand.scale(ZOOM); + downOperand.scale(ZOOM); + var upWidth = Math.ceil(upOperand.getWidth()), downWidth = Math.ceil(downOperand.getWidth()), upHeight = Math.ceil(upOperand.getHeight()), downHeight = Math.ceil(downOperand.getHeight()), // 分数线overflow值 + overflow = 3, // 整体padding + padding = 1, maxWidth = Math.max(upWidth, downWidth), maxHeight = Math.max(upHeight, downHeight), operatorShape = generateOperator(maxWidth, overflow); + this.addOperatorShape(operatorShape); + upOperand.translate((maxWidth - upWidth) / 2 + overflow, 0); + operatorShape.translate(0, upHeight + 1); + // 下部不需要偏移 + downOperand.translate((maxWidth - downWidth) / 2 + overflow, upHeight + operatorShape.getHeight() + 1 * 2); + this.parentExpression.setOffset(maxHeight - upHeight, maxHeight - downHeight); + this.parentExpression.expand(padding * 2, padding * 2); + this.parentExpression.translateElement(padding, padding); + } + }); + function generateOperator(width, overflow) { + return new kity.Rect(width + overflow * 2, 1).fill("black"); + } + } +}; + +/** + * 函数操作符 + */ +_p[39] = { + value: function(require) { + var kity = _p.r(34), Text = _p.r(5), ScriptController = _p.r(37); + return kity.createClass("FunctionOperator", { + base: _p.r(41), + constructor: function(funcName) { + this.callBase("Function: " + funcName); + this.funcName = funcName; + }, + /* + * 积分操作符应用操作数 + * @param expr 函数表达式 + * @param sup 上限 + * @param sub 下限 + */ + applyOperand: function(expr, sup, sub) { + var opShape = generateOperator.call(this), expBox = expr.getFixRenderBox(), scriptHanlder = this.parentExpression.isSideScript() ? "applySide" : "applyUpDown", space = new ScriptController(this, opShape, sup, sub, { + zoom: .5 + })[scriptHanlder](), padding = 5, diff = (space.height + space.top + space.bottom - expBox.height) / 2; + // 应用偏移, 使图形在正确的位置上 + opShape.translate(0, space.top); + sup.translate(0, space.top); + sub.translate(0, space.top); + if (diff >= 0) { + expr.translate(space.width + padding, diff); + } else { + diff = -diff; + opShape.translate(0, diff); + sup.translate(0, diff); + sub.translate(0, diff); + expr.translate(space.width + padding, 0); + } + // 只扩展左边, 不扩展右边, 所以padding不 *2 + this.parentExpression.expand(padding, padding * 2); + this.parentExpression.translateElement(padding, padding); + } + }); + /* 返回操作符对象 */ + function generateOperator() { + var opShape = new Text(this.funcName, "KF AMS ROMAN"); + this.addOperatorShape(opShape); + // 为操作符图形创建baseline和meanline方法 + opShape.getBaseline = function() { + return opShape.getFixRenderBox().height; + }; + opShape.getMeanline = function() { + return 0; + }; + return opShape; + } + } +}; + +/** + * 积分操作符:∫ + */ +_p[40] = { + value: function(require) { + var kity = _p.r(34), ScriptController = _p.r(37); + return kity.createClass("IntegrationOperator", { + base: _p.r(41), + constructor: function(type) { + this.callBase("Integration"); + // 默认是普通单重积分 + this.opType = type || 1; + }, + setType: function(type) { + this.opType = type | 0; + }, + // 重置类型 + resetType: function() { + this.opType = 1; + }, + applyOperand: function(exp, sup, sub) { + var opShape = this.getOperatorShape(), padding = 3, expBox = exp.getFixRenderBox(), space = new ScriptController(this, opShape, sup, sub, { + supOffset: 3, + subOffset: -15 + }).applySide(), diff = (space.height + space.top - expBox.height) / 2; + opShape.translate(0, space.top); + sup.translate(0, space.top); + sub.translate(0, space.top); + if (diff >= 0) { + exp.translate(space.width + padding, diff); + } else { + diff = -diff; + opShape.translate(0, diff); + sup.translate(0, diff); + sub.translate(0, diff); + exp.translate(space.width + padding, 0); + } + this.parentExpression.expand(padding, padding * 2); + this.parentExpression.translateElement(padding, padding); + }, + getOperatorShape: function() { + var pathData = "M1.318,48.226c0,0,0.044,0.066,0.134,0.134c0.292,0.313,0.626,0.447,1.006,0.447c0.246,0.022,0.358-0.044,0.604-0.268 c0.782-0.782,1.497-2.838,2.324-6.727c0.514-2.369,0.938-4.693,1.586-8.448C8.559,24.068,9.9,17.878,11.978,9.52 c0.917-3.553,1.922-7.576,3.866-8.983C16.247,0.246,16.739,0,17.274,0c1.564,0,2.503,1.162,2.592,2.57 c0,0.827-0.424,1.386-1.273,1.386c-0.671,0-1.229-0.514-1.229-1.251c0-0.805,0.514-1.095,1.185-1.274 c0.022,0-0.291-0.29-0.425-0.379c-0.201-0.134-0.514-0.224-0.737-0.224c-0.067,0-0.112,0-0.157,0.022 c-0.469,0.134-0.983,0.939-1.453,2.234c-0.537,1.475-0.961,3.174-1.631,6.548c-0.424,2.101-0.693,3.464-1.229,6.727 c-1.608,9.185-2.949,15.487-5.006,23.756c-0.514,2.034-0.849,3.24-1.207,4.335c-0.559,1.698-1.162,2.95-1.811,3.799 c-0.514,0.715-1.385,1.408-2.436,1.408c-1.363,0-2.391-1.185-2.458-2.592c0-0.804,0.447-1.363,1.273-1.363 c0.671,0,1.229,0.514,1.229,1.251C2.503,47.757,1.989,48.047,1.318,48.226z", group = new kity.Group(), opGroup = new kity.Group(), opShape = new kity.Path(pathData).fill("black"), opBox = new kity.Rect(0, 0, 0, 0).fill("transparent"), tmpShape = null; + opGroup.addShape(opShape); + group.addShape(opBox); + group.addShape(opGroup); + this.addOperatorShape(group); + for (var i = 1; i < this.opType; i++) { + tmpShape = new kity.Use(opShape).translate(opShape.getWidth() / 2 * i, 0); + opGroup.addShape(tmpShape); + } + opGroup.scale(1.6); + tmpShape = null; + // 为操作符图形创建baseline和meanline方法 + group.getBaseline = function() { + return opGroup.getFixRenderBox().height; + }; + group.getMeanline = function() { + return 10; + }; + return group; + } + }); + } +}; + +/** + * 操作符抽象类 + * @abstract + */ +_p[41] = { + value: function(require) { + var kity = _p.r(34), GTYPE = _p.r(6); + return kity.createClass("Operator", { + base: _p.r(46), + constructor: function(operatorName) { + this.callBase(); + this.type = GTYPE.OP; + // 该操作符所属的表达式 + this.parentExpression = null; + // 操作符名称 + this.operatorName = operatorName; + // 操作符图形 + this.operatorShape = new kity.Group(); + this.addShape(this.operatorShape); + }, + applyOperand: function() { + throw new Error("applyOperand is abstract"); + }, + setParentExpression: function(exp) { + this.parentExpression = exp; + }, + getParentExpression: function() { + return this.parentExpression; + }, + clearParentExpression: function() { + this.parentExpression = null; + }, + // 提供给具体实现类附加其绘制的操作符图形的接口 + addOperatorShape: function(shpae) { + return this.operatorShape.addShape(shpae); + }, + getOperatorShape: function() { + return this.operatorShape; + } + }); + } +}; + +/** + * 开方操作符 + */ +_p[42] = { + value: function(require) { + var kity = _p.r(34), // 符号图形属性 + // 线条宽度 + SHAPE_DATA_WIDTH = 1, // 计算公式 + radians = 2 * Math.PI / 360, sin15 = Math.sin(15 * radians), cos15 = Math.cos(15 * radians), tan15 = Math.tan(15 * radians); + return kity.createClass("RadicalOperator", { + base: _p.r(41), + constructor: function() { + this.callBase("Radical"); + }, + applyOperand: function(radicand, exponent) { + generateOperator.call(this, radicand, exponent); + } + }); + // 根据给定的操作数生成操作符的pathData + // radicand 表示被开方数 + // exponent 表示指数 + function generateOperator(radicand, exponent) { + var decoration = generateDecoration(radicand), vLine = generateVLine(radicand), padding = 5, hLine = generateHLine(radicand); + this.addOperatorShape(decoration); + this.addOperatorShape(vLine); + this.addOperatorShape(hLine); + adjustmentPosition.call(this, mergeShape(decoration, vLine, hLine), this.operatorShape, radicand, exponent); + this.parentExpression.expand(0, padding * 2); + this.parentExpression.translateElement(0, padding); + } + // 生成根号中的左边装饰部分 + function generateDecoration(radicand) { + var shape = new kity.Path(), // 命名为a以便于精简表达式 + a = SHAPE_DATA_WIDTH, h = radicand.getHeight() / 3, drawer = shape.getDrawer(); + // 根号尾部左上角开始 + drawer.moveTo(0, cos15 * a * 6); + drawer.lineBy(sin15 * a, cos15 * a); + drawer.lineBy(cos15 * a * 3, -sin15 * a * 3); + drawer.lineBy(tan15 * h, h); + drawer.lineBy(sin15 * a * 3, -cos15 * a * 3); + drawer.lineBy(-sin15 * h, -h); + drawer.close(); + return shape.fill("black"); + } + // 根据操作数生成根号的竖直线部分 + function generateVLine(operand) { + var shape = new kity.Path(), // * 0.9 是为了在视觉上使斜线部分不至于太高 + h = operand.getHeight() * .9, drawer = shape.getDrawer(); + drawer.moveTo(tan15 * h, 0); + drawer.lineTo(0, h); + drawer.lineBy(sin15 * SHAPE_DATA_WIDTH * 3, cos15 * SHAPE_DATA_WIDTH * 3); + drawer.lineBy(tan15 * h + sin15 * SHAPE_DATA_WIDTH * 3, -(h + 3 * SHAPE_DATA_WIDTH * cos15)); + drawer.close(); + return shape.fill("black"); + } + // 根据操作数生成根号的水平线部分 + function generateHLine(operand) { + // 表达式宽度 + var w = operand.getWidth() + 2 * SHAPE_DATA_WIDTH; + return new kity.Rect(w, 2 * SHAPE_DATA_WIDTH).fill("black"); + } + // 合并根号的各个部分, 并返回根号的关键点位置数据 + function mergeShape(decoration, vLine, hLine) { + var decoBox = decoration.getFixRenderBox(), vLineBox = vLine.getFixRenderBox(); + vLine.translate(decoBox.width - sin15 * SHAPE_DATA_WIDTH * 3, 0); + decoration.translate(0, vLineBox.height - decoBox.height); + vLineBox = vLine.getFixRenderBox(); + hLine.translate(vLineBox.x + vLineBox.width - SHAPE_DATA_WIDTH / cos15, 0); + // 返回关键点数据 + return { + x: vLineBox.x + vLineBox.width - SHAPE_DATA_WIDTH / cos15, + y: 0 + }; + } + // 调整整个根号表达式的各个部分: 位置、操作符、被开方数、指数 + function adjustmentPosition(position, operator, radicand, exponent) { + var exponentBox = null, opOffset = { + x: 0, + y: 0 + }, opBox = operator.getFixRenderBox(); + exponent.scale(.66); + exponentBox = exponent.getFixRenderBox(); + if (exponentBox.width > 0 && exponentBox.height > 0) { + opOffset.y = exponentBox.height - opBox.height / 2; + // 指数不超出根号, 则移动指数 + if (opOffset.y < 0) { + exponent.translate(0, -opOffset.y); + opOffset.y = 0; + } + opOffset.x = exponentBox.width + opBox.height / 2 * tan15 - position.x; + } + operator.translate(opOffset.x, opOffset.y); + radicand.translate(opOffset.x + position.x + SHAPE_DATA_WIDTH, opOffset.y + 2 * SHAPE_DATA_WIDTH); + } + } +}; + +/** + * 上下标操作符 + */ +_p[43] = { + value: function(require) { + var kity = _p.r(34), ScriptController = _p.r(37); + return kity.createClass("ScriptOperator", { + base: _p.r(41), + constructor: function(operatorName) { + this.callBase(operatorName || "Script"); + }, + applyOperand: function(operand, sup, sub) { + var padding = 1, parent = this.parentExpression, space = new ScriptController(this, operand, sup, sub).applySide(); + this.getOperatorShape(); + space && parent.setOffset(space.top, space.bottom); + parent.expand(4, padding * 2); + parent.translateElement(2, padding); + } + }); + } +}; + +/** + * 求和操作符:∑ + */ +_p[44] = { + value: function(require) { + var kity = _p.r(34), ScriptController = _p.r(37); + return kity.createClass("SummationOperator", { + base: _p.r(41), + constructor: function() { + this.callBase("Summation"); + this.displayType = "equation"; + }, + applyOperand: function(expr, sup, sub) { + var opShape = this.getOperatorShape(), expBox = expr.getFixRenderBox(), padding = 0, space = new ScriptController(this, opShape, sup, sub).applyUpDown(), diff = (space.height - space.top - space.bottom - expBox.height) / 2; + if (diff >= 0) { + expr.translate(space.width + padding, diff + space.bottom); + } else { + diff = -diff; + opShape.translate(0, diff); + sup.translate(0, diff); + sub.translate(0, diff); + expr.translate(space.width + padding, space.bottom); + } + this.parentExpression.setOffset(space.top, space.bottom); + this.parentExpression.expand(padding, padding * 2); + this.parentExpression.translateElement(padding, padding); + }, + getOperatorShape: function() { + var pathData = "M0.672,33.603c-0.432,0-0.648,0-0.648-0.264c0-0.024,0-0.144,0.24-0.432l12.433-14.569L0,0.96c0-0.264,0-0.72,0.024-0.792 C0.096,0.024,0.12,0,0.672,0h28.371l2.904,6.745h-0.6C30.531,4.8,28.898,3.72,28.298,3.336c-1.896-1.2-3.984-1.608-5.28-1.8 c-0.216-0.048-2.4-0.384-5.617-0.384H4.248l11.185,15.289c0.168,0.24,0.168,0.312,0.168,0.36c0,0.12-0.048,0.192-0.216,0.384 L3.168,31.515h14.474c4.608,0,6.96-0.624,7.464-0.744c2.76-0.72,5.305-2.352,6.241-4.848h0.6l-2.904,7.681H0.672z", operatorShape = new kity.Path(pathData).fill("black"), opBgShape = new kity.Rect(0, 0, 0, 0).fill("transparent"), group = new kity.Group(), opRenderBox = null; + group.addShape(opBgShape); + group.addShape(operatorShape); + operatorShape.scale(1.6); + this.addOperatorShape(group); + opRenderBox = operatorShape.getFixRenderBox(); + if (this.displayType === "inline") { + operatorShape.translate(5, 15); + opBgShape.setSize(opRenderBox.width + 10, opRenderBox.height + 25); + } else { + operatorShape.translate(2, 5); + opBgShape.setSize(opRenderBox.width + 4, opRenderBox.height + 8); + } + return group; + } + }); + } +}; + +/*! + * 资源管理器 + * 负责管理资源的加载,并在资源ready之后提供Formula构造器 + */ +_p[45] = { + value: function(require) { + var kity = _p.r(34), cbList = [], RES_CONF = _p.r(47).resource, FontInstall = _p.r(24), Formula = _p.r(31), // 资源管理器就绪状态 + __readyState = false, // 资源管理器是否已启动 + inited = false; + return { + // 初始化 + ready: function(cb, options) { + if (!inited) { + inited = true; + init(options); + } + if (__readyState) { + window.setTimeout(function() { + cb(Formula); + }, 0); + } else { + cbList.push(cb); + } + } + }; + /** + * 资源初始化 + */ + function init(options) { + options = kity.Utils.extend({}, RES_CONF, options); + if (!/^(https?:)?\/\//.test(options.path)) { + options.path = getFullPath(options.path); + } + new FontInstall(document, options.path).mount(complete); + } + function complete() { + kity.Utils.each(cbList, function(cb) { + cb(Formula); + }); + } + function getFullPath(path) { + var pathname = location.pathname.split("/"), pathPart; + pathname.length -= 1; + pathname = pathname.join("/") + "/"; + pathPart = [ location.protocol, "//", location.host, pathname, path.replace(/^\//, "") ]; + return pathPart.join(""); + } + } +}; + +/*! + * 所有符号的基类 + * @abstract + */ +_p[46] = { + value: function(require) { + var kity = _p.r(34), GTYPE = _p.r(6); + return kity.createClass("SignGroup", { + base: kity.Group, + constructor: function() { + this.callBase(); + this.box = new kity.Rect(0, 0, 0, 0); + this.type = GTYPE.UNKNOWN; + this.addShape(this.box); + this.zoom = 1; + }, + setZoom: function(zoom) { + this.zoom = zoom; + }, + getZoom: function() { + return this.zoom; + }, + setBoxSize: function(w, h) { + return this.box.setSize(w, h); + }, + setBoxWidth: function(w) { + return this.box.setWidth(w); + }, + setBoxHeight: function(h) { + return this.box.setHeight(h); + }, + getType: function() { + return this.type; + }, + getBaseHeight: function() { + return this.getHeight(); + }, + getBaseWidth: function() { + return this.getWidth(); + }, + addedCall: function() {} + }); + } +}; + +/*! + * 系统项目配置文件. + */ +_p[47] = { + value: function(require) { + return { + zoom: .66, + font: { + meanline: Math.round(380 / 1e3 * 50), + baseline: Math.round(800 / 1e3 * 50), + baseHeight: 50, + // 系统字体列表 + list: [ _p.r(29), _p.r(27), _p.r(28), _p.r(26), _p.r(30) ] + }, + /*------------------------- 资源配置*/ + resource: { + path: "src/resource/" + }, + // 函数相关配置 + func: { + // 上下标在函数名上下两侧的函数列表 + "ud-script": { + lim: true + } + } + }; + } +}; + +/*! + * 启动代码 + */ +_p[48] = { + value: function(require) { + window.kf = { + // base + ResourceManager: _p.r(45), + Operator: _p.r(41), + // expression + Expression: _p.r(21), + CompoundExpression: _p.r(19), + TextExpression: _p.r(22), + EmptyExpression: _p.r(20), + CombinationExpression: _p.r(12), + FunctionExpression: _p.r(14), + FractionExpression: _p.r(13), + IntegrationExpression: _p.r(15), + RadicalExpression: _p.r(16), + ScriptExpression: _p.r(17), + SuperscriptExpression: _p.r(9), + SubscriptExpression: _p.r(8), + SummationExpression: _p.r(18), + // Brackets expressoin + BracketsExpression: _p.r(11) + }; + } +}; + +var moduleMapping = { + "kf.start": 48 +}; + +function use(name) { + _p.r([ moduleMapping[name] ]); +} +/** + * 模块暴露 + */ + +( function ( global ) { + + var oldGetRenderBox = kity.Shape.getRenderBox; + + kity.extendClass(kity.Shape, { + getFixRenderBox: function () { + return this.getRenderBox( this.container.container ); + }, + + getTranslate: function () { + return this.transform.translate; + } + }); + + // build环境中才含有use + try { + use( 'kf.start' ); + } catch ( e ) { + } + +} )( this ); +})(); \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kityformula-editor.all.min.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kityformula-editor.all.min.js new file mode 100644 index 0000000000000000000000000000000000000000..332ca588656b6f81d45da1189e5e5194b57c7361 --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kityformula-editor.all.min.js @@ -0,0 +1,12 @@ +/*! + * ==================================================== + * Kity Formula Editor - v1.0.0 - 2014-09-03 + * https://github.com/kitygraph/formula + * GitHub: https://github.com/kitygraph/formula.git + * Copyright (c) 2014 Baidu Kity Group; Licensed MIT + * ==================================================== + */ +!function(){function a(a){b.r([c[a]])}var b={r:function(a){if(b[a].inited)return b[a].value;if("function"!=typeof b[a].value)return b[a].inited=!0,b[a].value;var c={exports:{}},d=b[a].value(null,c.exports,c);if(b[a].inited=!0,b[a].value=d,void 0!==d)return d;for(var e in c.exports)if(c.exports.hasOwnProperty(e))return b[a].inited=!0,b[a].value=c.exports,c.exports}};b[0]={value:function(){function a(d,e,f,g){return g=0|g,g>b?f:(g++,c.each(f,function(b,f){d?!b||"object"!=typeof b&&"function"!=typeof b?e[f]=b:(e[f]=e[f]||(c.isArray(b)?[]:{}),e[f]=a(d,e[f],b,g)):e[f]=b}),e)}var b=10,c={extend:function(b,d){var e=!1;if("boolean"==typeof b?(e=b,b=d,d=[].splice.call(arguments,2)):d=[].splice.call(arguments,1),!b)throw new Error("Utils: extend, target can not be empty");return c.each(d,function(c){(c&&"object"==typeof c||"function"==typeof c)&&a(e,b,c)}),b},contains:function(a,b){return a.contains?a.contains(b):a.compareDocumentPosition?!!(16&a.compareDocumentPosition(b)):void 0},getRect:function(a){return a.getBoundingClientRect()},isArray:function(a){return a&&"[object Array]"==={}.toString.call(a)},isString:function(a){return"string"==typeof a},proxy:function(a,b){return function(){return a.apply(b,arguments)}},each:function(a,b){if(a)if("length"in a&&"number"==typeof a.length)for(var c=0,d=a.length;d>c&&b.call(null,a[c],c,a)!==!1;c++);else for(var e in a)if(a.hasOwnProperty(e)&&b.call(null,a[e],e,a)===!1)break}};return c}},b[1]={value:function(){var a=b.r(20);return a.createClass("Component",{constructor:function(){}})}},b[2]={value:function(){function a(){return++d}var c={},d=0,e=!0,f=b.r(3),g=b.r(0),h=function(a){var b=a.type,d=a.target,f=this.__kfe_eid,h=/^(?:before|after)/.test(b),j=c[f][b];return h||(i.trigger(d,"before"+b),e!==!1)?(g.each(j,function(b){return b&&b.call(d,a)===!1?e=!1:void 0}),void(h||i.trigger(d,"after"+b))):(e=!0,!1)},i={addEvent:function(b,d,e){var f=!0,g=null;b.__kfe_eid||(f=!1,b.__kfe_eid=a(),c[b.__kfe_eid]={}),g=c[b.__kfe_eid],g[d]||(f=!1,g[d]=[]),g[d].push(e),f||b.addEventListener(d,h,!1)},trigger:function(a,b,c){c=c||f.createEvent(b,c),a.dispatchEvent(c)}};return i}},b[3]={value:function(){return{createEvent:function(a){var b=document.createEvent("Event");return b.initEvent(a,!0,!0),b}}}},b[4]={value:function(){var a={},c=b.r(0);return c.extend(a,c,b.r(2)),a}},b[5]={value:function(){var a=b.r(20),c=b.r(8),d=a.createClass("ControllerComponent",{constructor:function(a){this.kfEditor=a,this.components={},this.initComponents()},initComponents:function(){this.components.listener=new c(this,this.kfEditor)}});return d}},b[6]={value:function(){var a={32:"\\,","s+219":"\\{","s+221":"\\}",220:"\\backslash","s+51":"\\#","s+52":"\\$","s+53":"\\%","s+54":"\\^","s+55":"\\&","s+189":"\\_","s+192":"\\~"};return{getReplaceString:function(b){return a[b]||null}}}},b[7]={value:function(){var a=b.r(20),c=b.r(4),d=b.r(6),e={LEFT:37,RIGHT:39,DELETE:8,INPUT:229};return a.createClass("InputComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b,this.inputBox=this.createInputBox(),this.initServices(),this.initCommands(),this.initEvent()},initServices:function(){this.kfEditor.registerService("control.update.input",this,{updateInput:this.updateInput}),this.kfEditor.registerService("control.insert.string",this,{insertStr:this.insertStr})},initCommands:function(){this.kfEditor.registerCommand("focus",this,this.focus)},createInputBox:function(){var a=this.kfEditor.getContainer(),b=this.kfEditor.getDocument().createElement("input");return b.className="kf-editor-input-box",b.type="text",b.isTrusted=!1,a.appendChild(b),b},focus:function(){var a=null;this.inputBox.focus(),this.kfEditor.requestService("syntax.has.cursor.info")||(a=this.kfEditor.requestService("syntax.get.root.group.info"),this.kfEditor.requestService("syntax.update.record.cursor",{groupId:a.id,startOffset:0,endOffset:a.content.length}),this.kfEditor.requestService("control.update.input")),this.kfEditor.requestService("control.reselect")},setUntrusted:function(){this.inputBox.isTrusted=!1},setTrusted:function(){this.inputBox.isTrusted=!0},updateInput:function(){var a=this.kfEditor.requestService("syntax.serialization");this.setUntrusted(),this.inputBox.value=a.str,this.inputBox.selectionStart=a.startOffset,this.inputBox.selectionEnd=a.endOffset,this.inputBox.focus(),this.setTrusted()},insertStr:function(a){var b=this.kfEditor.requestService("syntax.serialization"),c=b.str;c=c.substring(0,b.startOffset)+" "+a+" "+c.substring(b.endOffset),this.restruct(c),this.updateInput(),this.kfEditor.requestService("ui.update.canvas.view")},initEvent:function(){var a=this;c.addEvent(this.inputBox,"keydown",function(b){var c=!1;if(b.ctrlKey)return void a.processUserCtrl(b);switch(b.keyCode){case e.INPUT:return;case e.LEFT:b.preventDefault(),a.leftMove(),c=!0;break;case e.RIGHT:b.preventDefault(),a.rightMove(),c=!0;break;case e.DELETE:b.preventDefault(),a.delete(),c=!0}c&&a.kfEditor.requestService("ui.update.canvas.view"),a.pretreatmentInput(b)||b.preventDefault()}),c.addEvent(this.inputBox,"input",function(){a.processingInput()}),c.addEvent(this.inputBox,"blur",function(){a.kfEditor.requestService("ui.toolbar.disable"),a.kfEditor.requestService("ui.toolbar.close"),a.kfEditor.requestService("control.cursor.hide"),a.kfEditor.requestService("render.clear.select")}),c.addEvent(this.inputBox,"focus",function(){a.kfEditor.requestService("ui.toolbar.enable"),this.isTrusted&&a.kfEditor.requestService("control.reselect")}),c.addEvent(this.inputBox,"paste",function(a){a.preventDefault()})},hasRootplaceholder:function(){return this.kfEditor.requestService("syntax.has.root.placeholder")},leftMove:function(){this.hasRootplaceholder()||(this.kfEditor.requestService("syntax.cursor.move.left"),this.update())},rightMove:function(){this.hasRootplaceholder()||(this.kfEditor.requestService("syntax.cursor.move.right"),this.update())},"delete":function(){var a=null;this.hasRootplaceholder()||(a=this.kfEditor.requestService("syntax.delete.group"),a?(this.updateInput(),this.processingInput()):(this.updateInput(),this.kfEditor.requestService("control.reselect")))},processUserCtrl:function(a){switch(a.preventDefault(),a.keyCode){case 65:this.kfEditor.requestService("control.select.all");break;case 83:this.kfEditor.requestService("print.image")}},pretreatmentInput:function(a){var b=this.getKeyCode(a),c=d.getReplaceString(b);return null===c?!0:(this.insertStr(c),!1)},getKeyCode:function(a){return(a.shiftKey?"s+":"")+a.keyCode},processingInput:function(){this.restruct(this.inputBox.value),this.kfEditor.requestService("ui.update.canvas.view")},restruct:function(a){this.kfEditor.requestService("render.draw",a),this.kfEditor.requestService("control.reselect")},update:function(){this.updateInput(),this.kfEditor.requestService("control.reselect")}})}},b[8]={value:function(){var a=b.r(20),c=b.r(9),d=b.r(7),e=b.r(10);return a.createClass("MoveComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b,this.components={},this.initComponents()},initComponents:function(){this.components.location=new c(this,this.kfEditor),this.components.selection=new e(this,this.kfEditor),this.components.input=new d(this,this.kfEditor)}})}},b[9]={value:function(){function a(a){return a.getBoundingClientRect()}var c=b.r(20);return c.createClass("LocationComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b,this.paper=this.getPaper(),this.cursorShape=this.createCursor(),this.initServices(),this.initEvent()},getPaper:function(){return this.kfEditor.requestService("render.get.paper")},initServices:function(){this.kfEditor.registerService("control.cursor.relocation",this,{relocationCursor:this.updateCursor}),this.kfEditor.registerService("control.cursor.hide",this,{hideCursor:this.hideCursor}),this.kfEditor.registerService("control.reselect",this,{reselect:this.reselect}),this.kfEditor.registerService("control.get.cursor.location",this,{getCursorLocation:this.getCursorLocation})},createCursor:function(){var a=new c.Rect(1,0,0,0).fill("black");return a.setAttr("style","display: none"),this.paper.addShape(a),a},initEvent:function(){var a=this.kfEditor.request("ui.canvas.container.event"),b=this;a.on("mousedown",function(a){a.preventDefault(),b.updateCursorInfo(a),b.kfEditor.requestService("control.update.input"),b.reselect()})},updateCursorInfo:function(a){var b=null,c=null,d=-1;return this.kfEditor.requestService("syntax.has.root.placeholder")?(this.kfEditor.requestService("syntax.update.record.cursor",{groupId:this.kfEditor.requestService("syntax.get.root.group.info").id,startOffset:0,endOffset:1}),!1):(b=this.kfEditor.requestService("position.get.wrap",a.target),b&&this.kfEditor.requestService("syntax.is.placeholder.node",b.id)?(c=this.kfEditor.requestService("position.get.group.info",b),void this.kfEditor.requestService("syntax.update.record.cursor",c.group.id,c.index,c.index+1)):(c=this.kfEditor.requestService("position.get.group",a.target),null===c&&(c=this.kfEditor.requestService("syntax.get.root.group.info")),d=this.getIndex(a.clientX,c),void this.kfEditor.requestService("syntax.update.record.cursor",c.id,d)))},hideCursor:function(){this.cursorShape.setAttr("style","display: none")},reselect:function(){var a=this.kfEditor.requestService("syntax.get.record.cursor"),b=null;return this.hideCursor(),this.kfEditor.requestService("syntax.is.select.placeholder")?(b=this.kfEditor.requestService("syntax.get.group.content",a.groupId),void this.kfEditor.requestService("render.select.group",b.content[a.startOffset].id)):void(a.startOffset===a.endOffset?(this.updateCursor(),this.kfEditor.requestService("render.tint.current.cursor")):this.kfEditor.requestService("render.select.current.cursor"))},updateCursor:function(){var b=this.kfEditor.requestService("syntax.get.record.cursor");if(b.startOffset!==b.endOffset)return void this.hideCursor();var c=this.kfEditor.requestService("syntax.get.group.content",b.groupId),d=0===b.endOffset,e=d?0:b.endOffset-1,f=c.content[e],g=a(this.paper.container.node),h=0,i=a(f),j=this.cursorShape.getTransform(this.cursorShape),k=this.kfEditor.requestService("render.get.canvas.zoom"),l=this.paper.getZoom();this.cursorShape.setHeight(i.height/k/l),h=d?i.left-2:i.left+i.width-2,h-=g.left,j.m.e=Math.floor(h/k/l)+.5,j.m.f=(i.top-g.top)/k/l,this.cursorShape.setMatrix(j),this.cursorShape.setAttr("style","display: block")},getCursorLocation:function(){var a=this.cursorShape.getRenderBox("paper");return{x:a.x,y:a.y}},getIndex:function(b,c){for(var d=-1,e=c.content,f=null,g=e.length-1,h=null;g>=0;g--)if(d=g,h=e[g],f=a(h),f.leftthis.startPoint.x,e={},f=null,g=!1,h=this.startGroup,i=null,j=this.getGroupInof(b,a);j.groupInfo.id===h.groupInfo.id?(e={groupId:j.groupInfo.id,startOffset:h.offset,endOffset:j.offset},this.startGroupIsPlaceholder&&(d?e.startOffset===e.endOffset&&(e.endOffset+=1):e.startOffset+=1)):c.contains(h.groupInfo.groupObj,j.groupInfo.groupObj)?e={groupId:h.groupInfo.id,startOffset:h.offset,endOffset:this.getIndex(h.groupInfo.groupObj,a,b)}:c.contains(j.groupInfo.groupObj,h.groupInfo.groupObj)?(e={groupId:j.groupInfo.id,startOffset:this.kfEditor.requestService("position.get.index",j.groupInfo.groupObj,h.groupInfo.groupObj),endOffset:j.offset},d||(e.startOffset+=1)):(f=this.getCommunityGroup(h.groupInfo,j.groupInfo),f.startOffset===f.endOffset?f.endOffset+=1:(i=f.group.content[f.endOffset],g=this.kfEditor.requestService("position.get.area",i,b),g&&(f.endOffset+=1),d||(f.startOffset+=1)),e={groupId:f.group.id,startOffset:f.startOffset,endOffset:f.endOffset}),this.kfEditor.requestService("syntax.update.record.cursor",e.groupId,e.startOffset,e.endOffset),this.kfEditor.requestService("control.reselect")},updateSelectionByTarget:function(a){var b=this.kfEditor.requestService("position.get.parent.group",a),c=null,d={};if(null!==b){if(this.kfEditor.requestService("syntax.is.root.node",b.id))return void this.selectAll();this.kfEditor.requestService("syntax.is.virtual.node",b.id)?(c=this.kfEditor.requestService("position.get.group.info",b.groupObj),d={groupId:c.group.id,startOffset:c.index,endOffset:c.index+1}):d={groupId:b.id,startOffset:0,endOffset:b.content.length},this.kfEditor.requestService("syntax.update.record.cursor",d),this.kfEditor.requestService("control.reselect"),this.kfEditor.requestService("control.update.input")}},selectAll:function(){var a=this.kfEditor.requestService("syntax.get.root.group.info"),b={groupId:a.id,startOffset:0,endOffset:a.content.length};this.kfEditor.requestService("syntax.update.record.cursor",b),this.kfEditor.requestService("control.reselect"),this.kfEditor.requestService("control.update.input")},getGroupInof:function(a,b){var c=this.kfEditor.requestService("position.get.group",b);null===c&&(c=this.kfEditor.requestService("syntax.get.root.group.info"));var d=this.kfEditor.requestService("position.get.location.info",a,c);return{groupInfo:c,offset:d}},getIndex:function(a,b,d){var e=this.kfEditor.requestService("position.get.index",a,b),f=this.kfEditor.requestService("syntax.get.group.content",a.id),g=f.content[e],h=c.getRect(g);return h.left+h.width/2k;k++)i=b.operand[k],h(b)?e(a,k,b,i):f(a,k,b,i);return b}function c(){return q+ ++s}function d(a,b){a.isResetId?b.attr["data-root"]="true":b.attr["data-type"]=r.VIRTUAL}function e(b,c,d,e){"brackets"===d.name&&2>c||("function"!==d.name||0!==c)&&(d.attr["data-type"]=r.VIRTUAL,e?"string"==typeof e?(d.operand[c]=j(b),d.operand[c].operand[0]=e):i(e)?(d.operand[c]=j(b),d.operand[c].operand[0]=a(b,e,d.operand[c])):d.operand[c]=a(b,e,d):d.operand[c]=e)}function f(b,c,d,e){d.attr["data-type"]=r.GROUP,d.operand[c]=e&&"string"!=typeof e?"text"===e.name?e:a(b,e,d):e}function g(a){var b=1;if(a.length>3)return!1;for(var c=0,d=a.length;d>c;c++)a[c]!==m&&a[c]&&"placeholder"===a[c].name&&b--;return!b}function h(a){return!!n[a.name]}function i(a){return"placeholder"===a.name}function j(a){return{name:p,attr:{"data-type":r.GROUP,id:a.getGroupId()},operand:[]}}var k=b.r(19).Parser,l=b.r(20),m=b.r(29).cursorCharacter,n=b.r(22),o=b.r(29).rootPlaceholder.content,p="combination",q="_kf_editor_",r=b.r(11),s=0,t=l.createClass("Parser",{constructor:function(a){this.kfEditor=a,this.callBase(),this.kfParser=k.use("latex"),this.initKFormulExtension(),this.pid=c(),this.groupRecord=0,this.tree=null,this.isResetId=!0,this.initServices()},parse:function(b,c){var d=null;return this.isResetId=!!c,this.isResetId&&this.resetGroupId(),d=this.kfParser.parse(b),a(this,d.tree),d},serialization:function(a){return this.kfParser.serialization(a)},initServices:function(){this.kfEditor.registerService("parser.parse",this,{parse:this.parse}),this.kfEditor.registerService("parser.latex.serialization",this,{serialization:this.serialization})},getKFParser:function(){return this.kfParser},initKFormulExtension:function(){b.r(17).ext(this)},resetGroupId:function(){this.groupRecord=0},getGroupId:function(){return this.pid+"_"+ ++this.groupRecord}});return t}},b[22]={value:function(){return{radical:!0,fraction:!0,summation:!0,integration:!0,placeholder:!0,script:!0,superscript:!0,subscript:!0,brackets:!0,"function":!0}}},b[23]={value:function(){function a(b,c,d){var e=null;return b.ownerSVGElement?(b=b.parentNode,e=b.tagName.toLowerCase(),b&&"body"!==e&&"svg"!==e?"kf-editor-group"===b.getAttribute("data-type")?b:c&&"kf-editor-virtual-group"===b.getAttribute("data-type")?b:d&&null!==b.getAttribute("data-flag")?b:a(b,c,d):null):null}var c=b.r(20),d=b.r(4),e=c.createClass("PositionComponenet",{constructor:function(a){this.kfEditor=a,this.initServices()},initServices:function(){this.kfEditor.registerService("position.get.group",this,{getGroupByTarget:this.getGroupByTarget}),this.kfEditor.registerService("position.get.index",this,{getIndexByTargetInGroup:this.getIndexByTargetInGroup}),this.kfEditor.registerService("position.get.location.info",this,{getLocationInfo:this.getLocationInfo}),this.kfEditor.registerService("position.get.parent.group",this,{getParentGroupByTarget:this.getParentGroupByTarget}),this.kfEditor.registerService("position.get.wrap",this,{getWrap:this.getWrap}),this.kfEditor.registerService("position.get.area",this,{getAreaByCursorInGroup:this.getAreaByCursorInGroup}),this.kfEditor.registerService("position.get.group.info",this,{getGroupInfoByNode:this.getGroupInfoByNode}),this.kfEditor.registerService("position.get.parent.info",this,{getParentInfoByNode:this.getParentInfoByNode})},getGroupByTarget:function(b){var c=a(b,!1,!1);return c?this.kfEditor.requestService("syntax.get.group.content",c.id):null},getIndexByTargetInGroup:function(a,b){var e=this.kfEditor.requestService("syntax.get.group.content",a.id),f=-1;return c.Utils.each(e.content,function(a,c){return f=c,d.contains(a,b)?!1:void 0}),f},getAreaByCursorInGroup:function(a,b){var c=d.getRect(a);return c.left+c.width/2=0;g--)if(c=g,h=e[g],f=d.getRect(h),f.leftg&&(c.index=g,!d.contains(f.content[g],b));g++);return c.group=f,c},getParentInfoByNode:function(b){var c=a(b,!0,!1);return c=this.kfEditor.requestService("syntax.get.group.content",c.id),{group:c,index:c.content.indexOf(b)}}});return e}},b[24]={value:function(){var a=b.r(20);return a.createClass("Printer",{constructor:function(a){this.kfEditor=a,this.initServices(),this.initCommands()},initServices:function(){this.kfEditor.registerService("print.image",this,{printImage:this.printImage})},initCommands:function(){this.kfEditor.registerCommand("get.image.data",this,this.getImageData)},printImage:function(){var a=this.kfEditor.requestService("render.get.paper");this._formatCanvas(),a.toPNG(function(a){document.body.innerHTML=''}),this._restoreCanvas()},getImageData:function(a){var b=this.kfEditor.requestService("render.get.canvas"),c=this.kfEditor.requestService("render.get.paper");this._formatCanvas(),c.toPNG(function(c){a({width:b.width,height:b.height,img:c})}),this._restoreCanvas()},_formatCanvas:function(){var a=this.kfEditor.requestService("render.get.canvas"),b=a.container.getRenderBox();a.node.setAttribute("width",b.width),a.node.setAttribute("height",b.height),this.kfEditor.requestService("render.clear.canvas.transform"),this.kfEditor.requestService("control.cursor.hide"),this.kfEditor.requestService("render.clear.select")},_restoreCanvas:function(){var a=this.kfEditor.requestService("render.get.canvas");a.node.setAttribute("width","100%"),a.node.setAttribute("height","100%"),this.kfEditor.requestService("render.revert.canvas.transform"),this.kfEditor.requestService("control.cursor.relocation"),this.kfEditor.requestService("render.reselect")}})}},b[25]={value:function(){var a=b.r(20),c=b.r(19).Assembly,d={autoresize:!1,fontsize:50,padding:[20,50]},e=a.createClass("RenderComponent",{base:b.r(1),constructor:function(b,c){this.callBase(),this.options=a.Utils.extend({},d,c),this.kfEditor=b,this.assembly=null,this.formula=null,this.relDisabled=!1,this.canvasZoom=1,this.record={select:{},cursor:{},canvas:{}},this.initCanvas(),this.initServices(),this.initCommands()},initCanvas:function(){var a=this.kfEditor.requestService("ui.get.canvas.container"),b=this.kfEditor.getFormulaClass();this.assembly=new c(new b(a,this.options)),this.formula=this.assembly.formula,this.setCanvasToCenter()},setCanvasOffset:function(a,b){var c=this.formula.getViewBox();b=void 0!==b?b:-c.height/2,this.formula.setViewBox(a,b,c.width,c.height)},setCanvasToCenter:function(){var a=this.formula.getViewBox();this.formula.setViewBox(-a.width/2,-a.height/2,a.width,a.height)},initServices:function(){this.kfEditor.registerService("render.get.canvas",this,{getCanvas:this.getCanvas}),this.kfEditor.registerService("render.get.content.size",this,{getContentSize:this.getContentSize}),this.kfEditor.registerService("render.clear.canvas.transform",this,{clearCanvasOffset:this.clearCanvasTransform}),this.kfEditor.registerService("render.set.canvas.offset",this,{setCanvasOffset:this.setCanvasOffset}),this.kfEditor.registerService("render.set.canvas.to.center",this,{setCanvasToCenter:this.setCanvasToCenter}),this.kfEditor.registerService("render.revert.canvas.transform",this,{revertCanvasTransform:this.revertCanvasTransform}),this.kfEditor.registerService("render.relocation",this,{relocation:this.relocation}),this.kfEditor.registerService("render.disable.relocation",this,{disableRelocation:this.disableRelocation}),this.kfEditor.registerService("render.enable.relocation",this,{enableRelocation:this.enableRelocation}),this.kfEditor.registerService("render.select.group.content",this,{selectGroupContent:this.selectGroupContent}),this.kfEditor.registerService("render.select.group",this,{selectGroup:this.selectGroup}),this.kfEditor.registerService("render.select.group.all",this,{selectAllGroup:this.selectAllGroup}),this.kfEditor.registerService("render.tint.current.cursor",this,{tintCurrentGroup:this.tintCurrentGroup}),this.kfEditor.registerService("render.select.current.cursor",this,{selectCurrentCursor:this.selectCurrentCursor}),this.kfEditor.registerService("render.reselect",this,{reselect:this.reselect}),this.kfEditor.registerService("render.clear.select",this,{clearSelect:this.clearSelect}),this.kfEditor.registerService("render.set.canvas.zoom",this,{setCanvasZoom:this.setCanvasZoom}),this.kfEditor.registerService("render.get.canvas.zoom",this,{getCanvasZoom:this.getCanvasZoom}),this.kfEditor.registerService("render.get.paper.offset",this,{getPaperOffset:this.getPaperOffset}),this.kfEditor.registerService("render.draw",this,{render:this.render}),this.kfEditor.registerService("render.insert.string",this,{insertString:this.insertString}),this.kfEditor.registerService("render.insert.group",this,{insertGroup:this.insertGroup}),this.kfEditor.registerService("render.get.paper",this,{getPaper:this.getPaper})},initCommands:function(){this.kfEditor.registerCommand("render",this,function(a){this.render(a),this.kfEditor.requestService("ui.update.canvas.view")}),this.kfEditor.registerCommand("getPaper",this,this.getPaper)},relocation:function(){this.relDisabled?this.relocationToLeft():this.relocationToCenter()},relocationToCenter:function(){var a=this.formula.container.getRenderBox();this.formula.container.setTranslate(-a.width/2,-a.height/2),this.setCanvasToCenter()},relocationToLeft:function(){var a=this.formula.container.getRenderBox();this.formula.container.setTranslate(0,-a.height/2),this.setCanvasOffset(0)},selectGroup:function(a){var b=this.kfEditor.requestService("syntax.get.group.object",a);this.clearSelect(),b.node.getAttribute("data-root")||(this.record.select.lastSelect=b,b.select())},selectGroupContent:function(a){null!==a.groupObj.getAttribute("data-placeholder")&&(a={id:a.content[0].id});var b=this.kfEditor.requestService("syntax.get.group.object",a.id);this.clearSelect(),this.record.select.lastSelect=b,b.node.getAttribute("data-root")||b.select()},selectAllGroup:function(a){null!==a.groupObj.getAttribute("data-placeholder")&&(a={id:a.content[0].id});var b=this.kfEditor.requestService("syntax.get.group.object",a.id);this.clearSelect(),this.record.select.lastSelect=b,b.selectAll()},selectCurrentCursor:function(){var a=this.kfEditor.requestService("syntax.get.record.cursor"),b=this.kfEditor.requestService("syntax.get.group.object",a.groupId),c=null,d=-1,e=0,f=Math.min(a.startOffset,a.endOffset),g=Math.max(a.startOffset,a.endOffset);this.clearSelect(),this.record.select.lastSelect=b;for(var h=f,i=g;i>h;h++)c=b.getOperand(h).getRenderBox(b),-1==d&&(d=c.x),e+=c.width;b.setBoxWidth(e),b.selectAll(),b.getBox().setTranslate(d,0)},tintCurrentGroup:function(){var a=this.kfEditor.requestService("syntax.get.record.cursor").groupId,b=this.kfEditor.requestService("syntax.get.group.object",a),c=this.kfEditor.requestService("syntax.is.placeholder.node",a);this.clearSelect(),b.node.getAttribute("data-root")||(c&&(b=this.kfEditor.requestService("syntax.get.group.object",b.operands[0].node.id)),this.record.select.lastSelect=b,b.select())},reselect:function(){var a=this.kfEditor.requestService("syntax.get.record.cursor"),b=null;b=this.kfEditor.requestService("syntax.get.group.object",a.groupId),this.clearSelect(),this.record.select.lastSelect=b,b.node.getAttribute("data-root")||b.select() +},clearSelect:function(){var a=null,b=this.record.select.lastSelect;b&&b.node.ownerSVGElement&&(b.unselect(),a=b.getRenderBox(b),b.setBoxWidth(a.width),b.getBox().setTranslate(0,0))},getPaper:function(){return this.formula},render:function(a){var b=this.kfEditor.requestService("parser.parse",a,!0),c=this.assembly.regenerateBy(b);this.kfEditor.requestService("syntax.update.objtree",c)},enableRelocation:function(){this.relDisabled=!1},disableRelocation:function(){this.relDisabled=!0},setCanvasZoom:function(a){var b=this.formula.getViewPort();this.canvasZoom=a,b.zoom=a,this.formula.setViewPort(b)},getCanvas:function(){return this.formula},getContentSize:function(){return this.formula.container.getRenderBox()},clearCanvasTransform:function(){var a=this.record.canvas;a.viewBox=this.formula.getViewBox(),a.contentOffset=this.formula.container.getTranslate(),this.setCanvasToCenter(),this.formula.node.removeAttribute("viewBox"),this.formula.container.setTranslate(0,0)},revertCanvasTransform:function(){var a=this.record.canvas,b=a.viewBox;return b?(this.formula.setViewBox(b.x,b.y,b.width,b.height),this.formula.container.setTranslate(a.contentOffset),a.viewBox=null,void(a.contentOffset=null)):!1},getCanvasZoom:function(){return this.canvasZoom}});return e}},b[26]={value:function(){var a=b.r(20);return a.createClass("DeleteComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b},deleteGroup:function(){var a=this.parentComponent.getCursorRecord(),b=this.parentComponent.getObjectTree(),c=b.mapping[a.groupId].strGroup;return a.startOffset!==a.endOffset?this.parentComponent.isSelectPlaceholder()?this.parentComponent.isRootTree(c)?!1:(a=this.selectParentContainer(a.groupId),this.parentComponent.updateCursor(a),!1):this.deleteSelection(c,a):0===a.startOffset?this.parentComponent.isRootTree(c)?!1:(a=this.selectParentContainer(a.groupId),this.parentComponent.updateCursor(a),!1):c.operand.length>1?(a=this.deletePrevGroup(c,a),this.parentComponent.updateCursor(a),a.startOffset===a.endOffset?!0:!1):(a.startOffset=0,a.endOffset=1,c.operand[0].attr&&this.parentComponent.isGroupNode(c.operand[0].attr.id)?(this.parentComponent.updateCursor(a),!1):(c.operand[0]={name:"placeholder",operand:[]},this.parentComponent.updateCursor(a),!0))},deletePrevGroup:function(a,b){var c=b.startOffset-1,d=a.operand[c];return this.parentComponent.isLeafTree(d)?(a.operand.splice(c,1),b.startOffset-=1,b.endOffset-=1):b.startOffset-=1,b},deleteSelection:function(a,b){return 0===b.startOffset&&b.endOffset===a.operand.length?(a.operand.length=1,a.operand[0]={name:"placeholder",operand:[]},b.endOffset=1):(a.operand.splice(b.startOffset,b.endOffset-b.startOffset),b.endOffset=b.startOffset),this.parentComponent.updateCursor(b),!0},selectParentContainer:function(a){var b=this.parentComponent.getGroupObject(a).node,c=this.kfEditor.requestService("position.get.group",b),d=this.kfEditor.requestService("position.get.index",c.groupObj,b);return{groupId:c.id,startOffset:d,endOffset:d+1}}})}},b[27]={value:function(){function a(a){var b=null,c=this.parentComponent,f=null;return f=c.getGroupContent(a.groupId),c.isSelectPlaceholder()?e(this,f.content[a.startOffset],p.LEFT):(a.startOffset===a.endOffset?a.startOffset>0?(b=f.content[a.startOffset-1],l(b)?a=d(this,b,p.LEFT):(a.startOffset-=1,m(b)||(a.endOffset=a.startOffset))):a=e(this,f.groupObj,p.LEFT):(a.startOffset=Math.min(a.startOffset,a.endOffset),a.endOffset=a.startOffset),a)}function c(a){var b=null,c=this.parentComponent,f=null;return f=c.getGroupContent(a.groupId),c.isSelectPlaceholder()?e(this,f.content[a.startOffset],p.RIGHT):(a.startOffset===a.endOffset?a.startOffset1)return{groupId:d.group.id,startOffset:0,endOffset:0};d=c.requestService("position.get.parent.info",d.group.groupObj)}return k(d.group.groupObj)?{groupId:d.group.id,startOffset:d.index,endOffset:d.index}:(b=d.group.content[d.index-1],l(b)?k(b)?f(a,b):f(a,b):n(b)?g(a,b):{groupId:d.group.id,startOffset:d.index,endOffset:d.index})}function h(a,b){var c=a.parentComponent,d=null,e=null;if(l(b)){if(d=c.getGroupContent(b.id),e=d.content[0],k(b))return k(e)?h(a,e):m(e)?{groupId:b.id,startOffset:0,endOffset:1}:{groupId:b.id,startOffset:0,endOffset:0};for(;!k(e)&&!m(e)&&!n(e);)d=c.getGroupContent(e.id),e=d.content[0];return m(e)?{groupId:e.id,startOffset:0,endOffset:0}:n(e)?i(a,e):h(a,e)}return null}function i(a,b){var c=a.kfEditor,d=a.parentComponent,e=null,f=null;if(j(b))return null;for(e=c.requestService("position.get.parent.info",b);e.index===e.group.content.length-1;){if(j(e.group.groupObj))return{groupId:e.group.id,startOffset:e.group.content.length,endOffset:e.group.content.length};if(k(e.group.groupObj)&&e.group.content.length>1)return{groupId:e.group.id,startOffset:e.group.content.length,endOffset:e.group.content.length};e=c.requestService("position.get.parent.info",e.group.groupObj)}return b=e.group.content[e.index+1],n(b)?i(a,b):k(b)?(f=d.getGroupContent(b.id),d.isPlaceholder(f.content[0].id)?{groupId:b.id,startOffset:0,endOffset:1}:{groupId:b.id,startOffset:0,endOffset:0}):{groupId:e.group.id,startOffset:e.index+1,endOffset:e.index+1}}function j(a){return!!a.getAttribute("data-root")}function k(a){return"kf-editor-group"===a.getAttribute("data-type")}function l(a){var b=a.getAttribute("data-type");return"kf-editor-group"===b||"kf-editor-virtual-group"===b}function m(a){return"Placeholder"===a.getAttribute("data-flag")}function n(a){return"Empty"===a.getAttribute("data-flag")}var o=b.r(20),p={LEFT:"left",RIGHT:"right"};return o.createClass("MoveComponent",{constructor:function(a,b){this.parentComponent=a,this.kfEditor=b},leftMove:function(){var b=this.parentComponent.getCursorRecord();b=a.call(this,b),b&&this.parentComponent.updateCursor(b)},rightMove:function(){var a=this.parentComponent.getCursorRecord();a=c.call(this,a),a&&this.parentComponent.updateCursor(a)}})}},b[28]={value:function(){var a=b.r(20),c=b.r(27),d=b.r(26),e=b.r(29).cursorCharacter,f=b.r(11),g=a.createClass("SyntaxComponenet",{constructor:function(a){this.kfEditor=a,this.record={cursor:{group:null,startOffset:-1,endOffset:-1}},this.components={},this.objTree=null,this.initComponents(),this.initServices(),this.initCommands()},initComponents:function(){this.components.move=new c(this,this.kfEditor),this.components.delete=new d(this,this.kfEditor)},initServices:function(){this.kfEditor.registerService("syntax.update.objtree",this,{updateObjTree:this.updateObjTree}),this.kfEditor.registerService("syntax.get.objtree",this,{getObjectTree:this.getObjectTree}),this.kfEditor.registerService("syntax.get.group.object",this,{getGroupObject:this.getGroupObject}),this.kfEditor.registerService("syntax.is.root.node",this,{isRootNode:this.isRootNode}),this.kfEditor.registerService("syntax.is.group.node",this,{isGroupNode:this.isGroupNode}),this.kfEditor.registerService("syntax.is.virtual.node",this,{isVirtualNode:this.isVirtualNode}),this.kfEditor.registerService("syntax.is.placeholder.node",this,{isPlaceholder:this.isPlaceholder}),this.kfEditor.registerService("syntax.is.select.placeholder",this,{isSelectPlaceholder:this.isSelectPlaceholder}),this.kfEditor.registerService("syntax.has.root.placeholder",this,{hasRootplaceholder:this.hasRootplaceholder}),this.kfEditor.registerService("syntax.valid.brackets",this,{isBrackets:this.isBrackets}),this.kfEditor.registerService("syntax.get.group.content",this,{getGroupContent:this.getGroupContent}),this.kfEditor.registerService("syntax.get.root.group.info",this,{getRootGroupInfo:this.getRootGroupInfo}),this.kfEditor.registerService("syntax.get.root",this,{getRootObject:this.getRootObject}),this.kfEditor.registerService("syntax.update.record.cursor",this,{updateCursor:this.updateCursor}),this.kfEditor.registerService("syntax.update.selection",this,{updateSelection:this.updateSelection}),this.kfEditor.registerService("syntax.get.record.cursor",this,{getCursorRecord:this.getCursorRecord}),this.kfEditor.registerService("syntax.has.cursor.info",this,{hasCursorInfo:this.hasCursorInfo}),this.kfEditor.registerService("syntax.serialization",this,{serialization:this.serialization}),this.kfEditor.registerService("syntax.cursor.move.left",this,{leftMove:this.leftMove}),this.kfEditor.registerService("syntax.cursor.move.right",this,{rightMove:this.rightMove}),this.kfEditor.registerService("syntax.delete.group",this,{deleteGroup:this.deleteGroup})},initCommands:function(){this.kfEditor.registerCommand("get.source",this,this.getSource),this.kfEditor.registerCommand("content.is.empty",this,this.isEmpty)},updateObjTree:function(a){var b=a.select;b&&b.groupId&&this.updateCursor(b.groupId,b.startOffset,b.endOffset),this.objTree=a},hasCursorInfo:function(){return null!==this.record.cursor.group},isRootNode:function(a){return this.objTree.mapping.root.strGroup.attr.id===a},isGroupNode:function(a){var b=this.objTree.mapping[a].strGroup.attr["data-type"];return b===f.GROUP||b===f.VIRTUAL},isVirtualNode:function(a){return this.objTree.mapping[a].strGroup.attr["data-type"]===f.VIRTUAL},isPlaceholder:function(a){var b=this.objTree.mapping[a];return b?(b=b.objGroup.node,"Placeholder"===b.getAttribute("data-flag")):!1},isBrackets:function(a){return!!this.objTree.mapping[a].objGroup.node.getAttribute("data-brackets")},hasRootplaceholder:function(){return"placeholder"===this.objTree.mapping.root.strGroup.operand[0].name},isSelectPlaceholder:function(){var a=this.record.cursor,b=null;return a.endOffset-a.startOffset!==1?!1:(b=this.getGroupContent(a.groupId),this.isPlaceholder(b.content[a.startOffset].id)?!0:!1)},isLeafTree:function(a){return"string"==typeof a},isRootTree:function(a){return a.attr&&a.attr["data-root"]},getObjectTree:function(){return this.objTree},getGroupObject:function(a){return this.objTree.mapping[a].objGroup||null},getCursorRecord:function(){return a.Utils.extend({},this.record.cursor)||null},getGroupContent:function(b){var c=this.objTree.mapping[b],d=[],e=c.objGroup.operands,f=e.length-1,g="rtl"!==c.strGroup.traversal;return a.Utils.each(e,function(a,b){g?d.push(a.node):d[f-b]=a.node}),{id:b,traversal:c.strGroup.traversal||"ltr",groupObj:c.objGroup.node,content:d}},getRootObject:function(){return this.objTree.mapping.root.objGroup},getRootGroupInfo:function(){var a=this.objTree.mapping.root.strGroup.attr.id;return this.getGroupContent(a)},updateSelection:function(a){var b=this.objTree.mapping[a.id],c=b.strGroup,d=null,f=null,g=null,h=-1,i=-1;if(d=a,f=b,"combination"===c.name)this.record.cursor={groupId:d.id,startOffset:0,endOffset:c.operand.length},c.operand.unshift(e),c.operand.push(e);else{for(;"combination"!==f.strGroup.name||1===d.content;)a=d,b=f,d=this.kfEditor.requestService("position.get.parent.group",b.objGroup.node),f=this.objTree.mapping[d.id];var j=[].indexOf.call(d.content,a.groupObj);this.record.cursor={groupId:d.id,startOffset:j,endOffset:j+1},f.strGroup.operand.splice(j+1,0,e),f.strGroup.operand.splice(j,0,e)}return g=this.kfEditor.requestService("parser.latex.serialization",this.objTree.parsedTree),h=g.indexOf(e),g=g.replace(e,""),i=g.indexOf(e),f.strGroup.operand.splice(this.record.cursor.startOffset,1),f.strGroup.operand.splice(this.record.cursor.endOffset,1),{str:g,startOffset:h,endOffset:i}},getSource:function(){return this.serialization().str.replace(e,"").replace(e,"")},isEmpty:function(){return this.hasRootplaceholder()},serialization:function(){var a=this.record.cursor,b=this.objTree.mapping[a.groupId],c=b.strGroup,d=null,f=-1,g=-1;return f=Math.min(a.endOffset,a.startOffset),g=Math.max(a.endOffset,a.startOffset),c.operand.splice(g,0,e),c.operand.splice(f,0,e),g+=1,d=this.kfEditor.requestService("parser.latex.serialization",this.objTree.parsedTree),c.operand.splice(g,1),c.operand.splice(f,1),f=d.indexOf(e),a.startOffset===a.endOffset&&(d=d.replace(e,"")),g=d.lastIndexOf(e),{str:d,startOffset:f,endOffset:g}},updateCursor:function(a,b,c){var d=null;1===arguments.length&&(c=a.endOffset,b=a.startOffset,a=a.groupId),void 0===c&&(c=b),b>c&&(d=c,c=b,b=d),this.record.cursor={groupId:a,startOffset:b,endOffset:c}},leftMove:function(){this.components.move.leftMove()},rightMove:function(){this.components.move.rightMove()},deleteGroup:function(){return this.components.delete.deleteGroup()},insertSubtree:function(a){var b=this.record.cursor,c=0,d=0,e=null,f=0;this.isPlaceholder(b.groupId)?this.replaceTree(a):(c=Math.min(b.startOffset,b.endOffset),d=Math.max(b.startOffset,b.endOffset),f=d-c,e=this.objTree.mapping[b.groupId].strGroup,e.operand.splice(c,f,a),b.startOffset+=1,b.endOffset=b.startOffset)},replaceTree:function(a){var b=this.record.cursor,c=this.objTree.mapping[b.groupId].objGroup.node,d=this.kfEditor.requestService("position.get.parent.info",c),e=this.objTree.mapping[d.group.id].strGroup;e.operand[d.index]=a,b.groupId=d.group.id,b.startOffset=d.index+1,b.endOffset=d.index+1}});return g}},b[29]={value:function(){return{cursorCharacter:"\uf155",rootPlaceholder:{color:"#666",content:"\u5728\u6b64\u5904\u952e\u5165\u516c\u5f0f",fontsize:16},scrollbar:{padding:5,step:150}}}},b[30]={value:function(){return{"\\pm":{x:5,y:0},"\\infty":{x:42,y:0},"=":{x:79,y:0},"\\sim":{x:116,y:0},"\\times":{x:153,y:0},"\\div":{x:190,y:0},"!":{x:227,y:0},"<":{x:264,y:0},"\\ll":{x:301,y:0},">":{x:338,y:0},"\\gg":{x:375,y:0},"\\leq":{x:412,y:0},"\\geq":{x:449,y:0},"\\mp":{x:486,y:0},"\\cong":{x:523,y:0},"\\equiv":{x:560,y:0},"\\propto":{x:597,y:0},"\\approx":{x:634,y:0},"\\forall":{x:671,y:0},"\\partial":{x:708,y:0},"\\surd":{x:745,y:0},"\\cup":{x:782,y:0},"\\cap":{x:819,y:0},"\\varnothing":{x:856,y:0},"%":{x:893,y:0},"\\circ":{x:930,y:0},"\\exists":{x:967,y:0},"\\nexists":{x:1004,y:0},"\\in":{x:1041,y:0},"\\ni":{x:1078,y:0},"\\gets":{x:5,y:37},"\\uparrow":{x:42,y:37},"\\to":{x:79,y:37},"\\downarrow":{x:116,y:37},"\\leftrightarrow":{x:153,y:37},"\\therefore":{x:190,y:37},"\\because":{x:227,y:37},"+":{x:264,y:37},"-":{x:301,y:37},"\\neg":{x:338,y:37},"\\ast":{x:375,y:37},"\\cdot":{x:412,y:37},"\\vdots":{x:449,y:37},"\\ddots":{x:486,y:37},"\\aleph":{x:523,y:37},"\\beth":{x:560,y:37},"\\blacksquare":{x:597,y:37},"\\alpha":{x:634,y:37},"\\beta":{x:671,y:37},"\\gamma":{x:708,y:37},"\\delta":{x:745,y:37},"\\epsilon":{x:782,y:37},"\\zeta":{x:819,y:37},"\\eta":{x:856,y:37},"\\theta":{x:893,y:37},"\\iota":{x:930,y:37},"\\kappa":{x:967,y:37},"\\lambda":{x:1004,y:37},"\\mu":{x:1041,y:37},"\\nu":{x:1078,y:37},"\\xi":{x:5,y:74},"\\omicron":{x:42,y:74},"\\pi":{x:79,y:74},"\\rho":{x:116,y:74},"\\sigma":{x:153,y:74},"\\tau":{x:190,y:74},"\\upsilon":{x:227,y:74},"\\phi":{x:264,y:74},"\\chi":{x:301,y:74},"\\psi":{x:338,y:74},"\\omega":{x:375,y:74},"\\Alpha":{x:412,y:74},"\\Beta":{x:449,y:74},"\\Gamma":{x:486,y:74},"\\Delta":{x:523,y:74},"\\Epsilon":{x:560,y:74},"\\Zeta":{x:597,y:74},"\\Eta":{x:634,y:74},"\\Theta":{x:671,y:74},"\\Iota":{x:708,y:74},"\\Kappa":{x:745,y:74},"\\Lambda":{x:782,y:74},"\\Mu":{x:819,y:74},"\\Nu":{x:856,y:74},"\\Xi":{x:893,y:74},"\\Omicron":{x:930,y:74},"\\Pi":{x:967,y:74},"\\Rho":{x:1004,y:74},"\\Sigma":{x:1041,y:74},"\\Tau":{x:1078,y:74},"\\Upsilon":{x:5,y:111},"\\Phi":{x:42,y:111},"\\Chi":{x:79,y:111},"\\Psi":{x:116,y:111},"\\Omega":{x:153,y:111},"\\digamma":{x:190,y:111},"\\varepsilon":{x:227,y:111},"\\varkappa":{x:264,y:111},"\\varphi":{x:301,y:111},"\\varpi":{x:338,y:111},"\\varrho":{x:375,y:111},"\\varsigma":{x:412,y:111},"\\vartheta":{x:449,y:111},"\\neq":{x:486,y:111},"\\nless":{x:523,y:111},"\\ngtr":{x:560,y:111},"\\nleq":{x:597,y:111},"\\ngeq":{x:634,y:111},"\\nsim":{x:671,y:111},"\\lneqq":{x:708,y:111},"\\gneqq":{x:745,y:111},"\\nprec":{x:782,y:111},"\\nsucc":{x:819,y:111},"\\notin":{x:856,y:111},"\\nsubseteq":{x:893,y:111},"\\nsupseteq":{x:930,y:111},"\\subsetneq":{x:967,y:111},"\\supsetneq":{x:1004,y:111},"\\lnsim":{x:1041,y:111},"\\gnsim":{x:1078,y:111},"\\precnsim":{x:5,y:148},"\\succnsim":{x:42,y:148},"\\ntriangleleft":{x:79,y:148},"\\ntriangleright":{x:116,y:148},"\\ntrianglelefteq":{x:153,y:148},"\\ntrianglerighteq":{x:190,y:148},"\\nmid":{x:227,y:148},"\\nparallel":{x:264,y:148},"\\nvdash":{x:301,y:148},"\\nVdash":{x:338,y:148},"\\nvDash":{x:375,y:148},"\\nVDash":{x:412,y:148},"\\daleth":{x:449,y:148},"\\gimel":{x:486,y:148},"\\complement":{x:523,y:148},"\\ell":{x:560,y:148},"\\eth":{x:597,y:148},"\\hbar":{x:634,y:148},"\\hslash":{x:671,y:148},"\\mho":{x:708,y:148},"\\wp":{x:745,y:148},"\\circledS":{x:782,y:148},"\\Bbbk":{x:819,y:148},"\\Finv":{x:856,y:148},"\\Game":{x:893,y:148},"\\Im":{x:930,y:148},"\\Re":{x:967,y:148},"\\updownarrow":{x:1004,y:148},"\\Leftarrow":{x:1041,y:148},"\\Rightarrow":{x:1078,y:148},"\\Uparrow":{x:5,y:185},"\\Downarrow":{x:42,y:185},"\\Leftrightarrow":{x:79,y:185},"\\Updownarrow":{x:116,y:185},"\\longleftarrow":{x:153,y:185},"\\longrightarrow":{x:190,y:185},"\\longleftrightarrow":{x:227,y:185},"\\Longleftarrow":{x:264,y:185},"\\Longrightarrow":{x:301,y:185},"\\Longleftrightarrow":{x:338,y:185},"\\nearrow":{x:375,y:185},"\\nwarrow":{x:412,y:185},"\\searrow":{x:449,y:185},"\\swarrow":{x:486,y:185},"\\nleftarrow":{x:523,y:185},"\\nrightarrow":{x:560,y:185},"\\nLeftarrow":{x:597,y:185},"\\nRightarrow":{x:634,y:185},"\\nLeftrightarrow":{x:671,y:185},"\\leftharpoonup":{x:708,y:185},"\\leftharpoondown":{x:745,y:185},"\\rightharpoonup":{x:782,y:185},"\\rightharpoondown":{x:819,y:185},"\\upharpoonleft":{x:856,y:185},"\\upharpoonright":{x:893,y:185},"\\downharpoonleft":{x:930,y:185},"\\downharpoonright":{x:967,y:185},"\\leftrightharpoons":{x:1004,y:185},"\\rightleftharpoons":{x:1041,y:185},"\\leftleftarrows":{x:1078,y:185},"\\rightrightarrows":{x:5,y:222},"\\upuparrows":{x:42,y:222},"\\downdownarrows":{x:79,y:222},"\\leftrightarrows":{x:116,y:222},"\\rightleftarrows":{x:153,y:222},"\\looparrowleft":{x:190,y:222},"\\looparrowright":{x:227,y:222},"\\leftarrowtail":{x:264,y:222},"\\rightarrowtail":{x:301,y:222},"\\Lsh":{x:338,y:222},"\\Rsh":{x:375,y:222},"\\Lleftarrow":{x:412,y:222},"\\Rrightarrow":{x:449,y:222},"\\curvearrowleft":{x:486,y:222},"\\curvearrowright":{x:523,y:222},"\\circlearrowleft":{x:560,y:222},"\\circlearrowright":{x:597,y:222},"\\multimap":{x:634,y:222},"\\leftrightsquigarrow":{x:671,y:222},"\\twoheadleftarrow":{x:708,y:222},"\\twoheadrightarrow":{x:745,y:222},"\\rightsquigarrow":{x:782,y:222},"\\mathcal{A}":{x:819,y:222},"\\mathcal{B}":{x:856,y:222},"\\mathcal{C}":{x:893,y:222},"\\mathcal{D}":{x:930,y:222},"\\mathcal{E}":{x:967,y:222},"\\mathcal{F}":{x:1004,y:222},"\\mathcal{G}":{x:1041,y:222},"\\mathcal{H}":{x:1078,y:222},"\\mathcal{I}":{x:5,y:259},"\\mathcal{J}":{x:42,y:259},"\\mathcal{K}":{x:79,y:259},"\\mathcal{L}":{x:116,y:259},"\\mathcal{M}":{x:153,y:259},"\\mathcal{N}":{x:190,y:259},"\\mathcal{O}":{x:227,y:259},"\\mathcal{P}":{x:264,y:259},"\\mathcal{Q}":{x:301,y:259},"\\mathcal{R}":{x:338,y:259},"\\mathcal{S}":{x:375,y:259},"\\mathcal{T}":{x:412,y:259},"\\mathcal{U}":{x:449,y:259},"\\mathcal{V}":{x:486,y:259},"\\mathcal{W}":{x:523,y:259},"\\mathcal{X}":{x:560,y:259},"\\mathcal{Y}":{x:597,y:259},"\\mathcal{Z}":{x:634,y:259},"\\mathfrak{A}":{x:671,y:259},"\\mathfrak{B}":{x:708,y:259},"\\mathfrak{C}":{x:745,y:259},"\\mathfrak{D}":{x:782,y:259},"\\mathfrak{E}":{x:819,y:259},"\\mathfrak{F}":{x:856,y:259},"\\mathfrak{G}":{x:893,y:259},"\\mathfrak{H}":{x:930,y:259},"\\mathfrak{I}":{x:967,y:259},"\\mathfrak{J}":{x:1004,y:259},"\\mathfrak{K}":{x:1041,y:259},"\\mathfrak{L}":{x:1078,y:259},"\\mathfrak{M}":{x:5,y:296},"\\mathfrak{N}":{x:42,y:296},"\\mathfrak{O}":{x:79,y:296},"\\mathfrak{P}":{x:116,y:296},"\\mathfrak{Q}":{x:153,y:296},"\\mathfrak{R}":{x:190,y:296},"\\mathfrak{S}":{x:227,y:296},"\\mathfrak{T}":{x:264,y:296},"\\mathfrak{U}":{x:301,y:296},"\\mathfrak{V}":{x:338,y:296},"\\mathfrak{W}":{x:375,y:296},"\\mathfrak{X}":{x:412,y:296},"\\mathfrak{Y}":{x:449,y:296},"\\mathfrak{Z}":{x:486,y:296},"\\mathfrak{a}":{x:523,y:296},"\\mathfrak{b}":{x:560,y:296},"\\mathfrak{c}":{x:597,y:296},"\\mathfrak{d}":{x:634,y:296},"\\mathfrak{e}":{x:671,y:296},"\\mathfrak{f}":{x:708,y:296},"\\mathfrak{g}":{x:745,y:296},"\\mathfrak{h}":{x:782,y:296},"\\mathfrak{i}":{x:819,y:296},"\\mathfrak{j}":{x:856,y:296},"\\mathfrak{k}":{x:893,y:296},"\\mathfrak{l}":{x:930,y:296},"\\mathfrak{m}":{x:967,y:296},"\\mathfrak{n}":{x:1004,y:296},"\\mathfrak{o}":{x:1041,y:296},"\\mathfrak{p}":{x:1078,y:296},"\\mathfrak{q}":{x:5,y:333},"\\mathfrak{r}":{x:42,y:333},"\\mathfrak{s}":{x:79,y:333},"\\mathfrak{t}":{x:116,y:333},"\\mathfrak{u}":{x:153,y:333},"\\mathfrak{v}":{x:190,y:333},"\\mathfrak{w}":{x:227,y:333},"\\mathfrak{x}":{x:264,y:333},"\\mathfrak{y}":{x:301,y:333},"\\mathfrak{z}":{x:338,y:333},"\\mathbb{A}":{x:375,y:333},"\\mathbb{B}":{x:412,y:333},"\\mathbb{C}":{x:449,y:333},"\\mathbb{D}":{x:486,y:333},"\\mathbb{E}":{x:523,y:333},"\\mathbb{F}":{x:560,y:333},"\\mathbb{G}":{x:597,y:333},"\\mathbb{H}":{x:634,y:333},"\\mathbb{I}":{x:671,y:333},"\\mathbb{J}":{x:708,y:333},"\\mathbb{K}":{x:745,y:333},"\\mathbb{L}":{x:782,y:333},"\\mathbb{M}":{x:819,y:333},"\\mathbb{N}":{x:856,y:333},"\\mathbb{O}":{x:893,y:333},"\\mathbb{P}":{x:930,y:333},"\\mathbb{Q}":{x:967,y:333},"\\mathbb{R}":{x:1004,y:333},"\\mathbb{S}":{x:1041,y:333},"\\mathbb{T}":{x:1078,y:333},"\\mathbb{U}":{x:5,y:370},"\\mathbb{V}":{x:42,y:370},"\\mathbb{W}":{x:79,y:370},"\\mathbb{X}":{x:116,y:370},"\\mathbb{Y}":{x:153,y:370},"\\mathbb{Z}":{x:190,y:370},"\\mathrm{A}":{x:227,y:370},"\\mathrm{B}":{x:264,y:370},"\\mathrm{C}":{x:301,y:370},"\\mathrm{D}":{x:338,y:370},"\\mathrm{E}":{x:375,y:370},"\\mathrm{F}":{x:412,y:370},"\\mathrm{G}":{x:449,y:370},"\\mathrm{H}":{x:486,y:370},"\\mathrm{I}":{x:523,y:370},"\\mathrm{J}":{x:560,y:370},"\\mathrm{K}":{x:597,y:370},"\\mathrm{L}":{x:634,y:370},"\\mathrm{M}":{x:671,y:370},"\\mathrm{N}":{x:708,y:370},"\\mathrm{O}":{x:745,y:370},"\\mathrm{P}":{x:782,y:370},"\\mathrm{Q}":{x:819,y:370},"\\mathrm{R}":{x:856,y:370},"\\mathrm{S}":{x:893,y:370},"\\mathrm{T}":{x:930,y:370},"\\mathrm{U}":{x:967,y:370},"\\mathrm{V}":{x:1004,y:370},"\\mathrm{W}":{x:1041,y:370},"\\mathrm{X}":{x:1078,y:370},"\\mathrm{Y}":{x:5,y:407},"\\mathrm{Z}":{x:42,y:407},"\\mathrm{a}":{x:79,y:407},"\\mathrm{b}":{x:116,y:407},"\\mathrm{c}":{x:153,y:407},"\\mathrm{d}":{x:190,y:407},"\\mathrm{e}":{x:227,y:407},"\\mathrm{f}":{x:264,y:407},"\\mathrm{g}":{x:301,y:407},"\\mathrm{h}":{x:338,y:407},"\\mathrm{i}":{x:375,y:407},"\\mathrm{j}":{x:412,y:407},"\\mathrm{k}":{x:449,y:407},"\\mathrm{l}":{x:486,y:407},"\\mathrm{m}":{x:523,y:407},"\\mathrm{n}":{x:560,y:407},"\\mathrm{o}":{x:597,y:407},"\\mathrm{p}":{x:634,y:407},"\\mathrm{q}":{x:671,y:407},"\\mathrm{r}":{x:708,y:407},"\\mathrm{s}":{x:745,y:407},"\\mathrm{t}":{x:782,y:407},"\\mathrm{u}":{x:819,y:407},"\\mathrm{v}":{x:856,y:407},"\\mathrm{w}":{x:893,y:407},"\\mathrm{x}":{x:930,y:407},"\\mathrm{y}":{x:967,y:407},"\\mathrm{z}":{x:1004,y:407}}}},b[31]={value:function(){var a=b.r(4),c=b.r(20),d={min:1,max:2},e=c.createClass("ScrollZoomController",{constructor:function(b,c,e,f){this.kfEditor=c,this.target=e,this.zoom=1,this.step=.05,this.options=a.extend({},d,f),this.initEvent()},initEvent:function(){var b=this.kfEditor,c=this,d=this.options.min,e=this.options.max,f=this.step;a.addEvent(this.target,"mousewheel",function(a){a.preventDefault(),a.wheelDelta<0?c.zoom-=c.zoom*f:c.zoom+=c.zoom*f,c.zoom=Math.max(c.zoom,d),c.zoom=Math.min(c.zoom,e),b.requestService("render.set.canvas.zoom",c.zoom)})}});return e}},b[32]={value:function(){return{VIEW_STATE:{NO_OVERFLOW:0,OVERFLOW:1},scrollbar:{step:50,thumbMinSize:50}}}},b[33]={value:function(){return{"x=\\frac {-b\\pm\\sqrt {b^2-4ac}}{2a}":{pos:{x:0,y:0},size:{width:310,height:73}},"{\\placeholder/\\placeholder}":{pos:{x:315,y:0},size:{width:56,height:75}},"\\frac \\placeholder\\placeholder":{pos:{x:376,y:0},size:{width:56,height:75}},"a^2+b^2=c^2":{pos:{x:437,y:0},size:{width:310,height:73}},"{\\left(x+a\\right)}^2=\\sum^n_{k=0}{\\left(^n_k\\right)x^ka^{n-k}}":{pos:{x:752,y:0},size:{width:310,height:73}},"\\frac {dy}{dx}":{pos:{x:1067,y:0},size:{width:56,height:75}},"\\frac {\\Delta y}{\\Delta x}":{pos:{x:1128,y:0},size:{width:56,height:75}},"\\frac {\\delta y}{\\delta x}":{pos:{x:1189,y:0},size:{width:56,height:75}},"\\frac \\pi 2":{pos:{x:1250,y:0},size:{width:56,height:75}},"\\placeholder^\\placeholder":{pos:{x:1311,y:0},size:{width:56,height:75}},"\\placeholder^\\placeholder_\\placeholder":{pos:{x:1372,y:0},size:{width:56,height:75}},"\\placeholder_\\placeholder":{pos:{x:1433,y:0},size:{width:56,height:75}},"{^\\placeholder_\\placeholder\\placeholder}":{pos:{x:1494,y:0},size:{width:56,height:75}},"e^{-i\\omega t}":{pos:{x:1555,y:0},size:{width:56,height:75}},"x^2":{pos:{x:1616,y:0},size:{width:56,height:75}},"{}^n_1Y":{pos:{x:1677,y:0},size:{width:56,height:75}},"\\sqrt \\placeholder":{pos:{x:1738,y:0},size:{width:56,height:75}},"\\sqrt [\\placeholder] \\placeholder":{pos:{x:1799,y:0},size:{width:56,height:75}},"\\sqrt [2] \\placeholder":{pos:{x:1860,y:0},size:{width:56,height:75}},"\\sqrt [3] \\placeholder":{pos:{x:1921,y:0},size:{width:56,height:75}},"\\frac {-b\\pm\\sqrt{b^2-4ac}}{2a}":{pos:{x:1982,y:0},size:{width:137,height:75}},"\\sqrt {a^2+b^2}":{pos:{x:2124,y:0},size:{width:137,height:75}},"\\int \\placeholder":{pos:{x:2266,y:0},size:{width:56,height:75}},"\\int^\\placeholder_\\placeholder\\placeholder":{pos:{x:2327,y:0},size:{width:56,height:75}},"\\iint\\placeholder":{pos:{x:2388,y:0},size:{width:56,height:75}},"\\iint^\\placeholder_\\placeholder\\placeholder":{pos:{x:2449,y:0},size:{width:56,height:75}},"\\iiint\\placeholder":{pos:{x:2510,y:0},size:{width:56,height:75}},"\\iiint^\\placeholder_\\placeholder\\placeholder":{pos:{x:2571,y:0},size:{width:56,height:75}},"\\sum\\placeholder":{pos:{x:2632,y:0},size:{width:56,height:75}},"\\sum^\\placeholder_\\placeholder\\placeholder":{pos:{x:2693,y:0},size:{width:56,height:75}},"\\sum_\\placeholder\\placeholder":{pos:{x:2754,y:0},size:{width:56,height:75}},"\\left(\\placeholder\\right)":{pos:{x:2815,y:0},size:{width:56,height:75}},"\\left[\\placeholder\\right]":{pos:{x:2876,y:0},size:{width:56,height:75}},"\\left\\{\\placeholder\\right\\}":{pos:{x:2937,y:0},size:{width:56,height:75}},"\\left|\\placeholder\\right|":{pos:{x:2998,y:0},size:{width:56,height:75}},"\\sin\\placeholder":{pos:{x:3059,y:0},size:{width:56,height:75}},"\\cos\\placeholder":{pos:{x:3120,y:0},size:{width:56,height:75}},"\\tan\\placeholder":{pos:{x:3181,y:0},size:{width:56,height:75}},"\\csc\\placeholder":{pos:{x:3242,y:0},size:{width:56,height:75}},"\\sec\\placeholder":{pos:{x:3303,y:0},size:{width:56,height:75}},"\\cot\\placeholder":{pos:{x:3364,y:0},size:{width:56,height:75}},"\\sin\\theta":{pos:{x:3425,y:0},size:{width:56,height:75}},"\\cos{2x}":{pos:{x:3486,y:0},size:{width:56,height:75}},"\\tan\\theta=\\frac {\\sin\\theta}{\\cos\\theta}":{pos:{x:3547,y:0},size:{width:137,height:75}}}}},b[34]={value:function(){function a(a){var b=[],c=a.path,d=a.values;return e.Utils.each(d,function(a){var d=a,e=a;"string"!=typeof a?(d=a.img,e=a.key):e="\\"+a,b.push({item:{show:""+c+d.toLowerCase()+".png",val:e}})}),b}var c=b.r(41),d=b.r(40),e=b.r(20),f=[{type:c.DRAPDOWN_BOX,options:{button:{label:"\u9884\u8bbe
    ",className:"yushe-btn",icon:"assets/images/toolbar/button/fx.png",iconSize:{w:40}},box:{width:367,group:[{title:"\u9884\u8bbe\u516c\u5f0f",items:[{title:"\u9884\u8bbe\u516c\u5f0f",content:[{label:"\u4e8c\u6b21\u516c\u5f0f",item:{show:"assets/images/toolbar/ys/1.png",val:"x=\\frac {-b\\pm\\sqrt {b^2-4ac}}{2a}"}},{label:"\u4e8c\u9879\u5f0f\u5b9a\u7406",item:{show:"assets/images/toolbar/ys/2.png",val:"{\\left(x+a\\right)}^2=\\sum^n_{k=0}{\\left(^n_k\\right)x^ka^{n-k}}"}},{label:"\u52fe\u80a1\u5b9a\u7406",item:{show:"assets/images/toolbar/ys/3.png",val:"a^2+b^2=c^2"}}]}]}]}}},{type:c.DELIMITER},{type:c.AREA,options:{box:{fixOffset:!0,width:527,type:d.OVERLAP,group:[{title:"\u57fa\u7840\u6570\u5b66",items:[]},{title:"\u5e0c\u814a\u5b57\u6bcd",items:[]},{title:"\u6c42\u53cd\u5173\u7cfb\u8fd0\u7b97\u7b26",items:[]},{title:"\u5b57\u6bcd\u7c7b\u7b26\u53f7",items:[]},{title:"\u7bad\u5934",items:[]},{title:"\u624b\u5199\u4f53",items:[]}]}}},{type:c.DELIMITER},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u5206\u6570
    ",icon:"assets/images/toolbar/button/frac.png"},box:{width:332,group:[{title:"\u5206\u6570",items:[{title:"\u5206\u6570",content:[{item:{show:"assets/images/toolbar/frac/1.png",val:"\\frac \\placeholder\\placeholder"}},{item:{show:"assets/images/toolbar/frac/2.png",val:"{\\placeholder/\\placeholder}"}}]},{title:"\u5e38\u7528\u5206\u6570",content:[{item:{show:"assets/images/toolbar/frac/c1.png",val:"\\frac {dy}{dx}"}},{item:{show:"assets/images/toolbar/frac/c2.png",val:"\\frac {\\Delta y}{\\Delta x}"}},{item:{show:"assets/images/toolbar/frac/c4.png",val:"\\frac {\\delta y}{\\delta x}"}},{item:{show:"assets/images/toolbar/frac/c5.png",val:"\\frac \\pi 2"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u4e0a\u4e0b\u6807
    ",icon:"assets/images/toolbar/button/script.png"},box:{width:332,group:[{title:"\u4e0a\u6807\u548c\u4e0b\u6807",items:[{title:"\u4e0a\u6807\u548c\u4e0b\u6807",content:[{item:{show:"assets/images/toolbar/script/1.png",val:"\\placeholder^\\placeholder"}},{item:{show:"assets/images/toolbar/script/2.png",val:"\\placeholder_\\placeholder"}},{item:{show:"assets/images/toolbar/script/3.png",val:"\\placeholder^\\placeholder_\\placeholder"}},{item:{show:"assets/images/toolbar/script/4.png",val:"{^\\placeholder_\\placeholder\\placeholder}"}}]},{title:"\u5e38\u7528\u7684\u4e0a\u6807\u548c\u4e0b\u6807",content:[{item:{show:"assets/images/toolbar/script/c1.png",val:"e^{-i\\omega t}"}},{item:{show:"assets/images/toolbar/script/c2.png",val:"x^2"}},{item:{show:"assets/images/toolbar/script/c3.png",val:"{}^n_1Y"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u6839\u5f0f
    ",icon:"assets/images/toolbar/button/sqrt.png"},box:{width:342,group:[{title:"\u6839\u5f0f",items:[{title:"\u6839\u5f0f",content:[{item:{show:"assets/images/toolbar/sqrt/1.png",val:"\\sqrt \\placeholder"}},{item:{show:"assets/images/toolbar/sqrt/2.png",val:"\\sqrt [\\placeholder] \\placeholder"}},{item:{show:"assets/images/toolbar/sqrt/3.png",val:"\\sqrt [2] \\placeholder"}},{item:{show:"assets/images/toolbar/sqrt/4.png",val:"\\sqrt [3] \\placeholder"}}]},{title:"\u5e38\u7528\u6839\u5f0f",content:[{item:{show:"assets/images/toolbar/sqrt/c1.png",val:"\\frac {-b\\pm\\sqrt{b^2-4ac}}{2a}"}},{item:{show:"assets/images/toolbar/sqrt/c2.png",val:"\\sqrt {a^2+b^2}"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u79ef\u5206
    ",icon:"assets/images/toolbar/button/int.png"},box:{width:332,group:[{title:"\u79ef\u5206",items:[{title:"\u79ef\u5206",content:[{item:{show:"assets/images/toolbar/int/1.png",val:"\\int \\placeholder"}},{item:{show:"assets/images/toolbar/int/2.png",val:"\\int^\\placeholder_\\placeholder\\placeholder"}},{item:{show:"assets/images/toolbar/int/3.png",val:"\\iint\\placeholder"}},{item:{show:"assets/images/toolbar/int/4.png",val:"\\iint^\\placeholder_\\placeholder\\placeholder"}},{item:{show:"assets/images/toolbar/int/5.png",val:"\\iiint\\placeholder"}},{item:{show:"assets/images/toolbar/int/6.png",val:"\\iiint^\\placeholder_\\placeholder\\placeholder"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u5927\u578b
    \u8fd0\u7b97\u7b26",icon:"assets/images/toolbar/button/sum.png"},box:{width:332,group:[{title:"\u6c42\u548c",items:[{title:"\u6c42\u548c",content:[{item:{show:"assets/images/toolbar/large/1.png",val:"\\sum\\placeholder"}},{item:{show:"assets/images/toolbar/large/2.png",val:"\\sum^\\placeholder_\\placeholder\\placeholder"}},{item:{show:"assets/images/toolbar/large/3.png",val:"\\sum_\\placeholder\\placeholder"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u62ec\u53f7
    ",icon:"assets/images/toolbar/button/brackets.png"},box:{width:332,group:[{title:"\u65b9\u62ec\u53f7",items:[{title:"\u65b9\u62ec\u53f7",content:[{item:{show:"assets/images/toolbar/brackets/1.png",val:"\\left(\\placeholder\\right)"}},{item:{show:"assets/images/toolbar/brackets/2.png",val:"\\left[\\placeholder\\right]"}},{item:{show:"assets/images/toolbar/brackets/3.png",val:"\\left\\{\\placeholder\\right\\}"}},{item:{show:"assets/images/toolbar/brackets/4.png",val:"\\left|\\placeholder\\right|"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u51fd\u6570
    ",icon:"assets/images/toolbar/button/sin.png"},box:{width:340,group:[{title:"\u51fd\u6570",items:[{title:"\u4e09\u89d2\u51fd\u6570",content:[{item:{show:"assets/images/toolbar/func/1.png",val:"\\sin\\placeholder"}},{item:{show:"assets/images/toolbar/func/2.png",val:"\\cos\\placeholder"}},{item:{show:"assets/images/toolbar/func/3.png",val:"\\tan\\placeholder"}},{item:{show:"assets/images/toolbar/func/4.png",val:"\\csc\\placeholder"}},{item:{show:"assets/images/toolbar/func/5.png",val:"\\sec\\placeholder"}},{item:{show:"assets/images/toolbar/func/6.png",val:"\\cot\\placeholder"}}]},{title:"\u5e38\u7528\u51fd\u6570",content:[{item:{show:"assets/images/toolbar/func/c1.png",val:"\\sin\\theta"}},{item:{show:"assets/images/toolbar/func/c2.png",val:"\\sin{2x}"}},{item:{show:"assets/images/toolbar/func/c3.png",val:"\\tan\\theta=\\frac {\\sin\\theta}{\\cos\\theta}"}}]}]}]}}}]; +return function(){var b=["pm","infty",{key:"=",img:"eq"},"sim","times","div",{key:"!",img:"tanhao"},{key:"<",img:"lt"},"ll",{key:">",img:"gt"},"gg","leq","geq","mp","cong","equiv","propto","approx","forall","partial","surd","cup","cap","varnothing",{key:"%",img:"baifenhao"},"circ","exists","nexists","in","ni","gets","uparrow","to","downarrow","leftrightarrow","therefore","because",{key:"+",img:"plus"},{key:"-",img:"minus"},"neg","ast","cdot","vdots","ddots","aleph","beth","blacksquare"],c=f[2].options.box.group[0].items;c.push({title:"\u57fa\u7840\u6570\u5b66",content:a({path:"assets/images/toolbar/char/math/",values:b})})}(),function(){var b=[{title:"\u5c0f\u5199",values:["alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigma","tau","upsilon","phi","chi","psi","omega"]},{title:"\u5927\u5199",values:["Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega"]},{title:"\u53d8\u4f53",values:["digamma","varepsilon","varkappa","varphi","varpi","varrho","varsigma","vartheta"]}],c=f[2].options.box.group[1].items;c.push({title:b[0].title,content:a({path:"assets/images/toolbar/char/greek/lower/",values:b[0].values})}),c.push({title:b[1].title,content:a({path:"assets/images/toolbar/char/greek/upper/",values:b[1].values})}),c.push({title:b[2].title,content:a({path:"assets/images/toolbar/char/greek/misc/",values:b[2].values})})}(),function(){var b=[{title:"\u6c42\u53cd\u5173\u7cfb\u8fd0\u7b97\u7b26",values:["neq","nless","ngtr","nleq","ngeq","nsim","lneqq","gneqq","nprec","nsucc","notin","nsubseteq","nsupseteq","subsetneq","supsetneq","lnsim","gnsim","precnsim","succnsim","ntriangleleft","ntriangleright","ntrianglelefteq","ntrianglerighteq","nmid","nparallel","nvdash",{key:"\\nVdash",img:"nvdash-1"},{key:"\\nvDash",img:"nvdash-2"},{key:"\\nVDash",img:"nvdash-3"},"nexists"]}],c=f[2].options.box.group[2].items;c.push({title:b[0].title,content:a({path:"assets/images/toolbar/char/not/",values:b[0].values})})}(),function(){var b=["aleph","beth","daleth","gimel","complement","ell","eth","hbar","hslash","mho","partial","wp","circledS","Bbbk","Finv","Game","Im","Re"],c=f[2].options.box.group[3].items;c.push({title:"\u5b57\u6bcd\u7c7b\u7b26\u53f7",content:a({path:"assets/images/toolbar/alphabetic/",values:b})})}(),function(){var b=["gets","to","uparrow","downarrow","leftrightarrow","updownarrow",{key:"\\Leftarrow",img:"u-leftarrow"},{key:"\\Rightarrow",img:"u-rightarrow"},{key:"\\Uparrow",img:"u-uparrow"},{key:"\\Downarrow",img:"u-downarrow"},{key:"\\Leftrightarrow",img:"u-leftrightarrow"},{key:"\\Updownarrow",img:"u-updownarrow"},"longleftarrow","longrightarrow","longleftrightarrow",{key:"\\Longleftarrow",img:"u-longleftarrow"},{key:"\\Longrightarrow",img:"u-longrightarrow"},{key:"\\Longleftrightarrow",img:"u-longleftrightarrow"},"nearrow","nwarrow","searrow","swarrow","nleftarrow","nrightarrow",{key:"\\nLeftarrow",img:"u-nleftarrow"},{key:"\\nRightarrow",img:"u-nrightarrow"},{key:"\\nLeftrightarrow",img:"u-nleftrightarrow"},"leftharpoonup","leftharpoondown","rightharpoonup","rightharpoondown","upharpoonleft","upharpoonright","downharpoonleft","downharpoonright","leftrightharpoons","rightleftharpoons","leftleftarrows","rightrightarrows","upuparrows","downdownarrows","leftrightarrows","rightleftarrows","looparrowleft","looparrowright","leftarrowtail","rightarrowtail",{key:"\\Lsh",img:"u-lsh"},{key:"\\Rsh",img:"u-rsh"},{key:"\\Lleftarrow",img:"u-lleftarrow"},{key:"\\Rrightarrow",img:"u-rrightarrow"},"curvearrowleft","curvearrowright","circlearrowleft","circlearrowright","multimap","leftrightsquigarrow","twoheadleftarrow","twoheadrightarrow","rightsquigarrow"],c=f[2].options.box.group[4].items;c.push({title:"\u7bad\u5934",content:a({path:"assets/images/toolbar/arrow/",values:b})})}(),function(){var b=[{title:"\u624b\u5199\u4f53",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]},{title:"\u82b1\u4f53",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]},{title:"\u53cc\u7ebf",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]},{title:"\u7f57\u9a6c",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]}],c=f[2].options.box.group[5].items;e.Utils.each(b[0].values,function(a,c){b[0].values[c]={key:"\\mathcal{"+a+"}",img:a.toLowerCase()}}),e.Utils.each(b[1].values,function(a,c){b[1].values[c]={key:"\\mathfrak{"+a+"}",img:a.replace(/[A-Z]/,function(a){return"u"+a.toLowerCase()})}}),e.Utils.each(b[2].values,function(a,c){b[2].values[c]={key:"\\mathbb{"+a+"}",img:a.toLowerCase()}}),e.Utils.each(b[3].values,function(a,c){b[3].values[c]={key:"\\mathrm{"+a+"}",img:a.replace(/[A-Z]/,function(a){return"u"+a.toLowerCase()})}}),c.push({title:b[0].title,content:a({path:"assets/images/toolbar/char/cal/",values:b[0].values})}),c.push({title:b[1].title,content:a({path:"assets/images/toolbar/char/frak/",values:b[1].values})}),c.push({title:b[2].title,content:a({path:"assets/images/toolbar/char/bb/",values:b[2].values})}),c.push({title:b[3].title,content:a({path:"assets/images/toolbar/char/rm/",values:b[3].values})})}(),window.iconConfig=f,f}},b[35]={value:function(){function a(a,b){var c=[];return g.Utils.each(a,function(a){a.length>1&&(a="\\"+a),c.push({key:a,img:b,pos:e[a]})}),c}var c=b.r(41),d=b.r(40),e=b.r(30),f=b.r(33),g=b.r(20),h=[{type:c.DRAPDOWN_BOX,options:{button:{label:"\u9884\u8bbe
    ",className:"yushe-btn",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:0,y:0},iconSize:{w:40}},box:{width:367,group:[{title:"\u9884\u8bbe\u516c\u5f0f",items:[{title:"\u9884\u8bbe\u516c\u5f0f",content:[{label:"\u4e8c\u6b21\u516c\u5f0f",item:{val:"x=\\frac {-b\\pm\\sqrt {b^2-4ac}}{2a}"}},{label:"\u4e8c\u9879\u5f0f\u5b9a\u7406",item:{val:"{\\left(x+a\\right)}^2=\\sum^n_{k=0}{\\left(^n_k\\right)x^ka^{n-k}}"}},{label:"\u52fe\u80a1\u5b9a\u7406",item:{val:"a^2+b^2=c^2"}}]}]}]}}},{type:c.DELIMITER},{type:c.AREA,options:{box:{fixOffset:!0,width:527,type:d.OVERLAP,group:[{title:"\u57fa\u7840\u6570\u5b66",items:[]},{title:"\u5e0c\u814a\u5b57\u6bcd",items:[]},{title:"\u6c42\u53cd\u5173\u7cfb\u8fd0\u7b97\u7b26",items:[]},{title:"\u5b57\u6bcd\u7c7b\u7b26\u53f7",items:[]},{title:"\u7bad\u5934",items:[]},{title:"\u624b\u5199\u4f53",items:[]}]}}},{type:c.DELIMITER},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u5206\u6570
    ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:45,y:0}},box:{width:332,group:[{title:"\u5206\u6570",items:[{title:"\u5206\u6570",content:[{item:{val:"\\frac \\placeholder\\placeholder"}},{item:{val:"{\\placeholder/\\placeholder}"}}]},{title:"\u5e38\u7528\u5206\u6570",content:[{item:{val:"\\frac {dy}{dx}"}},{item:{val:"\\frac {\\Delta y}{\\Delta x}"}},{item:{val:"\\frac {\\delta y}{\\delta x}"}},{item:{val:"\\frac \\pi 2"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u4e0a\u4e0b\u6807
    ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:82,y:0}},box:{width:332,group:[{title:"\u4e0a\u6807\u548c\u4e0b\u6807",items:[{title:"\u4e0a\u6807\u548c\u4e0b\u6807",content:[{item:{val:"\\placeholder^\\placeholder"}},{item:{val:"\\placeholder_\\placeholder"}},{item:{val:"\\placeholder^\\placeholder_\\placeholder"}},{item:{val:"{^\\placeholder_\\placeholder\\placeholder}"}}]},{title:"\u5e38\u7528\u7684\u4e0a\u6807\u548c\u4e0b\u6807",content:[{item:{val:"e^{-i\\omega t}"}},{item:{val:"x^2"}},{item:{val:"{}^n_1Y"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u6839\u5f0f
    ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:119,y:0}},box:{width:342,group:[{title:"\u6839\u5f0f",items:[{title:"\u6839\u5f0f",content:[{item:{val:"\\sqrt \\placeholder"}},{item:{val:"\\sqrt [\\placeholder] \\placeholder"}},{item:{val:"\\sqrt [2] \\placeholder"}},{item:{val:"\\sqrt [3] \\placeholder"}}]},{title:"\u5e38\u7528\u6839\u5f0f",content:[{item:{val:"\\frac {-b\\pm\\sqrt{b^2-4ac}}{2a}"}},{item:{val:"\\sqrt {a^2+b^2}"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u79ef\u5206
    ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:156,y:0}},box:{width:332,group:[{title:"\u79ef\u5206",items:[{title:"\u79ef\u5206",content:[{item:{val:"\\int \\placeholder"}},{item:{val:"\\int^\\placeholder_\\placeholder\\placeholder"}},{item:{val:"\\iint\\placeholder"}},{item:{val:"\\iint^\\placeholder_\\placeholder\\placeholder"}},{item:{val:"\\iiint\\placeholder"}},{item:{val:"\\iiint^\\placeholder_\\placeholder\\placeholder"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u5927\u578b
    \u8fd0\u7b97\u7b26",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:193,y:0}},box:{width:332,group:[{title:"\u6c42\u548c",items:[{title:"\u6c42\u548c",content:[{item:{val:"\\sum\\placeholder"}},{item:{val:"\\sum^\\placeholder_\\placeholder\\placeholder"}},{item:{val:"\\sum_\\placeholder\\placeholder"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u62ec\u53f7
    ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:230,y:0}},box:{width:332,group:[{title:"\u65b9\u62ec\u53f7",items:[{title:"\u65b9\u62ec\u53f7",content:[{item:{val:"\\left(\\placeholder\\right)"}},{item:{val:"\\left[\\placeholder\\right]"}},{item:{val:"\\left\\{\\placeholder\\right\\}"}},{item:{val:"\\left|\\placeholder\\right|"}}]}]}]}}},{type:c.DRAPDOWN_BOX,options:{button:{label:"\u51fd\u6570
    ",icon:{src:"kityformula/assets/images/toolbar/btn.png",x:267,y:0}},box:{width:340,group:[{title:"\u51fd\u6570",items:[{title:"\u4e09\u89d2\u51fd\u6570",content:[{item:{val:"\\sin\\placeholder"}},{item:{val:"\\cos\\placeholder"}},{item:{val:"\\tan\\placeholder"}},{item:{val:"\\csc\\placeholder"}},{item:{val:"\\sec\\placeholder"}},{item:{val:"\\cot\\placeholder"}}]},{title:"\u5e38\u7528\u51fd\u6570",content:[{item:{val:"\\sin\\theta"}},{item:{val:"\\cos{2x}"}},{item:{val:"\\tan\\theta=\\frac {\\sin\\theta}{\\cos\\theta}"}}]}]}]}}}];return function(){var a=[],b="kityformula/assets/images/toolbar/other.png",d=[];g.Utils.each(h,function(b){b.type!==c.DELIMITER&&(b=b.options.box.group,a=a.concat(b))}),g.Utils.each(a,function(a){a=a.items;for(var b=0,c=a.length;c>b;b++)d=d.concat(a[b].content)}),g.Utils.each(d,function(a){var c=f[a.item.val];c&&(a.item.img=b,a.item.pos=c.pos,a.item.size=c.size)})}(),function(){var b=["pm","infty","=","sim","times","div","!","<","ll",">","gg","leq","geq","mp","cong","equiv","propto","approx","forall","partial","surd","cup","cap","varnothing","%","circ","exists","nexists","in","ni","gets","uparrow","to","downarrow","leftrightarrow","therefore","because","+","-","neg","ast","cdot","vdots","aleph","beth","blacksquare"],c=h[2].options.box.group[0].items;c.push({title:"\u57fa\u7840\u6570\u5b66",content:a(b,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=[{title:"\u5c0f\u5199",values:["alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigma","tau","upsilon","phi","chi","psi","omega"]},{title:"\u5927\u5199",values:["Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega"]},{title:"\u53d8\u4f53",values:["digamma","varepsilon","varkappa","varphi","varpi","varrho","varsigma","vartheta"]}],c=h[2].options.box.group[1].items;c.push({title:b[0].title,content:a(b[0].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[1].title,content:a(b[1].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[2].title,content:a(b[2].values,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=[{title:"\u6c42\u53cd\u5173\u7cfb\u8fd0\u7b97\u7b26",values:["neq","nless","ngtr","nleq","ngeq","nsim","lneqq","gneqq","nprec","nsucc","notin","nsubseteq","nsupseteq","subsetneq","supsetneq","lnsim","gnsim","precnsim","succnsim","ntriangleleft","ntriangleright","ntrianglelefteq","ntrianglerighteq","nmid","nparallel","nvdash","nVdash","nvDash","nVDash","nexists"]}],c=h[2].options.box.group[2].items;c.push({title:b[0].title,content:a(b[0].values,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=["aleph","beth","daleth","gimel","complement","ell","eth","hbar","hslash","mho","partial","wp","circledS","Bbbk","Finv","Game","Im","Re"],c=h[2].options.box.group[3].items;c.push({title:"\u5b57\u6bcd\u7c7b\u7b26\u53f7",content:a(b,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=["gets","to","uparrow","downarrow","leftrightarrow","updownarrow","Leftarrow","Rightarrow","Uparrow","Downarrow","Leftrightarrow","Updownarrow","longleftarrow","longrightarrow","longleftrightarrow","Longleftarrow","Longrightarrow","Longleftrightarrow","nearrow","nwarrow","searrow","swarrow","nleftarrow","nrightarrow","nLeftarrow","nRightarrow","nLeftrightarrow","leftharpoonup","leftharpoondown","rightharpoonup","rightharpoondown","upharpoonleft","upharpoonright","downharpoonleft","downharpoonright","leftrightharpoons","rightleftharpoons","leftleftarrows","rightrightarrows","upuparrows","downdownarrows","leftrightarrows","rightleftarrows","looparrowleft","looparrowright","leftarrowtail","rightarrowtail","Lsh","Rsh","Lleftarrow","Rrightarrow","curvearrowleft","curvearrowright","circlearrowleft","circlearrowright","multimap","leftrightsquigarrow","twoheadleftarrow","twoheadrightarrow","rightsquigarrow"],c=h[2].options.box.group[4].items;c.push({title:"\u7bad\u5934",content:a(b,"kityformula/assets/images/toolbar/char.png")})}(),function(){var b=[{title:"\u624b\u5199\u4f53",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]},{title:"\u82b1\u4f53",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]},{title:"\u53cc\u7ebf",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]},{title:"\u7f57\u9a6c",values:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]}],c=h[2].options.box.group[5].items;g.Utils.each(b[0].values,function(a,c){b[0].values[c]="mathcal{"+a+"}"}),g.Utils.each(b[1].values,function(a,c){b[1].values[c]="mathfrak{"+a+"}"}),g.Utils.each(b[2].values,function(a,c){b[2].values[c]="mathbb{"+a+"}"}),g.Utils.each(b[3].values,function(a,c){b[3].values[c]="mathrm{"+a+"}"}),c.push({title:b[0].title,content:a(b[0].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[1].title,content:a(b[1].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[2].title,content:a(b[2].values,"kityformula/assets/images/toolbar/char.png")}),c.push({title:b[3].title,content:a(b[3].values,"kityformula/assets/images/toolbar/char.png")})}(),h}},b[36]={value:function(){function a(a,b,f){switch(a){case i.DRAPDOWN_BOX:return c(b,f);case i.DELIMITER:return d(b);case i.AREA:return e(b,f)}}function c(a,b){return new g.DrapdownBox(a,b)}function d(a){return new g.Delimiter(a)}function e(a,b){return new g.Area(a,b)}var f=b.r(20),g=b.r(48),h=b.r(47),i=b.r(41),j=f.createClass("Tollbar",{constructor:function(a,b,c){this.kfEditor=b,this.uiComponent=a,this.elementList=c,this.elements=[],this.initToolbarElements(),this.initServices(),this.initEvent()},initServices:function(){this.kfEditor.registerService("ui.toolbar.disable",this,{disableToolbar:this.disableToolbar}),this.kfEditor.registerService("ui.toolbar.enable",this,{enableToolbar:this.enableToolbar}),this.kfEditor.registerService("ui.toolbar.close",this,{closeToolbar:this.closeToolbar})},initEvent:function(){var a=this;h.on(this.uiComponent.toolbarContainer,"mousedown",function(a){a.preventDefault()}),h.on(this.uiComponent.toolbarContainer,"mousewheel",function(a){a.preventDefault()}),h.on(this.kfEditor.getContainer(),"mousedown",function(){a.notify("closeAll")}),h.subscribe("data.select",function(b){a.insertSource(b)})},insertSource:function(a){this.kfEditor.requestService("control.insert.string",a)},disableToolbar:function(){f.Utils.each(this.elements,function(a){a.disable&&a.disable()})},enableToolbar:function(){f.Utils.each(this.elements,function(a){a.enable&&a.enable()})},getContainer:function(){return this.kfEditor.requestService("ui.get.canvas.container")},closeToolbar:function(){this.closeElement()},notify:function(a){switch(a){case"closeAll":case"closeOther":return void this.closeElement(arguments[1])}},closeElement:function(a){f.Utils.each(this.elements,function(b){b!=a&&b.hide&&b.hide()})},initToolbarElements:function(){var b=this.elements,c=this.uiComponent.toolbarContainer.ownerDocument,d=this;f.Utils.each(this.elementList,function(e){var f=a(e.type,c,e.options);b.push(f),d.appendElement(f)})},appendElement:function(a){a.setToolbar(this),a.attachTo(this.uiComponent.toolbarContainer)}});return j}},b[37]={value:function(){var a=b.r(20),c="kf-editor-ui-",d=66,e=b.r(47),f=b.r(38),g=a.createClass("Area",{constructor:function(a,b){this.options=b,this.doc=a,this.toolbar=null,this.disabled=!0,this.panelIndex=0,this.maxPanelIndex=0,this.currentItemCount=0,this.lineMaxCount=9,this.element=this.createArea(),this.container=this.createContainer(),this.panel=this.createPanel(),this.buttonContainer=this.createButtonContainer(),this.button=this.createButton(),this.mountPoint=this.createMountPoint(),this.moveDownButton=this.createMoveDownButton(),this.moveUpButton=this.createMoveUpButton(),this.boxObject=this.createBox(),this.mergeElement(),this.mount(),this.setListener(),this.initEvent()},initEvent:function(){var a=this;e.on(this.button,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),1!==b.which||a.disabled||(a.showMount(),a.toolbar.notify("closeOther",a))}),e.on(this.moveDownButton,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),1!==b.which||a.disabled||(a.nextPanel(),a.toolbar.notify("closeOther",a))}),e.on(this.moveUpButton,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),1!==b.which||a.disabled||(a.prevPanel(),a.toolbar.notify("closeOther",a))}),e.delegate(this.container,".kf-editor-ui-area-item","mousedown",function(b){b.preventDefault(),1!==b.which||a.disabled||e.publish("data.select",this.getAttribute("data-value"))}),this.boxObject.initEvent()},disable:function(){this.disabled=!0,this.boxObject.disable(),e.getClassList(this.element).remove(c+"enabled")},enable:function(){this.disabled=!1,this.boxObject.enable(),e.getClassList(this.element).add(c+"enabled")},setListener:function(){var a=this;this.boxObject.setSelectHandler(function(b){e.publish("data.select",b),a.hide()}),this.boxObject.setChangeHandler(function(){a.updateContent()})},createArea:function(){var a=e.ele(this.doc,"div",{className:c+"area"});return"width"in this.options&&(a.style.width=this.options.width+"px"),a},checkMaxPanelIndex:function(){this.maxPanelIndex=Math.ceil(this.currentItemCount/this.lineMaxCount/2)},updateContent:function(){var b=this.boxObject.getOverlapContent(),d=0,e=null,f=0,g=0,h=this.lineMaxCount,i=[];this.panel.innerHTML="",a.Utils.each(b,function(b){var j=b.content;a.Utils.each(j,function(a){f=Math.floor(d/h),g=d%h,d++,e="top: "+(33*f+5)+"px; left: "+(32*g+5)+"px;",i.push('
    ')})}),this.currentItemCount=d,this.panelIndex=0,this.panel.style.top=0,this.panel.innerHTML=i.join(""),this.checkMaxPanelIndex(),this.updatePanelButtonState()},mount:function(){this.boxObject.mountTo(this.mountPoint)},showMount:function(){this.mountPoint.style.display="block",this.boxObject.updateSize()},hideMount:function(){this.mountPoint.style.display="none"},hide:function(){this.hideMount(),this.boxObject.hide()},createButton:function(){return e.ele(this.doc,"div",{className:c+"area-button"})},createMoveDownButton:function(){return e.ele(this.doc,"div",{className:c+"movedown-button",content:""})},createMoveUpButton:function(){return e.ele(this.doc,"div",{className:c+"moveup-button",content:""})},createMountPoint:function(){return e.ele(this.doc,"div",{className:c+"area-mount"})},createBox:function(){return new f(this.doc,this.options.box)},createContainer:function(){return e.ele(this.doc,"div",{className:c+"area-container"})},createPanel:function(){return e.ele(this.doc,"div",{className:c+"area-panel"})},createButtonContainer:function(){return e.ele(this.doc,"div",{className:c+"area-button-container"})},mergeElement:function(){this.buttonContainer.appendChild(this.moveUpButton),this.buttonContainer.appendChild(this.moveDownButton),this.buttonContainer.appendChild(this.button),this.container.appendChild(this.panel),this.element.appendChild(this.container),this.element.appendChild(this.buttonContainer),this.element.appendChild(this.mountPoint)},disablePanelUp:function(){this.disabledUp=!0,e.getClassList(this.moveUpButton).add("kf-editor-ui-disabled")},enablePanelUp:function(){this.disabledUp=!1,e.getClassList(this.moveUpButton).remove("kf-editor-ui-disabled")},disablePanelDown:function(){this.disabledDown=!0,e.getClassList(this.moveDownButton).add("kf-editor-ui-disabled")},enablePanelDown:function(){this.disabledDown=!1,e.getClassList(this.moveDownButton).remove("kf-editor-ui-disabled")},updatePanelButtonState:function(){0===this.panelIndex?this.disablePanelUp():this.enablePanelUp(),this.panelIndex+1>=this.maxPanelIndex?this.disablePanelDown():this.enablePanelDown()},nextPanel:function(){this.disabledDown||this.panelIndex+1>=this.maxPanelIndex||(this.panelIndex++,this.panel.style.top=-this.panelIndex*d+"px",this.updatePanelButtonState())},prevPanel:function(){this.disabledUp||0!==this.panelIndex&&(this.panelIndex--,this.panel.style.top=-this.panelIndex*d+"px",this.updatePanelButtonState())},setToolbar:function(a){this.toolbar=a,this.boxObject.setToolbar(a)},attachTo:function(a){a.appendChild(this.element),this.updateContent(),this.updatePanelButtonState()}});return g}},b[38]={value:function(){function a(a,b,c){var d=[];return h.Utils.each(b,function(b){d.push(new q(c,a,b))}),d}function c(a){return j.ele(a,"div",{className:i+"overlap-container"})}function d(a,b){return new m(a,{className:"overlap-button",label:"",fixOffset:b.fixOffset})}function e(a,b){return new n(a,b)}function f(a){return a.getBoundingClientRect()}function g(a){var b="background: url( "+a.img+" ) no-repeat ";return b+=-a.pos.x+"px ",b+=-a.pos.y+"px;",b+=" width: "+a.size.width+"px;",b+=" height: "+a.size.height+"px;"}var h=b.r(20),i="kf-editor-ui-",j=b.r(47),k=b.r(40),l=b.r(42),m=b.r(39),n=b.r(45),o=20,p=h.createClass("Box",{constructor:function(a,b){this.options=b,this.toolbar=null,this.options.type=this.options.type||k.DETACHED,this.doc=a,this.itemPanels=null,this.overlapButtonObject=null,this.overlapIndex=-1,this.element=this.createBox(),this.groupContainer=this.createGroupContainer(),this.itemGroups=this.createItemGroup(),this.mergeElement()},createBox:function(){var a=j.ele(this.doc,"div",{className:i+"box"});return"width"in this.options&&(a.style.width=this.options.width+"px"),a},setToolbar:function(a){this.toolbar=a,this.overlapButtonObject&&this.overlapButtonObject.setToolbar(a)},updateSize:function(){var a=j.getRectBox(this.toolbar.getContainer()),b=30,c=j.getRectBox(this.element);if(this.options.type===k.DETACHED){if(c.bottom<=a.bottom)return void(this.element.scrollTop=0);this.element.style.height=c.height-(c.bottom-a.bottom+b)+"px"}else{var d=this.getCurrentItemPanel(),e=null;if(d.scrollTop=0,c.bottom<=a.bottom)return;e=f(d),d.style.height=a.bottom-e.top-b+"px"}},initEvent:function(){var a="."+i+"box-item",b=this;j.delegate(this.groupContainer,a,"mousedown",function(a){a.preventDefault(),1===a.which&&b.onselectHandler&&b.onselectHandler(this.getAttribute("data-value"))}),j.on(this.element,"mousedown",function(a){a.stopPropagation(),a.preventDefault()}),j.on(this.element,"mousewheel",function(a){a.preventDefault(),a.stopPropagation(),b.scroll(a.originalEvent.wheelDelta)})},getNode:function(){return this.element},setSelectHandler:function(a){this.onselectHandler=a},scroll:function(a){0>a?this.scrollDown():(this.scrollUp(),this.element.scrollTop-=20)},scrollDown:function(){this.options.type===k.DETACHED?this.element.scrollTop+=o:this.getCurrentItemPanel().scrollTop+=o},scrollUp:function(){this.options.type===k.DETACHED?this.element.scrollTop-=o:this.getCurrentItemPanel().scrollTop-=o},setChangeHandler:function(a){this.onchangeHandler=a},onchangeHandler:function(){},createGroupContainer:function(){return j.ele(this.doc,"div",{className:i+"box-container"})},getPositionInfo:function(){return j.getRectBox(this.element)},createItemGroup:function(){var a=this.createGroup();switch(this.options.type){case k.DETACHED:return a.items[0];case k.OVERLAP:return this.createOverlapGroup(a)}return null},enable:function(){this.overlapButtonObject&&this.overlapButtonObject.enable()},disable:function(){this.overlapButtonObject&&this.overlapButtonObject.disable()},hide:function(){this.overlapButtonObject&&this.overlapButtonObject.hideMount()},getOverlapContent:function(){return this.options.type!==k.OVERLAP?null:this.options.group[this.overlapIndex].items},createOverlapGroup:function(a){var b=a.title,f=this,g=c(this.doc),k=d(this.doc,{fixOffset:this.options.fixOffset}),l=e(this.doc,{width:150,items:b}),m=j.ele(this.doc,"div",{className:i+"wrap-group"});return this.overlapButtonObject=k,k.mount(l),k.initEvent(),l.initEvent(),h.Utils.each(a.items,function(b,c){var d=m.cloneNode(!1);h.Utils.each(b,function(a){d.appendChild(a)}),a.items[c]=d}),this.itemPanels=a.items,l.setSelectHandler(function(c,d){f.overlapIndex=c,k.setLabel(b[c]),k.hideMount(),a.items[d].style.display="none",a.items[c].style.display="block",c!==d&&f.updateSize(),f.onchangeHandler(c)}),g.appendChild(k.getNode()),h.Utils.each(a.items,function(a,b){b>0&&(a.style.display="none"),g.appendChild(a)}),l.select(0),[g]},getCurrentItemPanel:function(){return this.itemPanels[this.overlapIndex]},getGroupList:function(){var a=[];return h.Utils.each(this.options.group,function(b){a.push(b.title)}),{width:150,items:a}},createGroup:function(){var b=this.doc,c=[],d={title:[],items:[]},e=null,f=null,g=k.DETACHED===this.options.type?l.BIG:l.SMALL,m=null;return e=j.ele(this.doc,"div",{className:i+"box-group"}),m=e.cloneNode(!1),m.className=i+"box-group-item-container",h.Utils.each(this.options.group,function(k){d.title.push(k.title||""),c=[],h.Utils.each(k.items,function(d){e=e.cloneNode(!1),m=m.cloneNode(!1),f=j.ele(b,"div",{className:i+"box-group-title",content:d.title}),e.appendChild(f),e.appendChild(m),h.Utils.each(a(b,d.content,g),function(a){a.appendTo(m)}),c.push(e)}),d.items.push(c)}),d},mergeElement:function(){var a=this.groupContainer;this.element.appendChild(a),h.Utils.each(this.itemGroups,function(b){a.appendChild(b)})},mountTo:function(a){a.appendChild(this.element)},appendTo:function(a){a.appendChild(this.element)}}),q=h.createClass("BoxItem",{constructor:function(a,b,c){this.type=a,this.doc=b,this.options=c,this.element=this.createItem(),this.labelNode=this.createLabel(),this.contentNode=this.createContent(),this.mergeElement()},getNode:function(){return this.element},createItem:function(){var a=j.ele(this.doc,"div",{className:i+"box-item"});return a},createLabel:function(){var a=null;if("label"in this.options)return a=j.ele(this.doc,"div",{className:i+"box-item-label",content:this.options.label})},getContent:function(){},createContent:function(){switch(this.type){case l.BIG:return this.createBigContent();case l.SMALL:return this.createSmallContent()}},createBigContent:function(){var a=this.doc,b=j.ele(a,"div",{className:i+"box-item-content"}),c=i+"box-item-val",d=this.options.item,e=null,f=g(d);return e=j.ele(a,"div",{className:c}),e.innerHTML='
    ',this.element.setAttribute("data-value",d.val),b.appendChild(e),b},createSmallContent:function(){var a=this.doc,b=j.ele(a,"div",{className:i+"box-item-content"}),c=i+"box-item-val",d=this.options,e=null;return e=j.ele(a,"div",{className:c}),e.style.background="url( "+d.img+" )",e.style.backgroundPosition=-d.pos.x+"px "+-d.pos.y+"px",this.element.setAttribute("data-value",d.key),b.appendChild(e),b},mergeElement:function(){this.labelNode&&this.element.appendChild(this.labelNode),this.element.appendChild(this.contentNode)},appendTo:function(a){a.appendChild(this.element)}});return p}},b[39]={value:function(){function a(a){var b="url( "+a.src+" ) no-repeat ";return b+=-a.x+"px ",b+=-a.y+"px"}var c=b.r(20),d="kf-editor-ui-",e=7,f={iconSize:{w:32,h:32}},g=b.r(47),h=c.createClass("Button",{constructor:function(a,b){this.options=c.Utils.extend({},f,b),this.eventState=!1,this.toolbar=null,this.displayState=!1,this.fixOffset=b.fixOffset||!1,this.doc=a,this.element=this.createButton(),this.disabled=!0,this.mountElement=null,this.icon=this.createIcon(),this.label=this.createLabel(),this.sign=this.createSign(),this.mountPoint=this.createMountPoint(),this.mergeElement()},initEvent:function(){var a=this;this.eventState||(this.eventState=!0,g.on(this.element,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),1===b.which&&(a.disabled||(a.toggleSelect(),a.toggleMountElement()))}))},setToolbar:function(a){this.toolbar=a},toggleMountElement:function(){this.displayState?this.hideMount():this.showMount()},setLabel:function(a){var b="";this.sign&&(b='
    '),this.label.innerHTML=a+b},toggleSelect:function(){g.getClassList(this.element).toggle(d+"button-in")},unselect:function(){g.getClassList(this.element).remove(d+"button-in")},select:function(){g.getClassList(this.element).add(d+"button-in")},show:function(){this.select(),this.showMount()},hide:function(){this.unselect(),this.hideMount()},showMount:function(){if(this.displayState=!0,this.mountPoint.style.display="block",this.fixOffset){var a=this.element.getBoundingClientRect();this.mountElement.setOffset(a.left+e,a.bottom)}var b=this.toolbar.getContainer(),c=null,d=g.getRectBox(b),f=this.mountElement.getPositionInfo();f.right>d.right&&(c=g.getRectBox(this.element),this.mountPoint.style.left=c.right-f.right-1+"px"),this.mountElement.updateSize&&this.mountElement.updateSize()},hideMount:function(){this.displayState=!1,this.mountPoint.style.display="none"},getNode:function(){return this.element},mount:function(a){this.mountElement=a,a.mountTo(this.mountPoint)},createButton:function(){var a=g.ele(this.doc,"div",{className:d+"button"});return this.options.className&&(a.className+=" "+d+this.options.className),a},createIcon:function(){if(!this.options.icon)return null;var b=g.ele(this.doc,"div",{className:d+"button-icon"});return"string"==typeof this.options.icon?b.style.backgroundImage="url("+this.options.icon+") no-repeat":b.style.background=a(this.options.icon),this.options.iconSize.w&&(b.style.width=this.options.iconSize.w+"px"),this.options.iconSize.h&&(b.style.height=this.options.iconSize.h+"px"),b},createLabel:function(){var a=g.ele(this.doc,"div",{className:d+"button-label",content:this.options.label});return a},createSign:function(){return this.options.sign===!1?null:g.ele(this.doc,"div",{className:d+"button-sign"})},createMountPoint:function(){return g.ele(this.doc,"div",{className:d+"button-mount-point"})},disable:function(){this.disabled=!0,g.getClassList(this.element).remove(d+"enabled") +},enable:function(){this.disabled=!1,g.getClassList(this.element).add(d+"enabled")},mergeElement:function(){this.icon&&this.element.appendChild(this.icon),this.element.appendChild(this.label),this.sign&&this.label.appendChild(this.sign),this.element.appendChild(this.mountPoint)}});return h}},b[40]={value:function(){return{DETACHED:1,OVERLAP:2}}},b[41]={value:function(){return{DRAPDOWN_BOX:1,AREA:2,DELIMITER:3}}},b[42]={value:function(){return{BIG:1,SMALL:2}}},b[43]={value:function(){var a=b.r(20),c="kf-editor-ui-",d=b.r(47),e=a.createClass("Delimiter",{constructor:function(a){this.doc=a,this.element=this.createDilimiter()},setToolbar:function(){},createDilimiter:function(){var a=d.ele(this.doc,"div",{className:c+"delimiter"});return a.appendChild(d.ele(this.doc,"div",{className:c+"delimiter-line"})),a},attachTo:function(a){a.appendChild(this.element)}});return e}},b[44]={value:function(){var a=b.r(20),c=b.r(47),d=b.r(39),e=b.r(38),f=a.createClass("DrapdownBox",{constructor:function(a,b){this.options=b,this.toolbar=null,this.doc=a,this.buttonElement=this.createButton(),this.element=this.buttonElement.getNode(),this.boxElement=this.createBox(),this.buttonElement.mount(this.boxElement),this.initEvent()},initEvent:function(){var a=this;c.on(this.element,"mousedown",function(b){b.preventDefault(),b.stopPropagation(),a.toolbar.notify("closeOther",a)}),this.buttonElement.initEvent(),this.boxElement.initEvent(),this.boxElement.setSelectHandler(function(b){c.publish("data.select",b),a.buttonElement.hide()})},disable:function(){this.buttonElement.disable()},enable:function(){this.buttonElement.enable()},setToolbar:function(a){this.toolbar=a,this.buttonElement.setToolbar(a),this.boxElement.setToolbar(a)},createButton:function(){return new d(this.doc,this.options.button)},show:function(){this.buttonElement.show()},hide:function(){this.buttonElement.hide()},createBox:function(){return new e(this.doc,this.options.box)},attachTo:function(a){a.appendChild(this.element)}});return f}},b[45]={value:function(){var a=b.r(20),c="kf-editor-ui-",d=b.r(47),e=a.createClass("List",{constructor:function(a,b){this.options=b,this.doc=a,this.onselectHandler=null,this.currentSelect=-1,this.element=this.createBox(),this.itemGroups=this.createItems(),this.mergeElement()},onselectHandler:function(){},setSelectHandler:function(a){this.onselectHandler=a},createBox:function(){var a=d.ele(this.doc,"div",{className:c+"list"}),b=d.ele(this.doc,"div",{className:c+"list-bg"});return"width"in this.options&&(a.style.width=this.options.width+"px"),a.appendChild(b),a},select:function(a){var b=this.currentSelect;-1===b&&(b=a),this.unselect(b),this.currentSelect=a,d.getClassList(this.itemGroups.items[a]).add(c+"list-item-select"),this.onselectHandler(a,b)},unselect:function(a){d.getClassList(this.itemGroups.items[a]).remove(c+"list-item-select")},setOffset:function(a,b){this.element.style.left=a+"px",this.element.style.top=b+"px"},initEvent:function(){var a="."+c+"list-item",b=this;d.delegate(this.itemGroups.container,a,"mousedown",function(a){a.preventDefault(),1===a.which&&b.select(this.getAttribute("data-index"))}),d.on(this.element,"mousedown",function(a){a.stopPropagation(),a.preventDefault()})},getPositionInfo:function(){return d.getRectBox(this.element)},createItems:function(){var b=this.doc,e=null,f=null,g=null,h=[],i=null;return e=d.ele(this.doc,"div",{className:c+"list-item"}),i=e.cloneNode(!1),i.className=c+"list-item-container",a.Utils.each(this.options.items,function(a,j){f=e.cloneNode(!1),g=e.cloneNode(!1),g.className=c+"list-item-icon",f.appendChild(g),f.appendChild(d.ele(b,"text",a)),f.setAttribute("data-index",j),h.push(f),i.appendChild(f)}),{container:i,items:h}},mergeElement:function(){this.element.appendChild(this.itemGroups.container)},mountTo:function(a){a.appendChild(this.element)}});return e}},b[46]={value:function(){function a(a,b,c){var d=a.createElement(b),e='
    ';return d.className=r+c,"thumb"===c&&(c=r+c,d.innerHTML=e.replace("$1",c+"-left").replace("$2",c+"-right")),d}function c(a){return a.getBoundingClientRect()}function d(a){q.addEvent(a,"mousedown",function(a){a.preventDefault()})}function d(a){q.addEvent(a.container,"mousedown",function(a){a.preventDefault()})}function e(a){q.addEvent(a.widgets.track,"mousedown",function(b){h(this,a,b)})}function f(a){q.addEvent(a.widgets.leftButton,"mousedown",function(){j(a,-p.step)}),q.addEvent(a.widgets.rightButton,"mousedown",function(){j(a,p.step)})}function g(a){var b=!1,c=0,d=0,e=a.values.trackWidth;q.addEvent(a.widgets.thumb,"mousedown",function(e){e.preventDefault(),e.stopPropagation(),b=!0,c=e.clientX,d=a.thumbLocationX}),q.addEvent(a.container.ownerDocument,"mouseup",function(){b=!1,c=0,d=0}),q.addEvent(a.container.ownerDocument,"mousemove",function(f){if(b){var g=f.clientX-c,h=d+g,j=a.values.thumbWidth;0>h?h=0:h+j>e&&(h=e-j),i(a,h)}})}function h(a,b,d){var e=c(a),f=b.values,g=f.viewWidth/(f.contentWidth-f.viewWidth)*f.trackWidth,h=d.clientX-e.left;h>f.offset?f.offset+g>f.trackWidth?k(b,f.trackWidth):k(b,f.offset+g):f.offset-g<0?k(b,0):k(b,f.offset-g)}function i(a,b){var c=a.values,d=c.trackWidth-c.thumbWidth,e=Math.floor(b/d*c.trackWidth);a.updateOffset(e),a.thumbLocationX=b,a.widgets.thumb.style.left=b+"px"}function j(a,b){var c=a.leftOverflow+b;0>c?c=0:c>a.values.scrollWidth&&(c=a.values.scrollWidth),m(a,c)}function k(a,b){var c=a.values,d=b/c.trackWidth,e=c.trackWidth-c.thumbWidth,f=0;f=Math.floor(d*e),0>b&&(b=0,f=0),a.updateOffset(b),a.widgets.thumb.style.left=f+"px",a.thumbLocationX=f}function l(a,b){var c=a.values,d=0,e=0;d=b/(c.contentWidth-c.viewWidth),e=Math.floor(d*c.trackWidth),k(a,e)}function m(a,b){var c=a.values,d=b/(c.contentWidth-c.viewWidth);k(a,d*c.trackWidth)}var n=b.r(20),o=b.r(32).scrollbar,p=b.r(29).scrollbar,q=b.r(4),r="kf-editor-ui-";return n.createClass("Scrollbar",{constructor:function(a,b){this.uiComponent=a,this.kfEditor=b,this.widgets=null,this.container=this.uiComponent.scrollbarContainer,this.state=!1,this.values={offset:0,left:0,viewWidth:0,contentWidth:0,trackWidth:0,thumbWidth:0,scrollWidth:0},this.thumbLocationX=0,this.leftOverflow=0,this.rightOverflow=0,this.isExpand=!0,this.initWidget(),this.mountWidget(),this.initSize(),this.hide(),this.initServices(),this.initEvent(),this.updateHandler=function(){}},initWidget:function(){var b=this.container.ownerDocument;this.widgets={leftButton:a(b,"div","left-button"),rightButton:a(b,"div","right-button"),track:a(b,"div","track"),thumb:a(b,"div","thumb"),thumbBody:a(b,"div","thumb-body")}},initSize:function(){var a=c(this.widgets.leftButton).width,b=c(this.widgets.rightButton).width;this.values.viewWidth=c(this.container).width,this.values.trackWidth=this.values.viewWidth-a-b,this.widgets.track.style.width=this.values.trackWidth+"px"},initServices:function(){this.kfEditor.registerService("ui.show.scrollbar",this,{showScrollbar:this.show}),this.kfEditor.registerService("ui.hide.scrollbar",this,{hideScrollbar:this.hide}),this.kfEditor.registerService("ui.update.scrollbar",this,{updateScrollbar:this.update}),this.kfEditor.registerService("ui.set.scrollbar.update.handler",this,{setUpdateHandler:this.setUpdateHandler}),this.kfEditor.registerService("ui.relocation.scrollbar",this,{relocation:this.relocation})},initEvent:function(){d(this),e(this),g(this),f(this)},mountWidget:function(){var a=this.widgets,b=this.container;for(var c in a)a.hasOwnProperty(c)&&b.appendChild(a[c]);a.thumb.appendChild(a.thumbBody),a.track.appendChild(a.thumb)},show:function(){this.state=!0,this.container.style.display="block"},hide:function(){this.state=!1,this.container.style.display="none"},update:function(a){var b=this.values.trackWidth,c=0;return this.isExpand=a>this.values.contentWidth,this.values.contentWidth=a,this.values.scrollWidth=a-this.values.viewWidth,b>=a?void this.hide():(c=Math.max(Math.ceil(b*b/a),o.thumbMinSize),this.values.thumbWidth=c,this.widgets.thumb.style.width=c+"px",void(this.widgets.thumbBody.style.width=c-10+"px"))},setUpdateHandler:function(a){this.updateHandler=a},updateOffset:function(a){var b=this.values;b.offset=a,b.left=a/b.trackWidth,this.leftOverflow=b.left*(b.contentWidth-b.viewWidth),this.rightOverflow=b.contentWidth-b.viewWidth-this.leftOverflow,this.updateHandler(b.left,b.offset,b)},relocation:function(){var a=this.kfEditor.requestService("control.get.cursor.location"),b=p.padding,c=this.values.contentWidth,d=this.values.viewWidth,e=this.values.left*(c-d),f=0;a.xe+d?(a.x+=b,a.x>c&&(a.x=c),f=a.x-d,l(this,f)):this.isExpand?m(this,this.leftOverflow):m(this,c-d-this.rightOverflow)}})}},b[47]={value:function(){function a(a){this.node=a,this.classes=a.className.replace(/^\s+|\s+$/g,"").split(/\s+/)}var c=b.r(14),d=b.r(20),e={},f={ele:function(a,b,c){var d=null;return"text"===b?a.createTextNode(c):(d=a.createElement(b),c.className&&(d.className=c.className),c.content&&(d.innerHTML=c.content),d)},getRectBox:function(a){return a.getBoundingClientRect()},on:function(a,b,d){return c(a).on(b,d),this},delegate:function(a,b,d,e){return c(a).delegate(b,d,e),this},publish:function(a,b){var c=e[a];c&&(b=[].slice.call(arguments,1),d.Utils.each(c,function(a){a.apply(null,b)}))},subscribe:function(a,b){e[a]||(e[a]=[]),e[a].push(b)},getClassList:function(b){return b.classList||new a(b)}};return a.prototype={constructor:a,contains:function(a){return-1!==this.classes.indexOf(a)},add:function(a){return-1==this.classes.indexOf(a)&&this.classes.push(a),this._update(),this},remove:function(a){var b=this.classes.indexOf(a);return-1!==b&&(this.classes.splice(b,1),this._update()),this},toggle:function(a){var b=this.contains(a)?"remove":"add";return this[b](a)},_update:function(){this.node.className=this.classes.join(" ")}},f}},b[48]={value:function(){return{DrapdownBox:b.r(44),Delimiter:b.r(43),Area:b.r(37)}}},b[49]={value:function(){function a(a){return h.ele(a,"div",{className:"kf-editor-toolbar"})}function c(a){return h.ele(a,"div",{className:"kf-editor-inner-toolbar"})}function d(a){var b=a.createElement("div");return b.className="kf-editor-edit-area",b.style.width="80%",b.style.height="800px",b}function e(a){var b=a.createElement("div");return b.className="kf-editor-canvas-container",b}function f(a){var b=a.createElement("div");return b.className="kf-editor-edit-scrollbar",b}var g=b.r(20),h=b.r(47),i=b.r(4),j=b.r(32).VIEW_STATE,k=b.r(46),l=b.r(36),m=(b.r(31),b.r(35)),n=g.createClass("UIComponent",{constructor:function(b,g){var h=null;this.options=g,this.container=b.getContainer(),h=this.container.ownerDocument,this.components={},this.canvasRect=null,this.viewState=j.NO_OVERFLOW,this.kfEditor=b,this.toolbarWrap=a(h),this.toolbarContainer=c(h),this.editArea=d(h),this.canvasContainer=e(h),this.scrollbarContainer=f(h),this.toolbarWrap.appendChild(this.toolbarContainer),this.container.appendChild(this.toolbarWrap),this.editArea.appendChild(this.canvasContainer),this.container.appendChild(this.editArea),this.container.appendChild(this.scrollbarContainer),this.initComponents(),this.initServices(),this.initEvent(),this.updateContainerSize(this.container,this.toolbarWrap,this.editArea,this.canvasContainer),this.initScrollEvent()},initComponents:function(){this.components.toolbar=new l(this,this.kfEditor,m),this.components.scrollbar=new k(this,this.kfEditor)},updateContainerSize:function(a,b,c){var d=a.getBoundingClientRect(),e=b.getBoundingClientRect();c.style.width=d.width+"px",c.style.height=d.bottom-e.bottom+"px"},initServices:function(){this.kfEditor.registerService("ui.get.canvas.container",this,{getCanvasContainer:this.getCanvasContainer}),this.kfEditor.registerService("ui.update.canvas.view",this,{updateCanvasView:this.updateCanvasView}),this.kfEditor.registerService("ui.canvas.container.event",this,{on:this.addEvent,off:this.removeEvent,trigger:this.trigger,fire:this.trigger})},initEvent:function(){},initScrollEvent:function(){var a=this;this.kfEditor.requestService("ui.set.scrollbar.update.handler",function(b,c,d){c=Math.floor(b*(d.contentWidth-d.viewWidth)),a.kfEditor.requestService("render.set.canvas.offset",c)})},getCanvasContainer:function(){return this.canvasContainer},addEvent:function(a,b){i.addEvent(this.canvasContainer,a,b)},removeEvent:function(){},trigger:function(a){i.trigger(this.canvasContainer,a)},updateCanvasView:function(){var a=this.kfEditor.requestService("render.get.canvas"),b=a.getContentContainer(),c=null;null===this.canvasRect&&(this.canvasRect=this.canvasContainer.getBoundingClientRect()),c=b.getRenderBox("paper"),c.width>this.canvasRect.width?(this.viewState===j.NO_OVERFLOW&&(this.toggleViewState(),this.kfEditor.requestService("ui.show.scrollbar"),this.kfEditor.requestService("render.disable.relocation")),this.kfEditor.requestService("render.relocation"),this.kfEditor.requestService("ui.update.scrollbar",c.width),this.kfEditor.requestService("ui.relocation.scrollbar")):(this.viewState===j.OVERFLOW&&(this.toggleViewState(),this.kfEditor.requestService("ui.hide.scrollbar"),this.kfEditor.requestService("render.enable.relocation")),this.kfEditor.requestService("render.relocation"))},toggleViewState:function(){this.viewState=this.viewState===j.NO_OVERFLOW?j.OVERFLOW:j.NO_OVERFLOW}});return n}},b[50]={value:function(){var a=b.r(12),c=b.r(13);a.registerComponents("ui",b.r(49)),a.registerComponents("parser",b.r(21)),a.registerComponents("render",b.r(25)),a.registerComponents("position",b.r(23)),a.registerComponents("syntax",b.r(28)),a.registerComponents("control",b.r(5)),a.registerComponents("print",b.r(24)),kf.EditorFactory=c}};var c={"kf.start":50};!function(){try{a("kf.start")}catch(b){}}(this)}(); \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kitygraph.all.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kitygraph.all.js new file mode 100644 index 0000000000000000000000000000000000000000..153d6e18047ca1f68de81fd548a842f7ec15f580 --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/js/kitygraph.all.js @@ -0,0 +1,8572 @@ +/*! + * ==================================================== + * kity - v2.0.5 - 2015-11-12 + * https://github.com/fex-team/kity + * GitHub: https://github.com/fex-team/kity.git + * Copyright (c) 2015 Baidu FEX; Licensed BSD + * ==================================================== + */ + +(function () { +var _p = { + r: function(index) { + if (_p[index].inited) { + return _p[index].value; + } + if (typeof _p[index].value === "function") { + var module = { + exports: {} + }, returnValue = _p[index].value(null, module.exports, module); + _p[index].inited = true; + _p[index].value = returnValue; + if (returnValue !== undefined) { + return returnValue; + } else { + for (var key in module.exports) { + if (module.exports.hasOwnProperty(key)) { + _p[index].inited = true; + _p[index].value = module.exports; + return module.exports; + } + } + } + } else { + _p[index].inited = true; + return _p[index].value; + } + } +}; + +//src/animate/animator.js +/** + * @fileOverview + * + * 提供基本的动画支持 + */ +_p[0] = { + value: function(require) { + function parseTime(str) { + var value = parseFloat(str, 10); + if (/ms/.test(str)) { + return value; + } + if (/s/.test(str)) { + return value * 1e3; + } + if (/min/.test(str)) { + return value * 60 * 1e3; + } + return value; + } + var Timeline = _p.r(8); + var easingTable = _p.r(1); + /** + * @class kity.Animator + * @catalog animate + * @description 表示一个动画启动器,可以作用于不同的对象进行动画 + */ + var Animator = _p.r(11).createClass("Animator", { + /** + * @constructor + * @for kity.Animator + * @catalog animate + * + * @grammar new kity.Animator(beginValue, finishValue, setter) + * @grammar new kity.Animator(option) + * + * @param {any} beginValue|opt.beginValue + * 动画的起始值,允许的类型有数字、数组、字面量、kity.Point、kity.Vector、kity.Box、kity.Matrix + * + * @param {any} finishValue|opt.beginValue + * 动画的结束值,类型应于起始值相同 + * + * @param {Function} setter|opt.setter + * 值的使用函数,接受三个参数: function(target, value, timeline) + * target {object} 动画的目标 + * value {any} 动画的当前值 + * timeline {kity.Timeline} 动画当前的时间线对象 + */ + constructor: function(beginValue, finishValue, setter) { + if (arguments.length == 1) { + var opt = arguments[0]; + this.beginValue = opt.beginValue; + this.finishValue = opt.finishValue; + this.setter = opt.setter; + } else { + this.beginValue = beginValue; + this.finishValue = finishValue; + this.setter = setter; + } + }, + /** + * @method start() + * @for kity.Animator + * @description 使用当前的动画器启动在指定目标上启动动画 + * + * @grammar start(target, duration, easing, delay, callback) => {kity.Timeline} + * @grammar start(target, option) => {kity.Timeline} + * + * @param {object} target + * 启动动画的目标 + * + * @param {Number|String} duration|option.duration + * [Optional] 动画的持续时间,如 300、"300ms"、"1.5min" + * + * @param {String|Function} easing|option.easing + * [Optional] 动画使用的缓动函数,如 "ease"、"linear"、"swing" + * + * @param {Number|String} delay|option.delay + * [Optional] 动画的播放延迟时间 + * + * @param {Function} callback|option.callback + * [Optional] 动画结束后的回调函数 + * + * @example + * + * ```js + * var turnRed = new kity.Animator( + * new kity.Color('yellow'), + * new kity.Color('red'), + * function(target, value) { + * target.fill(value); + * }); + * + * turnRed.start(rect, 300, 'ease', function() { + * console.log('I am red!'); + * }); + * ``` + */ + start: function(target, duration, easing, delay, callback) { + if (arguments.length === 2 && typeof duration == "object") { + easing = duration.easing; + delay = duration.delay; + callback = duration.callback; + duration = duration.duration; + } + if (arguments.length === 4 && typeof delay == "function") { + callback = delay; + delay = 0; + } + var timeline = this.create(target, duration, easing, callback); + delay = parseTime(delay); + if (delay > 0) { + setTimeout(function() { + timeline.play(); + }, delay); + } else { + timeline.play(); + } + return timeline; + }, + /** + * @method create() + * @for kity.Animator + * @description 使用当前的动画器为指定目标创建时间线 + * + * @grammar create(target, duration, easing, callback) => {kity.Timeline} + * + * @param {object} target 要创建的时间线的目标 + * @param {Number|String} duration 要创建的时间线的长度,如 300、"5s"、"0.5min" + * @param {String|Function} easing 要创建的时间线的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 时间线播放结束之后的回调函数 + * + * @example + * + * ```js + * var expand = new kity.Animator({ + * beginValue: function(target) { + * return target.getBox(); + * }, + * finishValue: function(target) { + * return target.getBox().expand(100, 100, 100, 100); + * }, + * setter: function(target, value) { + * target.setBox(value) + * } + * }); + * + * var timeline = expand.create(rect, 300); + * timeline.repeat(3).play(); + * ``` + */ + create: function(target, duration, easing, callback) { + var timeline; + duration = duration && parseTime(duration) || Animator.DEFAULT_DURATION; + easing = easing || Animator.DEFAULT_EASING; + if (typeof easing == "string") { + easing = easingTable[easing]; + } + timeline = new Timeline(this, target, duration, easing); + if (typeof callback == "function") { + timeline.on("finish", callback); + } + return timeline; + }, + /** + * @method reverse() + * @for kity.Animator + * @grammar reverse() => {kity.Animator} + * @description 创建一个与当前动画器相反的动画器 + * + * @example + * + * ```js + * var turnYellow = turnRed.reverse(); + * ``` + */ + reverse: function() { + return new Animator(this.finishValue, this.beginValue, this.setter); + } + }); + Animator.DEFAULT_DURATION = 300; + Animator.DEFAULT_EASING = "linear"; + var Shape = _p.r(60); + _p.r(11).extendClass(Shape, { + /** + * @method animate() + * @for kity.Shape + * @description 在图形上播放使用指定的动画器播放动画,如果图形当前有动画正在播放,则会加入播放队列 + * + * @grammar animate(animator, duration, easing, delay, callback) + * + * @param {object} animator 播放动画使用的动画器 + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + * + * @example + * + * ```js + * rect.animate(turnRed, 300); // turnRect 是一个动画器 + * rect.animate(expand, 500); // turnRect 播放结束后播放 expand + * ``` + */ + animate: function(animator, duration, easing, delay, callback) { + var queue = this._KityAnimateQueue = this._KityAnimateQueue || []; + var timeline = animator.create(this, duration, easing, callback); + function dequeue() { + queue.shift(); + if (queue.length) { + setTimeout(queue[0].t.play.bind(queue[0].t), queue[0].d); + } + } + timeline.on("finish", dequeue); + queue.push({ + t: timeline, + d: delay + }); + if (queue.length == 1) { + setTimeout(timeline.play.bind(timeline), delay); + } + return this; + }, + /** + * @method timeline() + * @for kity.Shape + * @description 获得当前正在播放的动画的时间线 + * + * @grammar timeline() => {kity.Timeline} + * + * @example + * + * ```js + * rect.timeline().repeat(2); + * ``` + */ + timeline: function() { + return this._KityAnimateQueue[0].t; + }, + /** + * @method stop() + * @for kity.Shape + * @description 停止当前正在播放的动画 + * + * @grammar stop() => {this} + * + * @example + * + * ```js + * rect.stop(); // 停止 rect 上的动画 + * ``` + */ + stop: function() { + var queue = this._KityAnimateQueue; + if (queue) { + while (queue.length) { + queue.shift().t.stop(); + } + } + return this; + } + }); + return Animator; + } +}; + +//src/animate/easing.js +/** + * Kity Animate Easing modified from jQuery Easing + * Author: techird + * Changes: + * 1. make easing functions standalone + * 2. remove the 'x' parameter + */ +/* ============================================================ + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Open source under the BSD License. + * + * Copyright © 2008 George McGinley Smith + * All rights reserved. + * https://raw.github.com/danro/jquery-easing/master/LICENSE + * ======================================================== */ +_p[1] = { + value: function(require, exports, module) { + var easings = { + // t: current_time, b: begin_value, c: change_value, d: duration + linear: function(t, b, c, d) { + return c * (t / d) + b; + }, + swing: function(t, b, c, d) { + return easings.easeOutQuad(t, b, c, d); + }, + ease: function(t, b, c, d) { + return easings.easeInOutCubic(t, b, c, d); + }, + easeInQuad: function(t, b, c, d) { + return c * (t /= d) * t + b; + }, + easeOutQuad: function(t, b, c, d) { + return -c * (t /= d) * (t - 2) + b; + }, + easeInOutQuad: function(t, b, c, d) { + if ((t /= d / 2) < 1) return c / 2 * t * t + b; + return -c / 2 * (--t * (t - 2) - 1) + b; + }, + easeInCubic: function(t, b, c, d) { + return c * (t /= d) * t * t + b; + }, + easeOutCubic: function(t, b, c, d) { + return c * ((t = t / d - 1) * t * t + 1) + b; + }, + easeInOutCubic: function(t, b, c, d) { + if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; + return c / 2 * ((t -= 2) * t * t + 2) + b; + }, + easeInQuart: function(t, b, c, d) { + return c * (t /= d) * t * t * t + b; + }, + easeOutQuart: function(t, b, c, d) { + return -c * ((t = t / d - 1) * t * t * t - 1) + b; + }, + easeInOutQuart: function(t, b, c, d) { + if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; + return -c / 2 * ((t -= 2) * t * t * t - 2) + b; + }, + easeInQuint: function(t, b, c, d) { + return c * (t /= d) * t * t * t * t + b; + }, + easeOutQuint: function(t, b, c, d) { + return c * ((t = t / d - 1) * t * t * t * t + 1) + b; + }, + easeInOutQuint: function(t, b, c, d) { + if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; + return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; + }, + easeInSine: function(t, b, c, d) { + return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; + }, + easeOutSine: function(t, b, c, d) { + return c * Math.sin(t / d * (Math.PI / 2)) + b; + }, + easeInOutSine: function(t, b, c, d) { + return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; + }, + easeInExpo: function(t, b, c, d) { + return t === 0 ? b : c * Math.pow(2, 10 * (t / d - 1)) + b; + }, + easeOutExpo: function(t, b, c, d) { + return t == d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; + }, + easeInOutExpo: function(t, b, c, d) { + if (t === 0) return b; + if (t == d) return b + c; + if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; + return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b; + }, + easeInCirc: function(t, b, c, d) { + return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b; + }, + easeOutCirc: function(t, b, c, d) { + return c * Math.sqrt(1 - (t = t / d - 1) * t) + b; + }, + easeInOutCirc: function(t, b, c, d) { + if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; + return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b; + }, + easeInElastic: function(t, b, c, d) { + var s = 1.70158; + var p = 0; + var a = c; + if (t === 0) return b; + if ((t /= d) == 1) return b + c; + if (!p) p = d * .3; + if (a < Math.abs(c)) { + a = c; + s = p / 4; + } else s = p / (2 * Math.PI) * Math.asin(c / a); + return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; + }, + easeOutElastic: function(t, b, c, d) { + var s = 1.70158; + var p = 0; + var a = c; + if (t === 0) return b; + if ((t /= d) == 1) return b + c; + if (!p) p = d * .3; + if (a < Math.abs(c)) { + a = c; + s = p / 4; + } else s = p / (2 * Math.PI) * Math.asin(c / a); + return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b; + }, + easeInOutElastic: function(t, b, c, d) { + var s = 1.70158; + var p = 0; + var a = c; + if (t === 0) return b; + if ((t /= d / 2) == 2) return b + c; + if (!p) p = d * (.3 * 1.5); + if (a < Math.abs(c)) { + a = c; + var s = p / 4; + } else var s = p / (2 * Math.PI) * Math.asin(c / a); + if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; + return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b; + }, + easeInBack: function(t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c * (t /= d) * t * ((s + 1) * t - s) + b; + }, + easeOutBack: function(t, b, c, d, s) { + if (s == undefined) s = 1.70158; + return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; + }, + easeInOutBack: function(t, b, c, d, s) { + if (s == undefined) s = 1.70158; + if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= 1.525) + 1) * t - s)) + b; + return c / 2 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b; + }, + easeInBounce: function(t, b, c, d) { + return c - easings.easeOutBounce(d - t, 0, c, d) + b; + }, + easeOutBounce: function(t, b, c, d) { + if ((t /= d) < 1 / 2.75) { + return c * (7.5625 * t * t) + b; + } else if (t < 2 / 2.75) { + return c * (7.5625 * (t -= 1.5 / 2.75) * t + .75) + b; + } else if (t < 2.5 / 2.75) { + return c * (7.5625 * (t -= 2.25 / 2.75) * t + .9375) + b; + } else { + return c * (7.5625 * (t -= 2.625 / 2.75) * t + .984375) + b; + } + }, + easeInOutBounce: function(t, b, c, d) { + if (t < d / 2) return easings.easeInBounce(t * 2, 0, c, d) * .5 + b; + return easings.easeOutBounce(t * 2 - d, 0, c, d) * .5 + c * .5 + b; + } + }; + return easings; + } +}; + +/* + * + * TERMS OF USE - EASING EQUATIONS + * + * Open source under the BSD License. + * + * Copyright © 2001 Robert Penner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ +//src/animate/frame.js +/** + * @fileOverview + * + * 提供动画帧的基本支持 + */ +_p[2] = { + value: function(require, exports) { + // 原生动画帧方法 polyfill + var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || function(fn) { + return setTimeout(fn, 1e3 / 60); + }; + var cancelAnimationFrame = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.msCancelAnimationFrame || window.clearTimeout; + // 上一个请求的原生动画帧 id + var frameRequestId; + // 等待执行的帧动作的集合,这些帧的方法将在下个原生动画帧同步执行 + var pendingFrames = []; + /** + * 添加一个帧到等待集合中 + * + * 如果添加的帧是序列的第一个,至少有一个帧需要被执行,则会请求一个原生动画帧来执行 + */ + function pushFrame(frame) { + if (pendingFrames.push(frame) === 1) { + frameRequestId = requestAnimationFrame(executePendingFrames); + } + } + /** + * 执行所有等待帧 + */ + function executePendingFrames() { + var frames = pendingFrames; + pendingFrames = []; + while (frames.length) { + executeFrame(frames.pop()); + } + frameRequestId = 0; + } + /** + * @method kity.requestFrame + * @catalog animate + * @grammar kity.requestFrame(action) => {frame} + * @description 请求一个帧,执行指定的动作。动作回调提供一些有用的信息 + * + * @param {Function} action + * + * 要执行的动作,该动作回调有一个参数 frame,其中: + * + * frame.time {Number} + * 动作执行时的时间戳(ms) + * + * frame.index {Number} + * 当前执行的帧的编号(首帧为 0) + * + * frame.dur {Number} + * 上一帧至当前帧经过的时间,单位 ms + * + * frame.elapsed {Number} + * 从首帧开始到当前帧经过的时间,单位 ms + * + * frame.action {Number} + * 指向当前的帧处理函数 + * + * frame.next() + * 表示下一帧继续执行。如果不调用该方法,将不会执行下一帧。 + * + * @example + * + * ```js + * kity.requestFrame(function(frame) { + * console.log('平均帧率:' + frame.elapsed / (frame.index + 1)); + * + * // 更新或渲染动作 + * + * frame.next(); //继续执行下一帧 + * }); + * ``` + */ + function requestFrame(action) { + var frame = initFrame(action); + pushFrame(frame); + return frame; + } + /** + * @method kity.releaseFrame + * @catalog animate + * @grammar kity.releaseFrame(frame) + * @description 释放一个已经请求过的帧,如果该帧在等待集合里,将移除,下个动画帧不会执行释放的帧 + * + * @param {frame} frame 使用 kity.requestFrame() 返回的帧 + * + * @example + * + * ```js + * var frame = kity.requestFrame(function() {....}); + * kity.releaseFrame(frame); + * ``` + */ + function releaseFrame(frame) { + var index = pendingFrames.indexOf(frame); + if (~index) { + pendingFrames.splice(index, 1); + } + if (pendingFrames.length === 0) { + cancelAnimationFrame(frameRequestId); + } + } + /** + * 初始化一个帧,主要用于后续计算 + */ + function initFrame(action) { + var frame = { + index: 0, + time: +new Date(), + elapsed: 0, + action: action, + next: function() { + pushFrame(frame); + } + }; + return frame; + } + /** + * 执行一个帧动作 + */ + function executeFrame(frame) { + // 当前帧时间错 + var time = +new Date(); + // 当上一帧到当前帧经过的时间 + var dur = time - frame.time; + // + // http://stackoverflow.com/questions/13133434/requestanimationframe-detect-stop + // 浏览器最小化或切换标签,requestAnimationFrame 不会执行。 + // 检测时间超过 200 ms(频率小于 5Hz ) 判定为计时器暂停,重置为一帧长度 + // + if (dur > 200) { + dur = 1e3 / 60; + } + frame.dur = dur; + frame.elapsed += dur; + frame.time = time; + frame.action.call(null, frame); + frame.index++; + } + // 暴露 + exports.requestFrame = requestFrame; + exports.releaseFrame = releaseFrame; + } +}; + +//src/animate/motionanimator.js +/** + * @fileOverview + * + * 路径动画器,可以让一个物体沿着某个轨迹运动 + */ +_p[3] = { + value: function(require) { + var Animator = _p.r(0); + var g = _p.r(34); + var Path = _p.r(46); + var Shape = _p.r(60); + /** + * @class kity.MotionAnimator + * @catalog animate + * @base kity.Animator + * @description 路径动画器,可以让一个物体沿着某个轨迹运动 + * + * @example + * + * ```js + * var motionAnimator = new MotionAnimator('M0,0C100,0,100,0,100,100L200,200'); + * motionAnimator.start(rect, 3000); + * ``` + */ + var MotionAnimator = _p.r(11).createClass("MotionAnimator", { + base: Animator, + /** + * @constructor + * @for kity.MotionAnimator + * @grammar new kity.MotionAnimator(path, doRotate) + * @param {kity.Path|String|PathSegment} path 运动的轨迹,或者是 kity.Path 对象 + * @param {boolean} doRotate 是否让运动的目标沿着路径的切线方向旋转 + */ + constructor: function(path, doRotate) { + var me = this; + this.callBase({ + beginValue: 0, + finishValue: 1, + setter: function(target, value) { + var path = me.motionPath instanceof Path ? me.motionPath.getPathData() : me.motionPath; + var point = g.pointAtPath(path, value); + target.setTranslate(point.x, point.y); + if (this.doRotate) target.setRotate(point.tan.getAngle()); + } + }); + /** + * @property doRotate + * @for kity.MotionAnimator + * @type {boolean} + * @description 是否让运动的目标沿着路径的切线方向旋转 + * + * @example + * + * ```js + * motionAnimator.doRotate = true; // 目标沿着切线方向旋转 + * ``` + */ + this.doRotate = doRotate; + /** + * @property motionPath + * @for kity.MotionAnimator + * @type {kity.Path|String|PathSegment} + * @description 运动沿着的路径,可以在动画过程中更新 + */ + this.motionPath = path; + } + }); + _p.r(11).extendClass(Shape, { + /** + * @method motion() + * @catalog animate + * @for kity.Shape + * @description 让图形沿着指定的路径运动 + * + * @grammar motion(path, duration, easing, delay, callback) => this + * + * @param {kity.Path|String|PathSegment} path 运动的轨迹,或者是 kity.Path 对象 + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + */ + motion: function(path, duration, easing, delay, callback) { + return this.animate(new MotionAnimator(path), duration, easing, delay, callback); + } + }); + return MotionAnimator; + } +}; + +//src/animate/opacityanimator.js +/** + * @fileOverview + * + * 透明度动画器,让图形动画过度到指定的透明度。 + */ +_p[4] = { + value: function(require) { + var Animator = _p.r(0); + /** + * @class kity.OpacityAnimator + * @catalog animate + * @base kity.Animator + * @description 透明度动画器,让图形动画过度到指定的透明度 + */ + var OpacityAnimator = _p.r(11).createClass("OpacityAnimator", { + base: Animator, + /** + * @constructor + * @for kity.OpacityAnimator + * @grammar new kity.OpacityAnimator(opacity) + * + * @param {Number} opacity 目标透明度,取值范围 0 - 1 + */ + constructor: function(opacity) { + this.callBase({ + beginValue: function(target) { + return target.getOpacity(); + }, + finishValue: opacity, + setter: function(target, value) { + target.setOpacity(value); + } + }); + } + }); + var Shape = _p.r(60); + _p.r(11).extendClass(Shape, { + /** + * @method fxOpacity() + * @catalog animate + * @for kity.Shape + * @description 让图形的透明度以动画的形式过渡到指定的值 + * + * @grammar fxOpacity(opacity, duration, easing, delay, callback) => {this} + * + * @param {Number} opacity 动画的目标透明度 + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + */ + fxOpacity: function(opacity, duration, easing, delay, callback) { + return this.animate(new OpacityAnimator(opacity), duration, easing, delay, callback); + }, + /** + * @method fadeTo() + * @catalog animate + * @for kity.Shape + * @description 让图形的透明度以动画的形式过渡到指定的值 + * + * @grammar fadeTo(opacity, duration, easing, delay, callback) => {this} + * + * @param {Number} opacity 动画的目标透明度 + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + */ + fadeTo: function() { + return this.fxOpacity.apply(this, arguments); + }, + /** + * @method fadeIn() + * @catalog animate + * @for kity.Shape + * @description 让图形淡入 + * + * @grammar fadeIn(duration, easing, delay, callback) => {this} + * + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + */ + fadeIn: function() { + return this.fxOpacity.apply(this, [ 1 ].concat([].slice.call(arguments))); + }, + /** + * @method fadeOut() + * @catalog animate + * @for kity.Shape + * @description 让图形淡出 + * + * @grammar fadeIn(duration, easing, delay, callback) => {this} + * + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + */ + fadeOut: function() { + return this.fxOpacity.apply(this, [ 0 ].concat([].slice.call(arguments))); + } + }); + return OpacityAnimator; + } +}; + +//src/animate/pathanimator.js +/** + * @fileOverview + * + * 路径补间动画器,让图形从一个形状变为另一个形状 + */ +_p[5] = { + value: function(require) { + var Animator = _p.r(0); + var g = _p.r(34); + /** + * @catalog animate + * + * @class kity.PathAnimator + * @base kity.Animator + * @description 路径补间动画器,让图形从一个形状变为另一个形状 + * + * @example + * + * ```js + * var path = new kity.Path('M0,0L0,100'); + * var pa = new kity.PathAnimator('M0,0C100,0,100,0,100,100'); + * pa.start(path, 300); + * ``` + */ + var PathAnimator = _p.r(11).createClass("OpacityAnimator", { + base: Animator, + /** + * @constructor + * @for kity.PathAnimator + * + * @grammar new kity.Path.Animator(path) + * + * @param {String|PathSegment} path 目标形状的路径数据 + * + */ + constructor: function(path) { + this.callBase({ + beginValue: function(target) { + this.beginPath = target.getPathData(); + return 0; + }, + finishValue: 1, + setter: function(target, value) { + target.setPathData(g.pathTween(this.beginPath, path, value)); + } + }); + } + }); + var Path = _p.r(46); + _p.r(11).extendClass(Path, { + /** + * @catalog animate + * + * @method fxPath() + * @for kity.Shape + * @description 以动画的形式把路径变换为新路径 + * + * @grammar fxPath(path, duration, easing, delay, callback) => {this} + * + * @param {String|PathSegment} path 要变换新路径 + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + */ + fxPath: function(path, duration, easing, delay, callback) { + return this.animate(new PathAnimator(path), duration, easing, delay, callback); + } + }); + return PathAnimator; + } +}; + +//src/animate/rotateanimator.js +/** + * @fileOverview + * + * 提供支持目标旋转的动画器 + */ +_p[6] = { + value: function(require) { + var Animator = _p.r(0); + /** + * @class kity.RotateAnimator + * @base Animator + * @description 提供支持目标旋转的动画器 + */ + var RotateAnimator = _p.r(11).createClass("RotateAnimator", { + base: Animator, + /** + * @constructor + * @for kity.RotateAnimator + * + * @grammar new kity.RotateAnimator(deg, ax, ay) + * + * @param {Number} deg 要旋转的角度 + */ + constructor: function(deg) { + this.callBase({ + beginValue: 0, + finishValue: deg, + setter: function(target, value, timeline) { + var delta = timeline.getDelta(); + target.rotate(delta, ax, ay); + } + }); + } + }); + var Shape = _p.r(60); + _p.r(11).extendClass(Shape, { + /** + * @method fxRotate() + * @for kity.Shape + * @description 让目标以动画旋转指定的角度 + * + * @grammar fxRotate(deg, duration, easing, delay) => {this} + * + * @param {Number} deg 要旋转的角度 + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + */ + fxRotate: function(deg, duration, easing, delay, callback) { + return this.animate(new RotateAnimator(deg), duration, easing, delay, callback); + } + }); + return RotateAnimator; + } +}; + +//src/animate/scaleanimator.js +/** + * @fileOverview + * + * 提供支持目标缩放的动画器 + */ +_p[7] = { + value: function(require) { + var Animator = _p.r(0); + /** + * @class kity.ScaleAnimator + * @base kity.Animator + * @description 提供支持目标缩放的动画器 + */ + var ScaleAnimator = _p.r(11).createClass("ScaleAnimator", { + base: Animator, + /** + * @constructor + * @for kity.ScaleAnimator + * + * @grammar new kity.ScaleAnimator(sx, sy) + * @param {Number} sx x 轴的缩放比例 + * @param {Number} sy y 轴的缩放比例 + */ + constructor: function(sx, sy) { + this.callBase({ + beginValue: 0, + finishValue: 1, + setter: function(target, value, timeline) { + var delta = timeline.getDelta(); + var kx = Math.pow(sx, delta); + var ky = Math.pow(sy, delta); + target.scale(ky, kx); + } + }); + } + }); + var Shape = _p.r(60); + _p.r(11).extendClass(Shape, { + /** + * @method fxScale + * @for kity.Shape + * @description 动画缩放当前的图形 + * + * @grammar fxScale(sx, sy, duration, easing, delay, callback) => {this} + * + * @param {Number} sx x 轴的缩放比例 + * @param {Number} sy y 轴的缩放比例 + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + */ + fxScale: function(sx, sy, duration, easing, delay, callback) { + return this.animate(new ScaleAnimator(sx, sy), duration, easing, delay, callback); + } + }); + return ScaleAnimator; + } +}; + +//src/animate/timeline.js +/** + * @fileOverview + * + * 动画时间线的实现 + */ +_p[8] = { + value: function(require) { + var EventHandler = _p.r(33); + var utils = _p.r(12); + var frame = _p.r(2); + function getPercentValue(b, f, p) { + return utils.paralle(b, f, function(b, f) { + return b + (f - b) * p; + }); + } + function getDelta(v1, v2) { + return utils.paralle(v1, v2, function(v1, v2) { + return v2 - v1; + }); + } + function TimelineEvent(timeline, type, param) { + this.timeline = timeline; + this.target = timeline.target; + this.type = type; + for (var name in param) { + if (param.hasOwnProperty(name)) { + this[name] = param[name]; + } + } + } + /** + * @class kity.Timeline + * @catalog animate + * @mixins EventHandler + * @description 动画时间线 + */ + var Timeline = _p.r(11).createClass("Timeline", { + mixins: [ EventHandler ], + /** + * @constructor + * @for kity.Timeline + * @private + * @description 时间线应该由动画器进行构造,不应手动创建 + * + */ + constructor: function(animator, target, duration, easing) { + this.callMixin(); + this.target = target; + this.time = 0; + this.duration = duration; + this.easing = easing; + this.animator = animator; + this.beginValue = animator.beginValue; + this.finishValue = animator.finishValue; + this.setter = animator.setter; + this.status = "ready"; + }, + /** + * @private + * + * 让时间线进入下一帧 + */ + nextFrame: function(frame) { + if (this.status != "playing") { + return; + } + this.time += frame.dur; + this.setValue(this.getValue()); + if (this.time >= this.duration) { + this.timeUp(); + } + frame.next(); + }, + /** + * @method getPlayTime() + * @for kity.Timeline + * @grammar getPlayTime() => {Number} + * @description 获得当前播放的时间,取值区间为 [0, duration] + */ + getPlayTime: function() { + return this.rollbacking ? this.duration - this.time : this.time; + }, + /** + * @method getTimeProportion() + * @for kity.Timeline + * @grammar getTimeProportion() => {Number} + * @description 获得当前播放时间的比例,取值区间为 [0, 1] + */ + getTimeProportion: function() { + return this.getPlayTime() / this.duration; + }, + /** + * @method getValueProportion() + * @for kity.Timeline + * @grammar getValueProportion() => {Number} + * @description 获得当前播放时间对应值的比例,取值区间为 [0, 1];该值实际上是时间比例值经过缓动函数计算之后的值。 + */ + getValueProportion: function() { + return this.easing(this.getPlayTime(), 0, 1, this.duration); + }, + /** + * @method getValue() + * @for kity.Timeline + * @grammar getValue() => {any} + * @description 返回当前播放时间对应的值。 + */ + getValue: function() { + var b = this.beginValue; + var f = this.finishValue; + var p = this.getValueProportion(); + return getPercentValue(b, f, p); + }, + /** + * @private + * + * 把值通过动画器的 setter 设置到目标上 + */ + setValue: function(value) { + this.lastValue = this.currentValue; + this.currentValue = value; + this.setter.call(this.target, this.target, value, this); + }, + /** + * @method getDelta() + * @for kity.Timeline + * @grammar getDelta() => {any} + * @description 返回当前值和上一帧的值的差值 + */ + getDelta: function() { + this.lastValue = this.lastValue === undefined ? this.beginValue : this.lastValue; + return getDelta(this.lastValue, this.currentValue); + }, + /** + * @method play() + * @for kity.Timeline + * @grammar play() => {this} + * @description 让时间线播放,如果时间线还没开始,或者已停止、已结束,则重头播放;如果是已暂停,从暂停的位置继续播放 + */ + play: function() { + var lastStatus = this.status; + this.status = "playing"; + switch (lastStatus) { + case "ready": + if (utils.isFunction(this.beginValue)) { + this.beginValue = this.beginValue.call(this.target, this.target); + } + if (utils.isFunction(this.finishValue)) { + this.finishValue = this.finishValue.call(this.target, this.target); + } + this.time = 0; + this.setValue(this.beginValue); + this.frame = frame.requestFrame(this.nextFrame.bind(this)); + break; + + case "finished": + case "stoped": + this.time = 0; + this.frame = frame.requestFrame(this.nextFrame.bind(this)); + break; + + case "paused": + this.frame.next(); + } + /** + * @event play + * @for kity.Timeline + * @description 在时间线播放后触发 + * + * @param {String} event.lastStatus + * 表示播放前的上一个状态,可能取值为 'ready'、'finished'、'stoped'、'paused' + */ + this.fire("play", new TimelineEvent(this, "play", { + lastStatus: lastStatus + })); + return this; + }, + /** + * @method pause() + * @for kity.Timeline + * @description 暂停当前的时间线 + * + * @grammar pause() => {this} + */ + pause: function() { + this.status = "paused"; + /** + * @event pause + * @for kity.Timeline + * @description 暂停事件,在时间线暂停时触发 + */ + this.fire("pause", new TimelineEvent(this, "pause")); + frame.releaseFrame(this.frame); + return this; + }, + /** + * @method stop() + * @for kity.Timeline + * @description 停止当前时间线 + * + * @grammar stop() => {this} + */ + stop: function() { + this.status = "stoped"; + this.setValue(this.finishValue); + this.rollbacking = false; + /** + * @event stop + * @for kity.Timeline + * @description 停止时间,在时间线停止时触发 + */ + this.fire("stop", new TimelineEvent(this, "stop")); + frame.releaseFrame(this.frame); + return this; + }, + /** + * @private + * + * 播放结束之后的处理 + */ + timeUp: function() { + if (this.repeatOption) { + this.time = 0; + if (this.rollback) { + if (this.rollbacking) { + this.decreaseRepeat(); + this.rollbacking = false; + } else { + this.rollbacking = true; + /** + * @event rollback + * @for kity.Timeline + * @description 回滚事件,在时间线回滚播放开始的时候触发 + */ + this.fire("rollback", new TimelineEvent(this, "rollback")); + } + } else { + this.decreaseRepeat(); + } + if (!this.repeatOption) { + this.finish(); + } else { + /** + * @event repeat + * @for kity.Timeline + * @description 循环事件,在时间线循环播放开始的时候触发 + */ + this.fire("repeat", new TimelineEvent(this, "repeat")); + } + } else { + this.finish(); + } + }, + /** + * @private + * + * 决定播放结束的处理 + */ + finish: function() { + this.setValue(this.finishValue); + this.status = "finished"; + /** + * @event finish + * @for kity.Timeline + * @description 结束事件,在时间线播放结束后触发(包括重复和回滚都结束) + */ + this.fire("finish", new TimelineEvent(this, "finish")); + frame.releaseFrame(this.frame); + }, + /** + * @private + * + * 循环次数递减 + */ + decreaseRepeat: function() { + if (this.repeatOption !== true) { + this.repeatOption--; + } + }, + /** + * @method repeat() + * @for kity.Timeline + * @description 设置时间线的重复选项 + * + * @grammar repeat(repeat, rollback) => {this} + * + * @param {Number|Boolean} repeat + * 是否重复播放,设置为 true 无限循环播放,设置数值则循环指定的次数 + * @param {Boolean} rollback + * 指示是否要回滚播放。 + * 如果设置为真,一次事件到 duration 则一个来回算一次循环次数,否则播放完成一次算一次循环次数 + * + */ + repeat: function(repeat, rollback) { + this.repeatOption = repeat; + this.rollback = rollback; + return this; + } + }); + Timeline.requestFrame = frame.requestFrame; + Timeline.releaseFrame = frame.releaseFrame; + return Timeline; + } +}; + +//src/animate/translateanimator.js +/** + * @fileOverview + * + * 提供让图形移动的动画器 + */ +_p[9] = { + value: function(require) { + var Animator = _p.r(0); + /** + * @class kity.TranslateAnimator + * @base kity.Animator + * @description 提供让图形移动的动画器 + */ + var TranslateAnimator = _p.r(11).createClass("TranslateAnimator", { + base: Animator, + /** + * @constructor + * @for kity.TranslateAnimator + * @grammar new kity.TranslateAnimator(x, y) + * @param {Number} x x 方向上需要移动的距离 + * @param {Number} y y 方向上需要移动的距离 + */ + constructor: function(x, y) { + this.callBase({ + x: 0, + y: 0 + }, { + x: x, + y: y + }, function(target, value, timeline) { + var delta = timeline.getDelta(); + target.translate(delta.x, delta.y); + }); + } + }); + var Shape = _p.r(60); + _p.r(11).extendClass(Shape, { + /** + * @method fxTranslate() + * @for kity.Shape + * @description 让目标以动画平移指定的距离 + * + * @grammar fxTranslate(x, y, duration, easing, delay, callback) => {this} + * + * @param {Number} x x 方向上需要移动的距离 + * @param {Number} y y 方向上需要移动的距离 + * @param {Number|String} duration 动画的播放长度,如 300、"5s"、"0.5min" + * @param {Number|String} delay 动画播放前的延时 + * @param {String|Function} easing 动画播放使用的缓动函数,如 'ease'、'linear'、'swing' + * @param {Function} callback 播放结束之后的回调函数 + */ + fxTranslate: function(x, y, duration, easing, delay, callback) { + return this.animate(new TranslateAnimator(x, y), duration, easing, delay, callback); + } + }); + return TranslateAnimator; + } +}; + +//src/core/browser.js +/** + * @fileOverview + * + * 提供浏览器判断的一些字段 + */ +_p[10] = { + value: function() { + /** + * @class kity.Browser + * @catalog core + * @static + * @description 提供浏览器信息 + */ + var browser = function() { + var agent = navigator.userAgent.toLowerCase(), opera = window.opera, browser; + // 浏览器对象 + browser = { + /** + * @property platform + * @description 获取浏览器所在系统,"Win"->Windows;"Mac"->Mac;"Lux"->Linux + * @type {String} + */ + platform: function(navigator) { + var _p = { + win32: "Win", + macintel: "Mac" + }; + return _p[navigator.platform.toLowerCase()] || "Lux"; + }(navigator), + /** + * 猎豹,区分两种不同内核 + */ + lb: function(agent) { + if (~agent.indexOf("lbbrowser")) { + return ~agent.indexOf("msie") ? "ie" : "chrome"; + } + return false; + }(agent), + /** + * 搜狗 + */ + sg: /se[\s\S]+metasr/.test(agent), + /** + * 百度 + */ + bd: !!~agent.indexOf("bidubrowser"), + /** + * edge浏览器 + */ + edge: !!~agent.indexOf("edge"), + /** + * chrome初始化为false + * @type {Boolean} + */ + chrome: false, + /** + * @property opera + * @for kity.Browser + * @description 判断是否为 Opera 浏览器 + * @type {boolean} + */ + opera: !!opera && opera.version, + /** + * @property webkit + * @for kity.Browser + * @description 判断是否为 Webkit 内核的浏览器 + * @type {boolean} + */ + webkit: agent.indexOf(" applewebkit/") > -1, + /** + * @property mac + * @for kity.Browser + * @description 判断是否为 Mac 下的浏览器 + * @type {boolean} + */ + mac: agent.indexOf("macintosh") > -1 + }; + /** + * @property ie + * @for kity.Browser + * @description 判断是否为 IE 浏览器 + * @type {boolean} + */ + browser.ie = !browser.lb && /(msie\s|trident.*rv:)([\w.]+)/.test(agent); + browser.gecko = navigator.product == "Gecko" && !browser.webkit && !browser.opera && !browser.ie; + var version = 0; + // Internet Explorer 6.0+ + if (browser.ie) { + version = (agent.match(/(msie\s|trident.*rv:)([\w.]+)/)[2] || 0) * 1; + browser.ie11Compat = document.documentMode == 11; + browser.ie9Compat = document.documentMode == 9; + } + // Gecko. + if (browser.gecko) { + var geckoRelease = agent.match(/rv:([\d\.]+)/); + if (geckoRelease) { + geckoRelease = geckoRelease[1].split("."); + version = geckoRelease[0] * 1e4 + (geckoRelease[1] || 0) * 100 + (geckoRelease[2] || 0) * 1; + } + } + // 排除其他chrome内核的浏览器的干扰 + if (/chrome\/(\d+\.\d)/i.test(agent) && !browser.bd && !browser.opera && !browser.lb && !browser.sg && !browser.edge) { + /** + * @property chrome + * @for kity.Browser + * @description 判断是否为 Chrome 浏览器 + * @type {boolean} + */ + browser.chrome = +RegExp["$1"]; + } + if (/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(agent) && !/chrome/i.test(agent)) { + browser.safari = +(RegExp["$1"] || RegExp["$2"]); + } + // Opera 9.50+ + if (browser.opera) version = parseFloat(opera.version()); + // WebKit 522+ (Safari 3+) + if (browser.webkit) version = parseFloat(agent.match(/ applewebkit\/(\d+)/)[1]); + // 搜狗版本号无从得知 + // 猎豹版本号无从得知 + // 百度 + if (browser.bd) version = parseFloat(agent.match(/bidubrowser\/(\d+)/)[1]); + // Opera 9.50+ + if (browser.opera) version = parseFloat(agent.match(/opr\/(\d+)/)[1]); + // edge + if (browser.edge) version = parseFloat(agent.match(/edge\/(\d+)/)[1]); + /** + * @property version + * @for kity.Browser + * @description 获取当前浏览器的版本 + * @type {Number} + */ + browser.version = version; + browser.isCompatible = !browser.mobile && (browser.ie && version >= 6 || browser.gecko && version >= 10801 || browser.opera && version >= 9.5 || browser.air && version >= 1 || browser.webkit && version >= 522 || false); + return browser; + }(); + return browser; + } +}; + +//src/core/class.js +/** + * @fileOverview + * + * 提供 Kity 的 OOP 支持 + */ +_p[11] = { + value: function(require, exports) { + /** + * @class kity.Class + * @catalog core + * @description 所有 kity 类的基类 + * @abstract + */ + function Class() {} + exports.Class = Class; + Class.__KityClassName = "Class"; + /** + * @method base() + * @for kity.Class + * @protected + * @grammar base(name, args...) => {any} + * @description 调用父类指定名称的函数 + * @param {string} name 函数的名称 + * @param {parameter} args... 传递给父类函数的参数 + * + * @example + * + * ```js + * var Person = kity.createClass('Person', { + * toString: function() { + * return 'I am a person'; + * } + * }); + * + * var Male = kity.createClass('Male', { + * base: Person, + * + * toString: function() { + * return 'I am a man'; + * }, + * + * speak: function() { + * return this.base('toString') + ',' + this.toString(); + * } + * }) + * ``` + */ + Class.prototype.base = function(name) { + var caller = arguments.callee.caller; + var method = caller.__KityMethodClass.__KityBaseClass.prototype[name]; + return method.apply(this, Array.prototype.slice.call(arguments, 1)); + }; + /** + * @method callBase() + * @for kity.Class + * @protected + * @grammar callBase(args...) => {any} + * @description 调用父类同名函数 + * @param {parameter} args... 传递到父类同名函数的参数 + * + * @example + * + * ```js + * var Animal = kity.createClass('Animal', { + * constructor: function(name) { + * this.name = name; + * }, + * toString: function() { + * return 'I am an animal name ' + this.name; + * } + * }); + * + * var Dog = kity.createClass('Dog', { + * constructor: function(name) { + * this.callBase(name); + * }, + * toString: function() { + * return this.callBase() + ', a dog'; + * } + * }); + * + * var dog = new Dog('Dummy'); + * console.log(dog.toString()); // "I am an animal name Dummy, a dog"; + * ``` + */ + Class.prototype.callBase = function() { + var caller = arguments.callee.caller; + var method = caller.__KityMethodClass.__KityBaseClass.prototype[caller.__KityMethodName]; + return method.apply(this, arguments); + }; + Class.prototype.mixin = function(name) { + var caller = arguments.callee.caller; + var mixins = caller.__KityMethodClass.__KityMixins; + if (!mixins) { + return this; + } + var method = mixins[name]; + return method.apply(this, Array.prototype.slice.call(arguments, 1)); + }; + Class.prototype.callMixin = function() { + var caller = arguments.callee.caller; + var methodName = caller.__KityMethodName; + var mixins = caller.__KityMethodClass.__KityMixins; + if (!mixins) { + return this; + } + var method = mixins[methodName]; + if (methodName == "constructor") { + for (var i = 0, l = method.length; i < l; i++) { + method[i].call(this); + } + return this; + } else { + return method.apply(this, arguments); + } + }; + /** + * @method pipe() + * @for kity.Class + * @grammar pipe() => {this} + * @description 以当前对象为上线文以及管道函数的第一个参数,执行一个管道函数 + * @param {Function} fn 进行管道操作的函数 + * + * @example + * + * ```js + * var rect = new kity.Rect().pipe(function() { + * this.setWidth(500); + * this.setHeight(300); + * }); + * ``` + */ + Class.prototype.pipe = function(fn) { + if (typeof fn == "function") { + fn.call(this, this); + } + return this; + }; + /** + * @method getType() + * @for kity.Class + * @grammar getType() => {string} + * @description 获得对象的类型 + * + * @example + * + * ```js + * var rect = new kity.Rect(); + * var circle = new kity.Circle(); + * + * console.log(rect.getType()); // "Rect" + * console.log(rect.getType()); // "Circle" + * ``` + */ + Class.prototype.getType = function() { + return this.__KityClassName; + }; + /** + * @method getClass() + * @for kity.Class + * @grammar getClass() => {Class} + * @description 获得对象的类 + * + * @example + * + * ```js + * var rect = new kity.Rect(); + * + * console.log(rect.getClass() === kity.Rect); // true + * console.log(rect instanceof kity.Rect); // true + * ``` + */ + Class.prototype.getClass = function() { + return this.constructor; + }; + // 检查基类是否调用了父类的构造函数 + // 该检查是弱检查,假如调用的代码被注释了,同样能检查成功(这个特性可用于知道建议调用,但是出于某些原因不想调用的情况) + function checkBaseConstructorCall(targetClass, classname) { + var code = targetClass.toString(); + if (!/this\.callBase/.test(code)) { + throw new Error(classname + " : 类构造函数没有调用父类的构造函数!为了安全,请调用父类的构造函数"); + } + } + var KITY_INHERIT_FLAG = "__KITY_INHERIT_FLAG_" + +new Date(); + function inherit(constructor, BaseClass, classname) { + var KityClass = eval("(function " + classname + "( __inherit__flag ) {" + "if( __inherit__flag != KITY_INHERIT_FLAG ) {" + "KityClass.__KityConstructor.apply(this, arguments);" + "}" + "this.__KityClassName = KityClass.__KityClassName;" + "})"); + KityClass.__KityConstructor = constructor; + KityClass.prototype = new BaseClass(KITY_INHERIT_FLAG); + for (var methodName in BaseClass.prototype) { + if (BaseClass.prototype.hasOwnProperty(methodName) && methodName.indexOf("__Kity") !== 0) { + KityClass.prototype[methodName] = BaseClass.prototype[methodName]; + } + } + KityClass.prototype.constructor = KityClass; + return KityClass; + } + function mixin(NewClass, mixins) { + if (false === mixins instanceof Array) { + return NewClass; + } + var i, length = mixins.length, proto, method; + NewClass.__KityMixins = { + constructor: [] + }; + for (i = 0; i < length; i++) { + proto = mixins[i].prototype; + for (method in proto) { + if (false === proto.hasOwnProperty(method) || method.indexOf("__Kity") === 0) { + continue; + } + if (method === "constructor") { + // constructor 特殊处理 + NewClass.__KityMixins.constructor.push(proto[method]); + } else { + NewClass.prototype[method] = NewClass.__KityMixins[method] = proto[method]; + } + } + } + return NewClass; + } + function extend(BaseClass, extension) { + if (extension.__KityClassName) { + extension = extension.prototype; + } + for (var methodName in extension) { + if (extension.hasOwnProperty(methodName) && methodName.indexOf("__Kity") && methodName != "constructor") { + var method = BaseClass.prototype[methodName] = extension[methodName]; + method.__KityMethodClass = BaseClass; + method.__KityMethodName = methodName; + } + } + return BaseClass; + } + /** + * @method kity.createClass() + * @grammar kity.createClass(classname, defines) => {Class} + * @description 创建一个类 + * @param {string} classname 类名,用于调试的时候查看,可选 + * @param {object} defines 类定义 + * defines.base {Class} + * 定义的类的基类,如果不配置,则表示基类为 kity.Class + * defines.mixins {Class[]} + * 定义的类要融合的类列表 + * defines.constructor {Function} + * 定义类的构造函数,如果父类显式定义了构造函数,需要在构造函数中使用 callBase() 方法调用父类的构造函数 + * defines.* {Function} + * 定义类的其它函数 + * + * @example 创建一个类 + * + * ```js + * var Animal = kity.createClass('Animal', { + * constructor: function(name) { + * this.name = name; + * }, + * toString: function() { + * return this.name; + * } + * }); + * + * var a = new Animal('kity'); + * console.log(a.toString()); // "kity" + * ``` + * + * @example 继承一个类 + * + * ```js + * var Cat = kity.createClass('Cat', { + * base: Animal, + * constructor: function(name, color) { + * // 调用父类构造函数 + * this.callBase(name); + * }, + * toString: function() { + * return 'A ' + this.color + ' cat, ' + this.callBase(); + * } + * }); + * + * var cat = new Cat('kity', 'black'); + * console.log(cat.toString()); // "A black cat, kity" + * ``` + * + * @example 混合类的能力 + * ```js + * var Walkable = kity.createClass('Walkable', { + * constructor: function() { + * this.speed = 'fast'; + * }, + * walk: function() { + * console.log('I am walking ' + this.speed); + * } + * }); + * + * var Dog = kity.createClass('Dog', { + * base: Animal, + * mixins: [Walkable], + * constructor: function(name) { + * this.callBase(name); + * this.callMixins(); + * } + * }); + * + * var dog = new Dog('doggy'); + * console.log(dog.toString() + ' say:'); + * dog.walk(); + * ``` + */ + exports.createClass = function(classname, defines) { + var constructor, NewClass, BaseClass; + if (arguments.length === 1) { + defines = arguments[0]; + classname = "AnonymousClass"; + } + BaseClass = defines.base || Class; + if (defines.hasOwnProperty("constructor")) { + constructor = defines.constructor; + if (BaseClass != Class) { + checkBaseConstructorCall(constructor, classname); + } + } else { + constructor = function() { + this.callBase.apply(this, arguments); + this.callMixin.apply(this, arguments); + }; + } + NewClass = inherit(constructor, BaseClass, classname); + NewClass = mixin(NewClass, defines.mixins); + NewClass.__KityClassName = constructor.__KityClassName = classname; + NewClass.__KityBaseClass = constructor.__KityBaseClass = BaseClass; + NewClass.__KityMethodName = constructor.__KityMethodName = "constructor"; + NewClass.__KityMethodClass = constructor.__KityMethodClass = NewClass; + // 下面这些不需要拷贝到原型链上 + delete defines.mixins; + delete defines.constructor; + delete defines.base; + NewClass = extend(NewClass, defines); + return NewClass; + }; + /** + * @method kity.extendClass() + * @grammar kity.extendClass(clazz, extension) => {Class} + * @description 拓展一个已有的类 + * + * @example + * + * ```js + * kity.extendClass(Dog, { + * spark: function() { + * console.log('wao wao wao!'); + * } + * }); + * + * new Dog().spark(); // "wao wao wao!"; + * ``` + */ + exports.extendClass = extend; + } +}; + +//src/core/utils.js +/** + * @fileOverview + * + * 一些常用的工具方法 + */ +_p[12] = { + value: function() { + /** + * @class kity.Utils + * @catalog core + * @static + * @description 提供常用的工具方法 + */ + var utils = { + /** + * @method each() + * @for kity.Utils + * @grammar each(obj, interator, context) + * @param {Object|Array} obj 要迭代的对象或数组 + * @param {Function} iterator 迭代函数 + * @param {Any} context 迭代函数的上下文 + * + * @example 迭代数组 + * + * ```js + * kity.Utils.each([1, 2, 3, 4, 5], function(value, index, array) { + * console.log(value, index); + * }); + * // 1, 0 + * // 2, 1 + * // 3, 2 + * // 4, 3 + * // 5, 4 + * ``` + * + * @example 迭代对象 + * + * ```js + * var obj = { + * name: 'kity', + * version: '1.2.1' + * }; + * var param = []; + * kity.Utils.each(obj, function(value, key, obj) { + * param.push(key + '=' + value); + * }); + * console.log(param.join('&')); // "name=kity&version=1.2.1" + * ``` + */ + each: function each(obj, iterator, context) { + if (obj === null) { + return; + } + if (obj.length === +obj.length) { + for (var i = 0, l = obj.length; i < l; i++) { + if (iterator.call(context, obj[i], i, obj) === false) { + return false; + } + } + } else { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + if (iterator.call(context, obj[key], key, obj) === false) { + return false; + } + } + } + } + }, + /** + * @method extend() + * @for kity.Utils + * @grammar extend(target, sources..., notCover) => {object} + * @description 把源对象的属性合并到目标对象上 + * @param {object} target 目标对象 + * @param {parameter} sources 源对象 + * @param {boolean} notCover 是否不要覆盖源对象已有的属性 + * + * @example + * + * ```js + * var a = { + * key1: 'a1', + * key2: 'a2' + * }; + * + * var b = { + * key2: 'b2', + * key3: 'b3' + * }; + * + * var c = { + * key4: 'c4' + * }; + * + * var d = kity.extend(a, b, c); + * + * console.log(d === a); // true + * console.log(a); // {key1: 'a1', key2: 'b2', key3: 'b3', key4: 'c4'} + * ``` + */ + extend: function extend(t) { + var a = arguments, notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false, len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length; + for (var i = 1; i < len; i++) { + var x = a[i]; + for (var k in x) { + if (!notCover || !t.hasOwnProperty(k)) { + t[k] = x[k]; + } + } + } + return t; + }, + /** + * @method deepExtend() + * @for kity.Utils + * @grammar deepExtend(target, sources..., notCover) + * @description 把源对象的属性合并到目标对象上,如果属性是对象,会递归合并 + * @param {object} target 目标对象 + * @param {parameter} sources 源对象 + * @param {boolean} notCover 是否不要覆盖源对象已有的属性 + */ + deepExtend: function(t, s) { + var a = arguments, notCover = this.isBoolean(a[a.length - 1]) ? a[a.length - 1] : false, len = this.isBoolean(a[a.length - 1]) ? a.length - 1 : a.length; + for (var i = 1; i < len; i++) { + var x = a[i]; + for (var k in x) { + if (!notCover || !t.hasOwnProperty(k)) { + if (this.isObject(t[k]) && this.isObject(x[k])) { + this.deepExtend(t[k], x[k], notCover); + } else { + t[k] = x[k]; + } + } + } + } + return t; + }, + /** + * @method clone() + * @for kity.Utils + * @grammar clone(obj) => {object} + * @description 返回一个对象的克隆副本(非深度复制) + * @param {object} obj 要克隆的对象 + * + * @example + * + * ```js + * var source = { + * key1: { + * key2: 'value2' + * }, + * key3: 'value3' + * }; + * + * var target = kity.Utils.clone(source); + * + * console.log(target === source); // false + * console.log(target.key1 === source.key1); // true + * console.log(target.key3 === source.key3); // true + * ``` + */ + clone: function clone(obj) { + var cloned = {}; + for (var m in obj) { + if (obj.hasOwnProperty(m)) { + cloned[m] = obj[m]; + } + } + return cloned; + }, + /** + * @method copy() + * @for kity.Utils + * @grammar copy(obj) => {object} + * @description 返回一个对象的拷贝副本(深度复制) + * @param {object} obj 要拷贝的对象 + * + * @example + * + * ```js + * var source = { + * key1: { + * key2: 'value2' + * }, + * key3: 'value3' + * }; + * + * var target = kity.Utils.copy(source); + * + * console.log(target === source); // false + * console.log(target.key1 === source.key1); // false + * console.log(target.key3 === source.key3); // true,因为是值类型 + * ``` + */ + copy: function copy(obj) { + if (typeof obj !== "object") return obj; + if (typeof obj === "function") return null; + return JSON.parse(JSON.stringify(obj)); + }, + queryPath: function(path, obj) { + var arr = path.split("."); + var i = 0, tmp = obj, l = arr.length; + while (i < l) { + if (arr[i] in tmp) { + tmp = tmp[arr[i]]; + i++; + if (i >= l || tmp === undefined) { + return tmp; + } + } else { + return undefined; + } + } + }, + getValue: function(value, defaultValue) { + return value !== undefined ? value : defaultValue; + }, + /** + * @method flatten() + * @for kity.Utils + * @grammar flatten(arr) => {Array} + * @description 返回给定数组的扁平化版本 + * @param {Array} arr 要扁平化的数组 + * + * @example + * + * ```js + * var flattened = kity.Utils.flatten([[1, 2], [2, 3], [[4, 5], [6, 7]]]); + * console.log(flattened); // [1, 2, 3, 4, 5, 6, 7]; + * ``` + */ + flatten: function flatten(arr) { + var result = [], length = arr.length, i; + for (i = 0; i < length; i++) { + if (arr[i] instanceof Array) { + result = result.concat(utils.flatten(arr[i])); + } else { + result.push(arr[i]); + } + } + return result; + }, + /** + * @method paralle() + * @for kity.Utils + * @grammar paralle() => {Any} + * + * @description 平行地对 v1 和 v2 进行指定的操作 + * + * 如果 v1 是数字,那么直接进行 op 操作 + * 如果 v1 是对象,那么返回一个对象,其元素是 v1 和 v2 同键值的每个元素平行地进行 op 操作的结果 + * 如果 v1 是数组,那么返回一个数组,其元素是 v1 和 v2 同索引的每个元素平行地进行 op 操作的结果 + * + * @param {Number|Object|Array} v1 第一个操作数 + * @param {Number|Object|Array} v2 第二个操作数 + * @param {Function} op 操作函数 + * + * + * + * @example + * + * ```js + * var a = { + * value1: 1, + * value2: 2, + * value3: [3, 4, 5] + * }; + * + * var b = { + * value1: 2, + * value2: 3, + * value3: [4, 5, 6] + * }; + * + * var c = kity.Utils.paralle(a, b, function(v1, v2) { + * return v1 + v2; + * }); + * + * console.log(c.value1); // 3 + * console.log(c.value2); // 5 + * console.log(c.value3); // [7, 9, 11] + * + * ``` + */ + paralle: function paralle(v1, v2, op) { + var Class, field, index, name, value; + // 数组 + if (v1 instanceof Array) { + value = []; + for (index = 0; index < v1.length; index++) { + value.push(utils.paralle(v1[index], v2[index], op)); + } + return value; + } + // 对象 + if (v1 instanceof Object) { + // 如果值是一个支持原始表示的实例,获取其原始表示 + Class = v1.getClass && v1.getClass(); + if (Class && Class.parse) { + v1 = v1.valueOf(); + v2 = v2.valueOf(); + value = utils.paralle(v1, v2, op); + value = Class.parse(value); + } else { + value = {}; + for (name in v1) { + if (v1.hasOwnProperty(name) && v2.hasOwnProperty(name)) { + value[name] = utils.paralle(v1[name], v2[name], op); + } + } + } + return value; + } + // 是否数字 + if (false === isNaN(parseFloat(v1))) { + return op(v1, v2); + } + return value; + }, + /** + * 创建 op 操作的一个平行化版本 + */ + parallelize: function parallelize(op) { + return function(v1, v2) { + return utils.paralle(v1, v2, op); + }; + } + }; + /** + * @method isString() + * @for kity.Utils + * @grammar isString(unknown) => {boolean} + * @description 判断一个值是否为字符串类型 + * @param {any} unknown 要判断的值 + */ + /** + * @method isFunction() + * @for kity.Utils + * @grammar isFunction(unknown) => {boolean} + * @description 判断一个值是否为函数类型 + * @param {any} unknown 要判断的值 + */ + /** + * @method isArray() + * @for kity.Utils + * @grammar isArray(unknown) => {boolean} + * @description 判断一个值是否为数组类型 + * @param {any} unknown 要判断的值 + */ + /** + * @method isNumber() + * @for kity.Utils + * @grammar isNumber(unknown) => {boolean} + * @description 判断一个值是否为数字类型 + * @param {any} unknown 要判断的值 + */ + /** + * @method isRegExp() + * @for kity.Utils + * @grammar isRegExp(unknown) => {boolean} + * @description 判断一个值是否为正则表达式类型 + * @param {any} unknown 要判断的值 + */ + /** + * @method isObject() + * @for kity.Utils + * @grammar isObject(unknown) => {boolean} + * @description 判断一个值是否为对象类型 + * @param {any} unknown 要判断的值 + */ + /** + * @method isBoolean() + * @for kity.Utils + * @grammar isBoolean(unknown) => {boolean} + * @description 判断一个值是否为布尔类型 + * @param {any} unknown 要判断的值 + */ + utils.each([ "String", "Function", "Array", "Number", "RegExp", "Object", "Boolean" ], function(v) { + utils["is" + v] = function typeCheck(obj) { + return Object.prototype.toString.apply(obj) == "[object " + v + "]"; + }; + }); + return utils; + } +}; + +//src/filter/effect/colormatrixeffect.js +/** + * 颜色矩阵运算效果封装 + */ +_p[13] = { + value: function(require, exports, module) { + var Effect = _p.r(16), Utils = _p.r(12); + var ColorMatrixEffect = _p.r(11).createClass("ColorMatrixEffect", { + base: Effect, + constructor: function(type, input) { + this.callBase(Effect.NAME_COLOR_MATRIX); + this.set("type", Utils.getValue(type, ColorMatrixEffect.TYPE_MATRIX)); + this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC)); + } + }); + Utils.extend(ColorMatrixEffect, { + // 类型常量 + TYPE_MATRIX: "matrix", + TYPE_SATURATE: "saturate", + TYPE_HUE_ROTATE: "hueRotate", + TYPE_LUMINANCE_TO_ALPHA: "luminanceToAlpha", + // 矩阵常量 + MATRIX_ORIGINAL: "10000010000010000010".split("").join(" "), + MATRIX_EMPTY: "00000000000000000000".split("").join(" ") + }); + return ColorMatrixEffect; + } +}; + +//src/filter/effect/compositeeffect.js +/** + * 高斯模糊效果封装 + */ +_p[14] = { + value: function(require, exports, module) { + var Effect = _p.r(16), Utils = _p.r(12); + var CompositeEffect = _p.r(11).createClass("CompositeEffect", { + base: Effect, + constructor: function(operator, input, input2) { + this.callBase(Effect.NAME_COMPOSITE); + this.set("operator", Utils.getValue(operator, CompositeEffect.OPERATOR_OVER)); + if (input) { + this.set("in", input); + } + if (input2) { + this.set("in2", input2); + } + } + }); + Utils.extend(CompositeEffect, { + // operator 常量 + OPERATOR_OVER: "over", + OPERATOR_IN: "in", + OPERATOR_OUT: "out", + OPERATOR_ATOP: "atop", + OPERATOR_XOR: "xor", + OPERATOR_ARITHMETIC: "arithmetic" + }); + return CompositeEffect; + } +}; + +//src/filter/effect/convolvematrixeffect.js +/** + * 像素级别的矩阵卷积运算效果封装 + */ +_p[15] = { + value: function(require, exports, module) { + var Effect = _p.r(16), Utils = _p.r(12); + var ConvolveMatrixEffect = _p.r(11).createClass("ConvolveMatrixEffect", { + base: Effect, + constructor: function(edgeMode, input) { + this.callBase(Effect.NAME_CONVOLVE_MATRIX); + this.set("edgeMode", Utils.getValue(edgeMode, ConvolveMatrixEffect.MODE_DUPLICATE)); + this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC)); + } + }); + Utils.extend(ConvolveMatrixEffect, { + MODE_DUPLICATE: "duplicate", + MODE_WRAP: "wrap", + MODE_NONE: "none" + }); + return ConvolveMatrixEffect; + } +}; + +//src/filter/effect/effect.js +/* + * 效果类 + * 该类型的对象不存储任何内部属性, 所有操作都是针对该类对象所维护的节点进行的 + */ +_p[16] = { + value: function(require, exports, module) { + var svg = _p.r(67), Effect = _p.r(11).createClass("Effect", { + constructor: function(type) { + this.node = svg.createNode(type); + }, + getId: function() { + return this.node.id; + }, + setId: function(id) { + this.node.id = id; + return this; + }, + set: function(key, value) { + this.node.setAttribute(key, value); + return this; + }, + get: function(key) { + return this.node.getAttribute(key); + }, + getNode: function() { + return this.node; + }, + // 返回该效果的result + toString: function() { + return this.node.getAttribute("result") || ""; + } + }); + _p.r(12).extend(Effect, { + // 特效名称常量 + NAME_GAUSSIAN_BLUR: "feGaussianBlur", + NAME_OFFSET: "feOffset", + NAME_COMPOSITE: "feComposite", + NAME_COLOR_MATRIX: "feColorMatrix", + NAME_CONVOLVE_MATRIX: "feConvolveMatrix", + // 输入常量 + INPUT_SOURCE_GRAPHIC: "SourceGraphic", + INPUT_SOURCE_ALPHA: "SourceAlpha", + INPUT_BACKGROUND_IMAGE: "BackgroundImage", + INPUT_BACKGROUND_ALPHA: "BackgroundAlpha", + INPUT_FILL_PAINT: "FillPaint", + INPUT_STROKE_PAINT: "StrokePaint" + }); + return Effect; + } +}; + +//src/filter/effect/gaussianblureffect.js +/** + * 高斯模糊效果封装 + */ +_p[17] = { + value: function(require, exports, module) { + var Effect = _p.r(16), Utils = _p.r(12); + return _p.r(11).createClass("GaussianblurEffect", { + base: Effect, + constructor: function(stdDeviation, input) { + this.callBase(Effect.NAME_GAUSSIAN_BLUR); + this.set("stdDeviation", Utils.getValue(stdDeviation, 1)); + this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC)); + } + }); + } +}; + +//src/filter/effect/offseteffect.js +/** + * 偏移效果封装 + */ +_p[18] = { + value: function(require, exports, module) { + var Effect = _p.r(16), Utils = _p.r(12); + return _p.r(11).createClass("OffsetEffect", { + base: Effect, + constructor: function(dx, dy, input) { + this.callBase(Effect.NAME_OFFSET); + this.set("dx", Utils.getValue(dx, 0)); + this.set("dy", Utils.getValue(dy, 0)); + this.set("in", Utils.getValue(input, Effect.INPUT_SOURCE_GRAPHIC)); + } + }); + } +}; + +//src/filter/effectcontainer.js +/* + * Effect所用的container + */ +_p[19] = { + value: function(require) { + return _p.r(11).createClass("EffectContainer", { + base: _p.r(29), + addEffect: function(point, pos) { + return this.addItem.apply(this, arguments); + }, + prependEffect: function() { + return this.prependItem.apply(this, arguments); + }, + appendEffect: function() { + return this.appendItem.apply(this, arguments); + }, + removeEffect: function(pos) { + return this.removeItem.apply(this, arguments); + }, + addEffects: function() { + return this.addItems.apply(this, arguments); + }, + setEffects: function() { + return this.setItems.apply(this, arguments); + }, + getEffect: function() { + return this.getItem.apply(this, arguments); + }, + getEffects: function() { + return this.getItems.apply(this, arguments); + }, + getFirstEffect: function() { + return this.getFirstItem.apply(this, arguments); + }, + getLastEffect: function() { + return this.getLastItem.apply(this, arguments); + }, + handleAdd: function(effectItem, pos) { + var count = this.getEffects().length, nextEffectItem = this.getItem(pos + 1); + // 最后一个节点, 直接追加 + if (count === pos + 1) { + this.node.appendChild(effectItem.getNode()); + return; + } + this.node.insertBefore(effectItem.getNode(), nextEffectItem.getNode()); + } + }); + } +}; + +//src/filter/filter.js +/** + * Filter 基类 + */ +_p[20] = { + value: function(require, exports, module) { + var svg = _p.r(67); + var Class = _p.r(11); + var Filter = Class.createClass("Filter", { + mixins: [ _p.r(19) ], + constructor: function(x, y, width, height) { + this.node = svg.createNode("filter"); + if (x !== undefined) { + this.set("x", x); + } + if (y !== undefined) { + this.set("y", y); + } + if (width !== undefined) { + this.set("width", width); + } + if (height !== undefined) { + this.set("height", height); + } + }, + getId: function() { + return this.id; + }, + setId: function(id) { + this.node.id = id; + return this; + }, + set: function(key, value) { + this.node.setAttribute(key, value); + return this; + }, + get: function(key) { + return this.node.getAttribute(key); + }, + getNode: function() { + return this.node; + } + }); + var Shape = _p.r(60); + Class.extendClass(Shape, { + applyFilter: function(filter) { + var filterId = filter.get("id"); + if (filterId) { + this.node.setAttribute("filter", "url(#" + filterId + ")"); + } + return this; + } + }); + return Filter; + } +}; + +//src/filter/gaussianblurfilter.js +/* + * 高斯模糊滤镜 + */ +_p[21] = { + value: function(require, exports, module) { + var GaussianblurEffect = _p.r(17); + return _p.r(11).createClass("GaussianblurFilter", { + base: _p.r(20), + constructor: function(stdDeviation) { + this.callBase(); + this.addEffect(new GaussianblurEffect(stdDeviation)); + } + }); + } +}; + +//src/filter/projectionfilter.js +/* + * 投影滤镜 + */ +_p[22] = { + value: function(require, exports, module) { + var GaussianblurEffect = _p.r(17), Effect = _p.r(16), ColorMatrixEffect = _p.r(13), Color = _p.r(28), Utils = _p.r(12), CompositeEffect = _p.r(14), OffsetEffect = _p.r(18); + return _p.r(11).createClass("ProjectionFilter", { + base: _p.r(20), + constructor: function(stdDeviation, dx, dy) { + this.callBase(); + this.gaussianblurEffect = new GaussianblurEffect(stdDeviation, Effect.INPUT_SOURCE_ALPHA); + this.gaussianblurEffect.set("result", "gaussianblur"); + this.addEffect(this.gaussianblurEffect); + this.offsetEffect = new OffsetEffect(dx, dy, this.gaussianblurEffect); + this.offsetEffect.set("result", "offsetBlur"); + this.addEffect(this.offsetEffect); + this.colorMatrixEffect = new ColorMatrixEffect(ColorMatrixEffect.TYPE_MATRIX, this.offsetEffect); + this.colorMatrixEffect.set("values", ColorMatrixEffect.MATRIX_ORIGINAL); + this.colorMatrixEffect.set("result", "colorOffsetBlur"); + this.addEffect(this.colorMatrixEffect); + this.compositeEffect = new CompositeEffect(CompositeEffect.OPERATOR_OVER, Effect.INPUT_SOURCE_GRAPHIC, this.colorMatrixEffect); + this.addEffect(this.compositeEffect); + }, + // 设置投影颜色 + setColor: function(color) { + var matrix = null, originMatrix = null, colorValue = []; + if (Utils.isString(color)) { + color = Color.parse(color); + } + if (!color) { + return this; + } + matrix = ColorMatrixEffect.MATRIX_EMPTY.split(" "); + colorValue.push(color.get("r")); + colorValue.push(color.get("g")); + colorValue.push(color.get("b")); + // rgb 分量更改 + for (var i = 0, len = colorValue.length; i < len; i++) { + matrix[i * 5 + 3] = colorValue[i] / 255; + } + // alpha 分量更改 + matrix[18] = color.get("a"); + this.colorMatrixEffect.set("values", matrix.join(" ")); + return this; + }, + // 设置投影透明度 + setOpacity: function(opacity) { + var matrix = this.colorMatrixEffect.get("values").split(" "); + matrix[18] = opacity; + this.colorMatrixEffect.set("values", matrix.join(" ")); + return this; + }, + // 设置阴影偏移量 + setOffset: function(dx, dy) { + this.setOffsetX(dx); + this.setOffsetY(dy); + }, + setOffsetX: function(dx) { + this.offsetEffect.set("dx", dx); + }, + setOffsetY: function(dy) { + this.offsetEffect.set("dy", dy); + }, + setDeviation: function(deviation) { + this.gaussianblurEffect.set("stdDeviation", deviation); + } + }); + } +}; + +//src/graphic/bezier.js +/** + * @fileOverview + * + * 贝塞尔曲线 + */ +_p[23] = { + value: function(require, exports, module) { + /** + * @class kity.Bezier + * @mixins kity.PointContainer + * @base kity.Path + * @description 绘制和使用贝塞尔曲线。贝塞尔曲线作为一个贝塞尔点的容器,任何贝塞尔点的改变都会更改贝塞尔曲线的外观 + */ + return _p.r(11).createClass("Bezier", { + mixins: [ _p.r(51) ], + base: _p.r(46), + /** + * @constructor + * @for kity.Bezier + * + * @grammar new kity.Bezier(bezierPoints) + * + * @param {kity.BezierPoints[]} bezierPoints 贝塞尔点集合,每个元素应该是 {kity.BezierPoint} 类型 + * + * @example + * + * ```js + * var bezier = new kity.Bezier([ + * new kity.BezierPoint(0, 0).setForward(100, 0), + * new kity.BezierPoint(100, 100).setBackward(100, 0) + * ]); + * ``` + */ + constructor: function(bezierPoints) { + this.callBase(); + bezierPoints = bezierPoints || []; + this.changeable = true; + this.setBezierPoints(bezierPoints); + }, + /** + * @method getBezierPoints() + * @for kity.Bezier + * @description 返回当前贝塞尔曲线的贝塞尔点集合 + * + * @grammar getBezierPoints() => {kity.BezierPoints[]} + * + */ + getBezierPoints: function() { + return this.getPoints(); + }, + /** + * @method setBezierPoints() + * @for kity.Bezier + * @description 设置当前贝塞尔曲线的贝塞尔点集合 + * + * @grammar setBeizerPoints(bezierPoints) => {this} + * + * @param {kity.BezierPoint[]} bezierPoints 贝塞尔点集合 + */ + setBezierPoints: function(bezierPoints) { + return this.setPoints(bezierPoints); + }, + //当点集合发生变化时采取的动作 + onContainerChanged: function() { + if (this.changeable) { + this.update(); + } + }, + update: function() { + var drawer = null, bezierPoints = this.getBezierPoints(); + //单独的一个点不画任何图形 + if (bezierPoints.length < 2) { + return; + } + drawer = this.getDrawer(); + drawer.clear(); + var vertex = bezierPoints[0].getVertex(), forward = null, backward = null; + drawer.moveTo(vertex.x, vertex.y); + for (var i = 1, len = bezierPoints.length; i < len; i++) { + vertex = bezierPoints[i].getVertex(); + backward = bezierPoints[i].getBackward(); + forward = bezierPoints[i - 1].getForward(); + drawer.bezierTo(forward.x, forward.y, backward.x, backward.y, vertex.x, vertex.y); + } + return this; + } + }); + } +}; + +//src/graphic/bezierpoint.js +/** + * @fileOverview + * + * 表示一个贝塞尔点 + */ +_p[24] = { + value: function(require, exports, module) { + var ShapePoint = _p.r(63); + var Vector = _p.r(73); + /** + * @class kity.BezierPoint + * + * @description 表示一个贝塞尔点 + * 一个贝塞尔点由顶点坐标(曲线经过的点)、前方控制点、后方控制点表示 + */ + var BezierPoint = _p.r(11).createClass("BezierPoint", { + /** + * @constructor + * @for kity.BezierPoint + * + * @description 创建一个具有默认顶点坐标的贝塞尔点,两个控制点的坐标和顶点一致 + * + * @param {Number} x 顶点的 x 坐标 + * @param {Number} y 顶点的 y 坐标 + * @param {Boolean} isSmooth 指示当前贝塞尔点是否光滑,光滑会约束顶点和两个控制点共线 + */ + constructor: function(x, y, isSmooth) { + //顶点 + this.vertex = new ShapePoint(x, y); + //控制点 + this.forward = new ShapePoint(x, y); + this.backward = new ShapePoint(x, y); + //是否平滑 + this.setSmooth(isSmooth === undefined || isSmooth); + this.setSymReflaction(true); + }, + /** + * @method clone() + * @for kity.BezierPoint + * @description 返回贝塞尔点的一份拷贝 + * + * @grammar clone() => {kity.BezierPoint} + */ + clone: function() { + var newPoint = new BezierPoint(), tmp = null; + tmp = this.getVertex(); + newPoint.setVertex(tmp.x, tmp.y); + tmp = this.getForward(); + newPoint.setForward(tmp.x, tmp.y); + tmp = this.getBackward(); + newPoint.setBackward(tmp.x, tmp.y); + newPoint.setSymReflaction(this.isSymReflaction); + newPoint.setSmooth(this.isSmooth()); + return newPoint; + }, + /** + * @method setVertex() + * @for kity.BezierPoint + * @description 设置贝塞尔点的顶点坐标,注意,控制点的坐标不会跟着变化。希望控制点的坐标跟着变化,请用 moveTo() 方法 + * + * @grammar setVertex(x, y) => {this} + * + * @param {Number} x 顶点的 x 坐标 + * @param {Number} y 顶点的 y 坐标 + */ + setVertex: function(x, y) { + this.vertex.setPoint(x, y); + this.update(); + return this; + }, + /** + * @method moveTo() + * @for kity.BezierPoint + * @description 同步移动整个贝塞尔点,使顶点的移动到指定的坐标中。控制点的位置相对顶点坐标固定。 + * + * @grammar moveTo() => {this} + * + * @param {Number} x 顶点的目标 x 坐标 + * @param {Number} y 顶点的目标 y 坐标 + * + */ + moveTo: function(x, y) { + var oldForward = this.forward.getPoint(), oldBackward = this.backward.getPoint(), oldVertex = this.vertex.getPoint(), //移动距离 + distance = { + left: x - oldVertex.x, + top: y - oldVertex.y + }; + // 更新 + this.forward.setPoint(oldForward.x + distance.left, oldForward.y + distance.top); + this.backward.setPoint(oldBackward.x + distance.left, oldBackward.y + distance.top); + this.vertex.setPoint(x, y); + this.update(); + }, + /** + * @method setForward() + * @for kity.BezierPoint + * @description 设置前方控制点的位置,如果贝塞尔点光滑,后方控制点会跟着联动 + * + * @grammar setForward(x, y) => {this} + * + * @param {Number} x 前方控制点的 x 坐标 + * @param {Number} y 前方控制点的 y 坐标 + */ + setForward: function(x, y) { + this.forward.setPoint(x, y); + //更新后置点 + if (this.smooth) { + this.updateAnother(this.forward, this.backward); + } + this.update(); + this.lastControlPointSet = this.forward; + return this; + }, + /** + * @method setBackward() + * @for kity.BezierPoint + * @description 设置后方控制点的位置,如果贝塞尔点光滑,前方控制点会跟着联动 + * + * @grammar setBackward(x, y) => {this} + * + * @param {Number} x 后方控制点的 x 坐标 + * @param {Number} y 后方控制点的 y 坐标 + */ + setBackward: function(x, y) { + this.backward.setPoint(x, y); + //更新前置点 + if (this.smooth) { + this.updateAnother(this.backward, this.forward); + } + this.update(); + this.lastControlPointSet = this.backward; + return this; + }, + /** + * @method setSymReflaction() + * @for kity.BezierPoint + * @description 设定是否镜像两个控制点的位置 + * + * @grammar setSymReflaction(value) => {this} + * + * @param {boolean} value 如果设置为 true,且贝塞尔点光滑,两个控制点离顶点的距离相等 + */ + setSymReflaction: function(value) { + this.symReflaction = value; + if (this.smooth) this.setSmooth(true); + return this; + }, + /** + * @method isSymReflaction() + * @for kity.BezierPoint + * @description 当前贝塞尔点的两个控制点是否被镜像约束 + * + * @grammar isSymReflaction() => {boolean} + */ + isSymReflaction: function() { + return this.symReflaction; + }, + /** + * @private + * + * 根据前方控制点或后方控制点更新另一方 + */ + updateAnother: function(p, q) { + var v = this.getVertex(), pv = Vector.fromPoints(p.getPoint(), v), vq = Vector.fromPoints(v, q.getPoint()); + vq = pv.normalize(this.isSymReflaction() ? pv.length() : vq.length()); + q.setPoint(v.x + vq.x, v.y + vq.y); + return this; + }, + /** + * @method setSmooth() + * @for kity.BezierPoint + * @description 设置贝塞尔点是否光滑,光滑会约束顶点和两个控制点共线 + * + * @param {Boolean} isSmooth 设置为 true 让贝塞尔点光滑 + */ + setSmooth: function(isSmooth) { + var lc; + this.smooth = !!isSmooth; + if (this.smooth && (lc = this.lastControlPointSet)) { + this.updateAnother(lc, lc == this.forward ? this.backward : this.forward); + } + return this; + }, + /** + * @method isSmooth() + * @for kity.BezierPoint + * @description 判断贝塞尔点是否光滑 + * + * @grammar isSmooth() => {boolean} + */ + isSmooth: function() { + return this.smooth; + }, + /** + * @method getVertex() + * @for kity.BezierPoint + * @description 获得当前贝塞尔点的顶点 + * + * @grammar getVertex() => {kity.ShapePoint} + */ + getVertex: function() { + return this.vertex.getPoint(); + }, + /** + * @method getForward() + * @for kity.BezierPoint + * @description 获得当前贝塞尔点的前方控制点 + * + * @grammar getForward() => {kity.ShapePoint} + */ + getForward: function() { + return this.forward.getPoint(); + }, + /** + * @method getBackward() + * @for kity.BezierPoint + * @description 获得当前贝塞尔点的后方控制点 + * + * @grammar getBackward() => {kity.ShapePoint} + */ + getBackward: function() { + return this.backward.getPoint(); + }, + /** + * @private + * + * 联动更新相关的贝塞尔曲线 + */ + update: function() { + if (!this.container) { + return this; + } + //新增参数 this, 把当前引起变化的点传递过去, 以便有需要的地方可以获取到引起变化的源 + if (this.container.update) this.container.update(this); + } + }); + return BezierPoint; + } +}; + +//src/graphic/box.js +/** + * @fileOverview + * + * 表示一个矩形区域 + */ +_p[25] = { + value: function(require, exports, module) { + /** + * @class kity.Box + * @description 表示一个矩形区域 + */ + var Box = _p.r(11).createClass("Box", { + /** + * @constructor + * @for kity.Box + * + * @grammar new kity.Box(x, y, width, height) + * @grammar new kity.Box(box) + * + * @param {Number} x|box.x 矩形区域的 x 坐标 + * @param {Number} y|box.y 矩形区域的 y 坐标 + * @param {Number} width|box.width 矩形区域的宽度 + * @param {Number} height|box.height 矩形区域的高度 + * + * @example + * + * ```js + * var box = new kity.Box(10, 20, 50, 50); + * var box2 = new kity.Box({x: 10, y: 20, width: 50, height: 50}); + * ``` + */ + constructor: function(x, y, width, height) { + var box = arguments[0]; + if (box && typeof box === "object") { + x = box.x; + y = box.y; + width = box.width; + height = box.height; + } + if (width < 0) { + x -= width = -width; + } + if (height < 0) { + y -= height = -height; + } + /** + * @property x + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的 x 坐标 + */ + this.x = x || 0; + /** + * @property y + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的 y 坐标 + */ + this.y = y || 0; + /** + * @property width + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的宽度 + */ + this.width = width || 0; + /** + * @property height + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的高度 + */ + this.height = height || 0; + /** + * @property left + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的最左侧坐标,等价于 x 的值 + */ + this.left = this.x; + /** + * @property right + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的最右侧坐标,等价于 x + width 的值 + */ + this.right = this.x + this.width; + /** + * @property top + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的最上侧坐标,等价于 y 的值 + */ + this.top = this.y; + /** + * @property bottom + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的最下侧坐标,等价于 y + height 的值 + */ + this.bottom = this.y + this.height; + /** + * @property cx + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的中心 x 坐标 + */ + this.cx = this.x + this.width / 2; + /** + * @property cy + * @for kity.Box + * @type {Number} + * @readOnly + * @description 矩形区域的中心 y 坐标 + */ + this.cy = this.y + this.height / 2; + }, + /** + * @method getRangeX() + * @for kity.Box + * @description 获得矩形区域的 x 值域 + * + * @grammar getRangeX() => {Number[]} + * + * @example + * + * var box = new kity.Box(10, 10, 30, 50); + * console.log(box.getRangeX()); // [10, 40] + */ + getRangeX: function() { + return [ this.left, this.right ]; + }, + /** + * @method getRangeY() + * @for kity.Box + * @description 获得矩形区域的 y 值域 + * + * @grammar getRangeY() => {Number[]} + * + * @example + * + * var box = new kity.Box(10, 10, 30, 50); + * console.log(box.getRangeY()); // [10, 60] + */ + getRangeY: function() { + return [ this.top, this.bottom ]; + }, + /** + * @method merge() + * @for kity.Box + * @description 把当前矩形区域和指定的矩形区域合并,返回一个新的矩形区域(即包含两个源矩形区域的最小矩形区域) + * + * @grammar merge(another) => {kity.Box} + * @param {kity.Box} another 要合并的矩形区域 + * + * @example + * + * ```js + * var box1 = new kity.Box(10, 10, 50, 50); + * var box2 = new kity.Box(30, 30, 50, 50); + * var box3 = box1.merge(box2); + * console.log(box3.valueOf()); // [10, 10, 70, 70] + * ``` + */ + merge: function(another) { + if (this.isEmpty()) { + return new Box(another.x, another.y, another.width, another.height); + } + var left = Math.min(this.left, another.left), right = Math.max(this.right, another.right), top = Math.min(this.top, another.top), bottom = Math.max(this.bottom, another.bottom); + return new Box(left, top, right - left, bottom - top); + }, + /** + * @method intersect() + * @for kity.Box + * @description 求当前矩形区域和指定的矩形区域重叠的矩形区域 + * + * @grammar intersect(another) => {kity.Box} + * @param {kity.Box} another 要求重叠的矩形区域 + * + * @example + * + * ```js + * var box1 = new kity.Box(10, 10, 50, 50); + * var box2 = new kity.Box(30, 30, 50, 50); + * var box3 = box1.intersect(box2); + * console.log(box3.valueOf()); // [30, 30, 20, 20] + * ``` + */ + intersect: function(another) { + if (!another instanceof Box) { + another = new Box(another); + } + var left = Math.max(this.left, another.left), right = Math.min(this.right, another.right), top = Math.max(this.top, another.top), bottom = Math.min(this.bottom, another.bottom); + if (left > right || top > bottom) return new Box(); + return new Box(left, top, right - left, bottom - top); + }, + /** + * @method expand() + * @for kity.Box + * @description 扩展(或收缩)当前的盒子,返回新的盒子 + * + * @param {Number} top + * 矩形区域的上边界往上扩展的值;如果是负数,则上边界往下收缩 + * + * @param {Number} right + * [Optional] 矩形区域的右边界往右拓展的值; + * 如果是负数,则右边界往左收缩; + * 如果不设置该值,使用和 top 同样的值。 + * + * @param {Number} bottom + * [Optional] 矩形区域的下边界往下拓展的值; + * 如果是负数,则下边界往上收缩; + * 如果不设置该值,使用和 top 同样的值。 + * + * @param {Number} left + * [Optional] 矩形区域的左边界往左拓展的值; + * 如果是负数,则左边界往右收缩; + * 如果不设置该值,使用和 right 同样的值。 + * + * @example + * + * ```js + * var box = new kity.Box(10, 10, 20, 20); + * var box1 = box.expand(10); // [0, 0, 40, 40] + * var box2 = box.expand(10, 20); // [0, -10, 40, 60] + * var box3 = box.expand(1, 2, 3, 4); // [9, 8, 24, 26] + * ``` + */ + expand: function(top, right, bottom, left) { + if (arguments.length < 1) { + return new Box(this); + } + if (arguments.length < 2) { + right = top; + } + if (arguments.length < 3) { + bottom = top; + } + if (arguments.length < 4) { + left = right; + } + var x = this.left - left, y = this.top - top, width = this.width + right, height = this.height + top; + return new Box(x, y, width, height); + }, + /** + * @method valueOf() + * @for kity.Box + * @description 返回当前盒子的数组表示 + * + * @grammar valueOf() => {Number[]} + * + * @example + * + * ```js + * var box = new kity.Box(0, 0, 200, 50); + * console.log(box.valueOf()); // [0, 0, 200, 50] + * ``` + */ + valueOf: function() { + return [ this.x, this.y, this.width, this.height ]; + }, + /** + * @method toString() + * @for kity.Box + * @description 返回当前盒子的字符串表示 + * + * @grammar toString() => {String} + * + * @example + * + * ```js + * var box = new kity.Box(0, 0, 200, 50); + * console.log(box.toString()); // "0 0 200 50" + */ + toString: function() { + return this.valueOf().join(" "); + }, + /** + * @method isEmpty() + * @for kity.Box + * @description 判断当前盒子是否具有尺寸(面积大 + * + * @grammar isEmpty() => {boolean} + * + * @example + * ```js + * var box = new kity.Box(0, 0, 0, 100000); + * console.log(box.isEmpty()); // true + * ``` + */ + isEmpty: function() { + return !this.width || !this.height; + } + }); + /** + * @method parse() + * @static + * @for kity.Box + * @description 解析一个字符串或数组为 kity.Box 对象 + * + * @grammar kity.Box.parse(any) => {kity.Box} + * + * @param {Number[]|String} any 要解析的字符串或数组 + * + * @example + * + * ```js + * console.log(kity.Box.parse('0 0 100 200')); + * console.log(kity.Box.parse([0, 0, 100, 200])); + * ``` + */ + Box.parse = function(any) { + if (typeof any == "string") { + return Box.parse(any.split(/[\s,]+/).map(parseFloat)); + } + if (any instanceof Array) { + return new Box(any[0], any[1], any[2], any[3]); + } + if ("x" in any) return new Box(any); + return null; + }; + return Box; + } +}; + +//src/graphic/circle.js +/** + * @fileOverview + * + * 绘制和使用圆形 + */ +_p[26] = { + value: function(require, exports, module) { + /** + * @class kity.Circle + * @base kity.Ellipse + * @description 表示一个圆形 + */ + return _p.r(11).createClass("Circle", { + base: _p.r(32), + /** + * @constructor + * @for kity.Circle + * + * @grammar new kity.Circle(radius, cx, cy) + * + * @param {Number} radius 半径 + * @param {Number} cx 圆心 x 坐标 + * @param {Number} cy 圆心 y 坐标 + */ + constructor: function(radius, cx, cy) { + this.callBase(radius, radius, cx, cy); + }, + /** + * @method + * @for kity.Circle + * @description 获取圆形的半径 + * + * @grammar getRadius() => {Number} + */ + getRadius: function() { + return this.getRadiusX(); + }, + /** + * @method + * @for kity.Circle + * @description 设置圆形的半径 + * + * @grammar setRadius() => {this} + * + * @param {Number} radius 半径大小 + */ + setRadius: function(radius) { + return this.callBase(radius, radius); + } + }); + } +}; + +//src/graphic/clip.js +/** + * @fileOverview + * + * 支持图形裁切 + */ +_p[27] = { + value: function(require, exports, module) { + var Class = _p.r(11); + var Shape = _p.r(60); + /** + * @class kity.Clip + * @base kity.Resource + * @mixins kity.ShapeContainer + * + * @description 创建图形裁切,用于裁切目标图形 + */ + var Clip = Class.createClass("Clip", { + base: Shape, + mixins: [ _p.r(61) ], + /** + * @constructor + * @for kity.Clip + * + * @grammar new kity.Clip(paper) + * + * @param {kity.Paper} paper 资源所属的文档 + * + * @example + * + * ```js + * var circle = paper.put(new kity.Circle(100).fill('yellow')); + * var clip = new kity.Clip(paper); + * clip.addShape(new kity.Circle(100, 50, 0)); + * clip.clip(circle); + * ``` + */ + constructor: function(paper) { + this.callBase("clipPath", paper); + }, + /** + * @method clip() + * @for kity.Clip + * @description 将裁切应用到指定的图形上,应用之后,目标图形将显示与裁切形状重合的部分 + * + * @grammar clip(shape) => {this} + * + * @param {kity.Shape} shape 要应用裁切的图形 + */ + clip: function(shape) { + shape.getNode().setAttribute("clip-path", this); + return this; + } + }); + Class.extendClass(Shape, { + /** + * @method clipWidth() + * @for kity.Shape + * + * @grammar clipWidth(clip) => {this} + * + * @param {kity.Clip|kity.Shape} clip 要用于裁切当前图形的图形; + * 如果 clip 本身是一个裁切对象(kity.Clip 类型),则直接裁切; + * 否则将创建新的裁切包含给定的图形,然后对当前图形进行裁切 + * + * @example + * + * ```js + * var circle = paper.put(new kity.Circle(100)); + * var rect = paper.put(new kity.Rect(100, 100, -100, 0)); + * + * circle.clipWidth(rect); + * ``` + */ + clipWith: function(clip) { + if (clip instanceof Shape) { + clip = new Clip(clip.getPaper()).addShape(clip); + } + clip.clip(this); + return this; + } + }); + return Clip; + } +}; + +//src/graphic/color.js +/** + * @fileOverview + * + * 提供颜色支持 + */ +_p[28] = { + value: function(require, exports, module) { + var Utils = _p.r(12), StandardColor = _p.r(64), ColorUtils = {}, /** + * @class kity.Color + * @description 表示一个颜色 + */ + Color = _p.r(11).createClass("Color", { + /** + * @constructor + * @for kity.Color + * + * @grammar new kity.Color(r, g, b) + * @grammar new kity.Color(r, g, b, a) + * @grammar new kity.Color(colorString) + * + * @param {Number} r 红色分量,取值 0 - 255 + * @param {Number} g 绿色分量,取值 0 - 255 + * @param {Number} b 蓝色分量,取值 0 - 255 + * @param {Number} a 透明度(可选),取值 0 - 100 + * @param {String} colorString 一个代表颜色的字符串,可以是: + * 熟知颜色表:如 'red', 'yellow' + * HEX 表示:如 '#368', '#123456' + * RGB 表示:如 'RGB(200, 200, 0)', 'RGBA(200, 200, 200, .5)' + * HSL 表示:如 'HSL(100, 60%, 80%)', 'HSLA(100, 60%, 80%, .5)' + */ + constructor: function() { + var colorValue = null; + //parse构造 + if (typeof arguments[0] === "string") { + colorValue = ColorUtils.parseToValue(arguments[0]); + //解析失败 + if (colorValue === null) { + colorValue = { + r: 0, + g: 0, + b: 0, + h: 0, + s: 0, + l: 0, + a: 1 + }; + } + } else { + colorValue = { + r: arguments[0] | 0, + g: arguments[1] | 0, + b: arguments[2] | 0, + //alpha 默认为1 + a: arguments[3] === undefined ? 1 : parseFloat(arguments[3]) + }; + colorValue = ColorUtils.overflowFormat(colorValue); + //获取hsl分量 + colorValue = Utils.extend(colorValue, ColorUtils.rgbValueToHslValue(colorValue)); + } + this._color = colorValue; + }, + /** + * @method set() + * @for kity.Color + * + * @description 设置当前颜色某个分量的值 + * + * @grammar set(name, value) => {this} + * + * @param {string} name 要设置的颜色通道的名称 + * r: 红色(Red),取值范围 [0, 255] + * g: 绿色(Green),取值范围 [0, 255] + * b: 蓝色(Blue),取值范围 [0, 255] + * a: 透明度(Alpha),取值范围 [0, 1] + * h: 色环角度(Hue),取值范围 [0, 359] + * s: 饱和度(Saturation),取值范围 [0, 100] + * l: 亮度(Lightness),取值范围 [0, 100] + * r、g、b 值和 h、s、l 值会联动修改 + * @param {number} value 要设置的值 + */ + set: function(name, value) { + var values = null; + //设置的值非法 + if (!Color._MAX_VALUE[name]) { + throw new Error("Color set(): Illegal parameter"); + } + if (name !== "a") { + value = Math.floor(value); + } + if (name == "h") { + value = (value + 360) % 360; + } + this._color[name] = Math.max(Color._MIN_VALUE[name], Math.min(Color._MAX_VALUE[name], value)); + if ("rgb".indexOf(name) !== -1) { + this._color = Utils.extend(this._color, ColorUtils.rgbValueToHslValue(this._color)); + } else if ("hsl".indexOf(name) !== -1) { + this._color = Utils.extend(this._color, ColorUtils.hslValueToRGBValue(this._color)); + } + return this; + }, + /** + * @method inc() + * + * @description 返回新的颜色,表示当前颜色增加指定通道的值之后的颜色 + * + * @grammar inc(name, value) => {this} + * + * @param {string} name 要增加的通道的名称,具体含义请查看 set 方法 + * @param {number} value 增量值 + */ + inc: function(name, value) { + value = this.get(name) + value; + if (name == "h") { + value = (value + 360) % 360; + } else { + value = Math.min(Color._MAX_VALUE[name], value); + value = Math.max(Color._MIN_VALUE[name], value); + } + return this.clone().set(name, value); + }, + /** + * @method dec() + * @for kity.Color + * + * @description 返回新的颜色,表示当前颜色减少指定通道的值之后的颜色 + * + * @grammar dec(name, value) => {this} + * + * @param {string} name 要减少值的通道的名称,具体含义请查看 set 方法 + * @param {number} value 减量值 + */ + dec: function(name, value) { + return this.inc(name, -value); + }, + /** + * @method clone() + * @for kity.Color + * + * @description 返回当前颜色的一个拷贝 + * + * @grammar clone() => {kity.Color} + */ + clone: function() { + return new Color(this.toRGBA()); + }, + /** + * @method get() + * @for kity.Color + * + * @description 返回当前颜色指定的分量 + * + * @grammar get() => {number} + */ + get: function(name) { + if (!Color._MAX_VALUE[name]) { + return null; + } + return this._color[name]; + }, + getValues: function() { + return Utils.clone(this._color); + }, + /** + * @method valueOf() + * @for kity.Color + * + * @description 返回当前颜色的一个字面量表示 + * + * @return {plain} 颜色字面量,其结构为: + * { + * r: 0, + * g: 0, + * b: 0, + * a: 0, + * h: 0, + * s: 0, + * l: 0 + * } + */ + valueOf: function() { + return this.getValues(); + }, + /** + * @method toRGB() + * @for kity.Color + * + * @description 返回当前颜色的 RGB 表示,如果颜色有透明度,将抛弃透明度属性(想要保留请使用 toRGBA())方法。 + * + * @grammar toRGB() => {string} + */ + toRGB: function() { + return ColorUtils.toString(this._color, "rgb"); + }, + /** + * @method toRGBA() + * @for kity.Color + * + * @description 返回当前颜色的 RGBA 表示 + * + * @grammar toRGBA() => {string} + */ + toRGBA: function() { + return ColorUtils.toString(this._color, "rgba"); + }, + /** + * @method toHEX() + * @for kity.Color + * + * @description 返回当前颜色的 HEX 表示,如果颜色有透明度,将抛弃透明度属性(想要保留请使用 toRGBA())方法。 + * + * @grammar toHEX() => {string} + */ + toHEX: function() { + return ColorUtils.toString(this._color, "hex"); + }, + /** + * @method toHSL() + * @for kity.Color + * + * @description 返回当前颜色的 HSL 表示,如果颜色有透明度,将抛弃透明度属性(想要保留请使用 toHSLA())方法。 + * + * @grammar toHSL() => {string} + */ + toHSL: function() { + return ColorUtils.toString(this._color, "hsl"); + }, + /** + * @method toHSLA() + * @for kity.Color + * + * @description 返回当前颜色的 HSLA 表示 + * + * @grammar toHSLA() => {string} + */ + toHSLA: function() { + return ColorUtils.toString(this._color, "hsla"); + }, + /** + * @method toString() + * @for kity.Color + * + * @description 返回当前颜色的 RGB 或 RGBA 表示,如果颜色有透明度,将使用 RGBA 形式,否则是 RGB 形式 + * @grammar toString() => {string} + */ + toString: function() { + if (this._color.a === 1) { + return this.toRGB(); + } + return this.toRGBA(); + } + }); + //Color 静态方法 + Utils.extend(Color, { + //各分量可表示的最大值 + _MAX_VALUE: { + r: 255, + g: 255, + b: 255, + h: 360, + s: 100, + l: 100, + a: 1 + }, + //各分量最小值 + _MIN_VALUE: { + r: 0, + g: 0, + b: 0, + h: 0, + s: 0, + l: 0, + a: 0 + }, + //分量常量 + R: "r", + G: "g", + B: "b", + H: "h", + S: "s", + L: "l", + A: "a", + /** + * @method parse() + * @static + * @for kity.Color + * + * @description 解析一个颜色字符串为 kity.Color 对象 + * + * @grammar kity.Color.parse(valStr) + * + * @param {string} valStr 一个代表颜色的字符串,可以是: + * 熟知颜色表:如 'red', 'yellow' + * HEX 表示:如 '#368', '#123456' + * RGB 表示:如 'RGB(200, 200, 0)', 'RGBA(200, 200, 200, .5)' + * HSL 表示:如 'HSL(100, 60%, 80%)', 'HSLA(100, 60%, 80%, .5)' + */ + parse: function(valStr) { + var rgbValue; + if (Utils.isString(valStr)) { + rgbValue = ColorUtils.parseToValue(valStr); + } + if (Utils.isObject(valStr) && "r" in valStr) { + rgbValue = valStr; + } + //解析失败, 返回一个默认color实例 + if (rgbValue === null) { + return new Color(); + } + return new Color(rgbValue.r, rgbValue.g, rgbValue.b, rgbValue.a); + }, + /** + * @method createHSL() + * @for kity.Color + * @static + * + * @description 创建一个 HSL 颜色 + * + * @grammar kity.Color.createHSL(h, s, l) => {kity.Color} + * + * @param {number} h 色环(Hue)分量值,取值范围 [0, 359] + * @param {number} s 饱和度(Saturation)分量值,取值范围 [0, 100] + * @param {number} l 亮度(Lighteness)分量值,取值范围 [0, 100] + */ + createHSL: function(h, s, l) { + return Color.createHSLA(h, s, l, 1); + }, + /** + * @method createHSLA() + * @for kity.Color + * @static + * + * @description 创建一个 HSLA 颜色 + * + * @grammar kity.Color.createHSLA(h, s, l, a) => {kity.Color} + * + * @param {number} h 色环(Hue)分量值,取值范围 [0, 359] + * @param {number} s 饱和度(Saturation)分量值,取值范围 [0, 100] + * @param {number} l 亮度(Lighteness)分量值,取值范围 [0, 100] + * @param {number} a 透明度(Alpha)分量值,取值范围 [0, 1] + */ + createHSLA: function(h, s, l, a) { + var colorValue = null; + s += "%"; + l += "%"; + colorValue = [ "hsla(" + h, s, l, a + ")" ]; + return Color.parse(colorValue.join(", ")); + }, + /** + * @method createRGB() + * @for kity.Color + * @static + * + * @description 创建一个 RGB 颜色 + * + * @grammar kity.Color.createRGB(r, g, b) => {kity.Color} + * + * @param {number} r 红色(Red)分量值,取值范围 [0, 255] + * @param {number} g 绿色(Green)分量值,取值范围 [0, 255] + * @param {number} b 蓝色(Blue)分量值,取值范围 [0, 255] + */ + createRGB: function(r, g, b) { + return Color.createRGBA(r, g, b, 1); + }, + /** + * @method createRGBA() + * @for kity.Color + * @static + * + * @description 创建一个 RGBA 颜色 + * + * @grammar kity.Color.createRGBA(r, g, b, a) => {kity.Color} + * + * @param {number} r 红色(Red)分量值,取值范围 [0, 255] + * @param {number} g 绿色(Green)分量值,取值范围 [0, 255] + * @param {number} b 蓝色(Blue)分量值,取值范围 [0, 255] + * @param {number} a 透明度(Alpha)分量值,取值范围 [0, 1] + */ + createRGBA: function(r, g, b, a) { + return new Color(r, g, b, a); + } + }); + //内部工具对象 + Utils.extend(ColorUtils, { + parseToValue: function(valStr) { + var rgbaValue = {}; + /* 优先检测在调色板中是否有对应的颜色 */ + valStr = StandardColor.EXTEND_STANDARD[valStr] || StandardColor.COLOR_STANDARD[valStr] || valStr; + /* 颜色转换 */ + //hex格式 + if (/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(valStr)) { + rgbaValue = ColorUtils.hexToValue(valStr); + } else if (/^(rgba?)/i.test(valStr)) { + rgbaValue = ColorUtils.rgbaToValue(valStr); + } else if (/^(hsla?)/i.test(valStr)) { + rgbaValue = ColorUtils.hslaToValue(valStr); + } else { + return null; + } + return ColorUtils.overflowFormat(rgbaValue); + }, + hexToValue: function(hexStr) { + var result = {}, keys = [ "r", "g", "b" ]; + if (/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(hexStr)) { + hexStr = RegExp.$1.split(""); + Utils.each(keys, function(key, index) { + if (hexStr.length === 3) { + result[key] = ColorUtils.toNumber(hexStr[index] + hexStr[index]); + } else { + result[key] = ColorUtils.toNumber(hexStr[index * 2] + hexStr[index * 2 + 1]); + } + }); + //转换出hsl值 + result = Utils.extend(result, ColorUtils.rgbValueToHslValue(result)); + result.a = 1; + return result; + } + return null; + }, + rgbaToValue: function(rgbaStr) { + var result = {}, hasAlpha = false, keys = [ "r", "g", "b" ]; + if (/^(rgba?)/i.test(rgbaStr)) { + hasAlpha = RegExp.$1.length === 4; + rgbaStr = rgbaStr.replace(/^rgba?/i, "").replace(/\s+/g, "").replace(/[^0-9,.]/g, "").split(","); + Utils.each(keys, function(key, index) { + result[key] = rgbaStr[index] | 0; + }); + //转换出hsl值 + result = Utils.extend(result, ColorUtils.rgbValueToHslValue(result)); + result.a = hasAlpha ? parseFloat(rgbaStr[3]) : 1; + return result; + } + return null; + }, + hslaToValue: function(hslaStr) { + var result = {}, hasAlpha = false; + if (/^(hsla?)/i.test(hslaStr)) { + hasAlpha = RegExp.$1.length === 4; + hslaStr = hslaStr.replace(/^hsla?/i, "").replace(/\s+/g, "").replace(/[^0-9,.]/g, "").split(","); + //记录hsl值 + result.h = hslaStr[0] | 0; + result.s = hslaStr[1] | 0; + result.l = hslaStr[2] | 0; + //转换出rgb值 + result = Utils.extend(result, ColorUtils.hslValueToRGBValue(result)); + //hsl值转换为rgb值 + result = ColorUtils.hslValueToRGBValue(result); + result.a = hasAlpha ? parseFloat(hslaStr[3]) : 1; + return result; + } + return null; + }, + //hsl值对象转换为rgb值对象 + hslValueToRGBValue: function(hslValue) { + function trans(v1, v2, vH) { + if (vH < 0) { + vH += 1; + } else if (vH > 1) { + vH -= 1; + } + if (6 * vH < 1) { + return v1 + (v2 - v1) * 6 * vH; + } else if (2 * vH < 1) { + return v2; + } else if (3 * vH < 2) { + return v1 + (v2 - v1) * ((2 / 3 - vH) * 6); + } + return v1; + } + var q = null, p = null, result = {}; + hslValue = Utils.extend({}, hslValue); + hslValue.h = hslValue.h / 360; + hslValue.s = hslValue.s / 100; + hslValue.l = hslValue.l / 100; + //分量计算 + if (hslValue.s === 0) { + result.r = result.g = result.b = hslValue.l; + } else { + if (hslValue.l < .5) { + q = hslValue.l * (1 + hslValue.s); + } else { + q = hslValue.l + hslValue.s - hslValue.l * hslValue.s; + } + p = 2 * hslValue.l - q; + result.r = trans(p, q, hslValue.h + 1 / 3); + result.g = trans(p, q, hslValue.h); + result.b = trans(p, q, hslValue.h - 1 / 3); + } + result.r = Math.min(Math.round(result.r * 255), 255); + result.g = Math.min(Math.round(result.g * 255), 255); + result.b = Math.min(Math.round(result.b * 255), 255); + return result; + }, + //rgb值对象转换为hsl值对象 + rgbValueToHslValue: function(rgbValue) { + var max = null, min = null, result = {}; + rgbValue = Utils.extend({}, rgbValue); + rgbValue.r = rgbValue.r / 255; + rgbValue.g = rgbValue.g / 255; + rgbValue.b = rgbValue.b / 255; + max = Math.max(rgbValue.r, rgbValue.g, rgbValue.b); + min = Math.min(rgbValue.r, rgbValue.g, rgbValue.b); + //h分量计算 + if (max === min) { + result.h = 0; + } else if (max === rgbValue.r) { + if (rgbValue.g >= rgbValue.b) { + result.h = 60 * (rgbValue.g - rgbValue.b) / (max - min); + } else { + result.h = 60 * (rgbValue.g - rgbValue.b) / (max - min) + 360; + } + } else if (max === rgbValue.g) { + result.h = 60 * (rgbValue.b - rgbValue.r) / (max - min) + 120; + } else if (max === rgbValue.b) { + result.h = 60 * (rgbValue.r - rgbValue.g) / (max - min) + 240; + } + //l分量计算 + result.l = (max + min) / 2; + //s分量计算 + if (result.l === 0 || max === min) { + result.s = 0; + } else if (result.l > 0 && result.l <= .5) { + result.s = (max - min) / (max + min); + } else { + result.s = (max - min) / (2 - max - min); + } + //格式化hsl结果 + result.h = Math.round(result.h); + result.s = Math.round(result.s * 100); + result.l = Math.round(result.l * 100); + return result; + }, + toString: function(colorValue, type) { + var vals = []; + colorValue = Utils.extend({}, colorValue); + if (type.indexOf("hsl") !== -1) { + colorValue.s += "%"; + colorValue.l += "%"; + } + if (type !== "hex") { + Utils.each(type.split(""), function(key) { + vals.push(colorValue[key]); + }); + return (type + "(" + vals.join(", ") + ")").toLowerCase(); + } else { + vals.push(ColorUtils.toHexValue(+colorValue.r)); + vals.push(ColorUtils.toHexValue(+colorValue.g)); + vals.push(ColorUtils.toHexValue(+colorValue.b)); + return ("#" + vals.join("")).toLowerCase(); + } + }, + //16进制的2个数字转化为10进制, 如果转化失败, 返回0 + toNumber: function(value) { + return Number("0x" + value) | 0; + }, + toHexValue: function(value) { + var result = value.toString(16); + return result.length === 1 ? "0" + result : result; + }, + //溢出控制 + overflowFormat: function(value) { + var tmpValue = Utils.extend({}, value), keys = "rgba"; + Utils.each(keys.split(""), function(key) { + if (!tmpValue.hasOwnProperty(key)) { + return; + } + //上溢出 + tmpValue[key] = Math.min(Color._MAX_VALUE[key], tmpValue[key]); + //下溢出 + tmpValue[key] = Math.max(Color._MIN_VALUE[key], tmpValue[key]); + }); + return tmpValue; + } + }); + return Color; + } +}; + +//src/graphic/container.js +_p[29] = { + value: function(require, exports, module) { + function itemRemove() { + this.container.removeItem(this); + return this; + } + return _p.r(11).createClass("Container", { + getItems: function() { + return this.items || (this.items = []); + }, + getItem: function(index) { + return this.getItems()[index]; + }, + getFirstItem: function() { + return this.getItem(0); + }, + getLastItem: function() { + return this.getItem(this.getItems().length - 1); + }, + indexOf: function(item) { + return this.getItems().indexOf(item); + }, + eachItem: function(fn) { + var items = this.getItems(), length = items.length, i; + for (i = 0; i < length; i++) { + fn.call(this, i, items[i]); + } + return this; + }, + addItem: function(item, pos, noEvent) { + var items = this.getItems(), length = items.length; + if (~items.indexOf(item)) { + return this; + } + if (!(pos >= 0 && pos < length)) { + pos = length; + } + items.splice(pos, 0, item); + if (typeof item === "object") { + item.container = this; + item.remove = itemRemove; + } + this.handleAdd(item, pos); + if (!noEvent) { + this.onContainerChanged("add", [ item ]); + } + return this; + }, + addItems: function(items) { + for (var i = 0, l = items.length; i < l; i++) { + this.addItem(items[i], -1, true); + } + this.onContainerChanged("add", items); + return this; + }, + setItems: function(items) { + return this.clear().addItems(items); + }, + appendItem: function(item) { + return this.addItem(item); + }, + prependItem: function(item) { + return this.addItem(item, 0); + }, + removeItem: function(pos, noEvent) { + if (typeof pos !== "number") { + return this.removeItem(this.indexOf(pos)); + } + var items = this.getItems(), length = items.length, item = items[pos]; + if (item === undefined) { + return this; + } + items.splice(pos, 1); + if (item.container) { + delete item.container; + } + if (item.remove) { + delete item.remove; + } + this.handleRemove(item, pos); + if (!noEvent) { + this.onContainerChanged("remove", [ item ]); + } + return this; + }, + clear: function() { + var removed = []; + var item; + while (item = this.getFirstItem()) { + removed.push(item); + this.removeItem(0, true); + } + this.onContainerChanged("remove", removed); + return this; + }, + onContainerChanged: function(type, items) {}, + handleAdd: function(item, index) {}, + handleRemove: function(item, index) {} + }); + } +}; + +//src/graphic/curve.js +/* + * 曲线 + * */ +_p[30] = { + value: function(require, exports, module) { + var Utils = _p.r(12), CurveUtil = { + /* + * 获取由两个以上的点组成的曲线的平移线 + * @param points 曲线上的点的集合, 集合中的点的数量必须大于2 + * @return 平移线数组 + */ + getCurvePanLines: function(points, smoothFactor) { + //计算原始点的中点坐标 + var centerPoints = CurveUtil.getCenterPoints(points), //注意:计算中点连线的中点坐标, 得出平移线 + panLines = CurveUtil.getPanLine(points.length, centerPoints); + //平移线移动到顶点 + return CurveUtil.getMovedPanLines(points, panLines, smoothFactor); + }, + /* + * 计算给定点集合的连线的中点 + * @param points + */ + getCenterPoints: function(points) { + var centerPoints = {}, key = null; + for (var i = 0, j = 0, len = points.length; i < len; i++) { + //j是下一个点的索引 + j = i === len - 1 ? 0 : i + 1; + key = i + "," + j; + //计算中点坐标 + centerPoints[key] = { + x: (points[i].x + points[j].y) / 2, + y: (points[i].x + points[j].y) / 2 + }; + } + return centerPoints; + }, + /* + * 对getCenterPoints()接口获取到的数据做处理, 计算出各个顶点对应的平移线数据 + * @param length 集合中点的个数 + * @param points 点集合, 该集合应该是getCenterPoints()接口返回的数据 + */ + getPanLine: function(length, points) { + var result = {}, //顶点索引 + pointIndex = null; + for (var i = 0, j; i < length; i++) { + var point1 = null, point2 = null; + //计算当前点 + j = (i + 1) % length; + //保存当前处理的顶点索引 + pointIndex = j; + point1 = points[i + "," + j]; + //计算下一个点 + i = j; + j = (i + 1) % length; + point2 = points[i + "," + j]; + result[pointIndex] = { + points: [ { + x: point1.x, + y: point1.y + }, { + x: point2.x, + y: point2.y + } ], + center: { + x: (point1.x + point2.x) / 2, + y: (point1.y + point2.y) / 2 + } + }; + //还原i值 + i = (pointIndex + length - 1) % length; + } + return result; + }, + /* + * 计算平移线移动到顶点后的位置 + * @param points 顶点集合 + * @param panLines 平移线集合 + */ + getMovedPanLines: function(points, panLines, smoothFactor) { + var result = {}; + Utils.each(points, function(point, index) { + //当前平移线 + var currentPanLine = panLines[index], //平移线中点 + center = currentPanLine.center, //移动距离 + distance = { + x: center.x - point.x, + y: center.y - point.y + }; + var currentResult = result[index] = { + points: [], + center: { + x: point.x, + y: point.y + } + }; + //计算控制点到顶点的距离, 并且应用平滑系数到距离上 + Utils.each(currentPanLine.points, function(controlPoint, index) { + var moved = { + x: controlPoint.x - distance.x, + y: controlPoint.y - distance.y + }; + var vertex = currentResult.center; + var dx = moved.x - vertex.x; + var dy = moved.y - vertex.y; + moved.x = vertex.x + smoothFactor * dx; + moved.y = vertex.y + smoothFactor * dy; + currentResult.points.push(moved); + }); + }); + return result; + } + }; + return _p.r(11).createClass("Curve", { + base: _p.r(46), + mixins: [ _p.r(51) ], + constructor: function(points, isColse) { + this.callBase(); + this.setPoints(points || []); + this.closeState = !!isColse; + this.changeable = true; + this.smoothFactor = 1; + this.update(); + }, + //当点集合发生变化时采取的动作 + onContainerChanged: function() { + if (this.changeable) { + this.update(); + } + }, + setSmoothFactor: function(factor) { + this.smoothFactor = factor < 0 ? 0 : factor; + this.update(); + return this; + }, + getSmoothFactor: function() { + return this.smoothFactor; + }, + update: function() { + var points = this.getPoints(), withControlPoints = null, drawer = this.getDrawer(), curPoint = null, curControlPoint = null, prevControlPoint = null; + drawer.clear(); + if (points.length === 0) { + return this; + } else { + drawer.moveTo(points[0]); + } + if (points.length === 1) { + return this; + } + if (points.length === 2) { + drawer.lineTo(points[1]); + return this; + } + //获取已转换过后的带控制点的所有点 + withControlPoints = CurveUtil.getCurvePanLines(points, this.getSmoothFactor()); + for (var i = 1, len = points.length; i < len; i++) { + //当前顶点 + curPoint = withControlPoints[i].center; + //当前控制点 + if (this.closeState || i != len - 1) { + curControlPoint = withControlPoints[i].points[0]; + } else { + //非闭合状态下最后一个点的处理 + curControlPoint = withControlPoints[i].center; + } + if (this.closeState || i != 1) { + prevControlPoint = withControlPoints[i - 1].points[1]; + } else { + //非闭合状态下第一个点的处理 + prevControlPoint = withControlPoints[i - 1].center; + } + drawer.bezierTo(prevControlPoint.x, prevControlPoint.y, curControlPoint.x, curControlPoint.y, curPoint.x, curPoint.y); + } + //处理闭合 + if (this.closeState) { + curPoint = withControlPoints[0].center; + curControlPoint = withControlPoints[0].points[0]; + prevControlPoint = withControlPoints[points.length - 1].points[1]; + drawer.bezierTo(prevControlPoint.x, prevControlPoint.y, curControlPoint.x, curControlPoint.y, curPoint.x, curPoint.y); + } + return this; + }, + close: function() { + this.closeState = true; + return this.update(); + }, + open: function() { + this.closeState = false; + return this.update(); + }, + isClose: function() { + return !!this.closeState; + } + }); + } +}; + +//src/graphic/data.js +_p[31] = { + value: function(require, exports, module) { + return _p.r(11).createClass("Data", { + constructor: function() { + this._data = {}; + }, + setData: function(name, value) { + this._data[name] = value; + return this; + }, + getData: function(name) { + return this._data[name]; + }, + removeData: function(name) { + delete this._data[name]; + return this; + } + }); + } +}; + +//src/graphic/ellipse.js +_p[32] = { + value: function(require, exports, module) { + var Utils = _p.r(12), Point = _p.r(50); + return _p.r(11).createClass("Ellipse", { + base: _p.r(46), + constructor: function(rx, ry, cx, cy) { + this.callBase(); + this.rx = rx || 0; + this.ry = ry || 0; + this.cx = cx || 0; + this.cy = cy || 0; + this.update(); + }, + update: function() { + var rx = this.rx, ry = this.ry, x1 = this.cx + rx, x2 = this.cx - rx, y = this.cy; + var drawer = this.getDrawer(); + drawer.clear(); + drawer.moveTo(x1, y); + drawer.arcTo(rx, ry, 0, 1, 1, x2, y); + drawer.arcTo(rx, ry, 0, 1, 1, x1, y); + return this; + }, + getRadius: function() { + return { + x: this.rx, + y: this.ry + }; + }, + getRadiusX: function() { + return this.rx; + }, + getRadiusY: function() { + return this.ry; + }, + getCenter: function() { + return new Point(this.cx, this.cy); + }, + getCenterX: function() { + return this.cx; + }, + getCenterY: function() { + return this.cy; + }, + setRadius: function(rx, ry) { + this.rx = rx; + this.ry = ry; + return this.update(); + }, + setRadiusX: function(rx) { + this.rx = rx; + return this.update(); + }, + setRadiusY: function(ry) { + this.ry = ry; + return this.update(); + }, + setCenter: function(cx, cy) { + if (arguments.length == 1) { + var p = Point.parse(arguments[0]); + cx = p.x; + cy = p.y; + } + this.cx = cx; + this.cy = cy; + return this.update(); + }, + setCenterX: function(cx) { + this.cx = cx; + return this.update(); + }, + setCenterY: function(cy) { + this.cy = cy; + return this.update(); + } + }); + } +}; + +//src/graphic/eventhandler.js +/* + * kity event 实现 + */ +_p[33] = { + value: function(require, exports, module) { + // polyfill + (function() { + function CustomEvent(event, params) { + params = params || { + bubbles: false, + cancelable: false, + detail: undefined + }; + var evt = document.createEvent("CustomEvent"); + evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); + return evt; + } + CustomEvent.prototype = window.Event.prototype; + window.CustomEvent = CustomEvent; + })(); + var Utils = _p.r(12), ShapeEvent = _p.r(62); + // 内部处理器缓存 + var INNER_HANDLER_CACHE = {}, // 用户处理器缓存 + USER_HANDLER_CACHE = {}, guid = 0; + // 添加事件统一入口 + function _addEvent(type, handler, isOnce) { + isOnce = !!isOnce; + if (Utils.isString(type)) { + type = type.match(/\S+/g); + } + Utils.each(type, function(currentType) { + listen.call(this, this.node, currentType, handler, isOnce); + }, this); + return this; + } + // 移除事件统一入口 + function _removeEvent(type, handler) { + var userHandlerList = null, eventId = this._EVNET_UID, isRemoveAll = handler === undefined; + userHandlerList = USER_HANDLER_CACHE[eventId][type]; + //移除指定的监听器 + if (!isRemoveAll) { + isRemoveAll = true; + Utils.each(userHandlerList, function removeKityEvent(fn, index) { + if (fn === handler) { + // 不能结束, 需要查找完整个list, 避免丢失移除多次绑定同一个处理器的情况 + delete userHandlerList[index]; + } else { + isRemoveAll = false; + } + }); + } + //删除所有监听器 + if (isRemoveAll) { + deleteDomEvent(this.node, type, INNER_HANDLER_CACHE[eventId][type]); + delete USER_HANDLER_CACHE[eventId][type]; + delete INNER_HANDLER_CACHE[eventId][type]; + } + return this; + } + // 执行绑定, 该方法context为shape或者mixin了eventhandler的对象 + function listen(node, type, handler, isOnce) { + var eid = this._EVNET_UID, targetObject = this; + // 初始化内部监听器 + if (!INNER_HANDLER_CACHE[eid]) { + INNER_HANDLER_CACHE[eid] = {}; + } + if (!INNER_HANDLER_CACHE[eid][type]) { + // 内部监听器 + INNER_HANDLER_CACHE[eid][type] = function kityEventHandler(e) { + e = new ShapeEvent(e || window.event); + Utils.each(USER_HANDLER_CACHE[eid][type], function executeKityEvent(fn) { + var result; + if (fn) { + result = fn.call(targetObject, e); + //once 绑定, 执行完后删除 + if (isOnce) { + targetObject.off(type, fn); + } + } + // 如果用户handler里return了false, 则该节点上的此后的同类型事件将不再执行 + return result; + }, targetObject); + }; + } + // 初始化用户监听器列表 + if (!USER_HANDLER_CACHE[eid]) { + USER_HANDLER_CACHE[eid] = {}; + } + if (!USER_HANDLER_CACHE[eid][type]) { + USER_HANDLER_CACHE[eid][type] = [ handler ]; + // 绑定对应类型的事件 + // dom对象利用dom event进行处理, 非dom对象, 由消息分发机制处理 + if (!!node && "on" + type in node) { + bindDomEvent(node, type, INNER_HANDLER_CACHE[eid][type]); + } + } else { + USER_HANDLER_CACHE[eid][type].push(handler); + } + } + // 绑定dom事件 + function bindDomEvent(node, type, handler) { + if (node.addEventListener) { + node.addEventListener(type, handler, false); + } else { + node.attachEvent("on" + type, handler); + } + } + // 删除dom事件 + function deleteDomEvent(node, type, handler) { + if (node.removeEventListener) { + node.removeEventListener(type, handler, false); + } else { + node.detachEvent(type, handler); + } + } + // 触发dom事件 + function triggerDomEvent(node, type, params) { + var event = new CustomEvent(type, { + bubbles: true, + cancelable: true + }); + event._kityParam = params; + node.dispatchEvent(event); + } + // 发送消息 + function sendMessage(messageObj, type, msg) { + var event = null, handler = null; + var handlers = INNER_HANDLER_CACHE[messageObj._EVNET_UID]; + if (!handlers) return; + handler = handlers[type]; + if (!handler) { + return; + } + event = Utils.extend({ + type: type, + target: messageObj + }, msg || {}); + handler.call(messageObj, event); + } + // 对外接口 + return _p.r(11).createClass("EventHandler", { + constructor: function() { + this._EVNET_UID = ++guid; + }, + addEventListener: function(type, handler) { + return _addEvent.call(this, type, handler, false); + }, + addOnceEventListener: function(type, handler) { + return _addEvent.call(this, type, handler, true); + }, + removeEventListener: function(type, handler) { + return _removeEvent.call(this, type, handler); + }, + on: function(type, handler) { + return this.addEventListener.apply(this, arguments); + }, + once: function(type, handler) { + return this.addOnceEventListener.apply(this, arguments); + }, + off: function() { + return this.removeEventListener.apply(this, arguments); + }, + fire: function(type, params) { + return this.trigger.apply(this, arguments); + }, + trigger: function(type, params) { + sendMessage(this, type, params); + return this; + } + }); + } +}; + +//src/graphic/geometry.js +_p[34] = { + value: function(require) { + var utils = _p.r(12); + var Point = _p.r(50); + var Vector = _p.r(73); + var Matrix = _p.r(43); + var g = {}; + var pathCommand = /([achlmrqstvz])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?\s*)+)/gi, pathValues = /(-?\d*\.?\d*(?:e[\-+]?\d+)?)\s*,?\s*/gi, paramCounts = { + a: 7, + c: 6, + h: 1, + l: 2, + m: 2, + q: 4, + s: 4, + t: 2, + v: 1, + z: 0 + }; + function pathClone(path) { + var result, i, j, segment, segmentCopy; + result = []; + for (i = 0; i < path.length; i++) { + segment = path[i]; + result.push(segmentCopy = []); + for (j = 0; j < segment.length; j++) { + segmentCopy.push(segment[j]); + } + } + if (path.isUniform) result.isUniform = true; + if (path.isAbsolute) result.isAbsolute = true; + if (path.isCurve) result.isCurve = true; + return result; + } + // 缓存函数 + // from raphael.js + function cacher(f, scope, postprocessor) { + function repush(array, item) { + for (var i = 0, ii = array.length; i < ii; i++) if (array[i] === item) { + return array.push(array.splice(i, 1)[0]); + } + } + function newf() { + var arg = Array.prototype.slice.call(arguments, 0), args = arg.join("␀"), cache = newf.cache = newf.cache || {}, count = newf.count = newf.count || []; + if (cache.hasOwnProperty(args)) { + repush(count, args); + return postprocessor ? postprocessor(cache[args]) : cache[args]; + } + if (count.length >= 1e3) { + delete cache[count.shift()]; + } + count.push(args); + cache[args] = f.apply(scope, arg); + return postprocessor ? postprocessor(cache[args]) : cache[args]; + } + return newf; + } + /** + * + * kity.g.pathToString(pathSegment) + * + * 返回表示 PathSegment 的字符串 + * + * @param {Array} pathSegment + * 要表示的 Path Segment + * + * @return {String} 表示该 Path 的字符串 + * + * @example + * + * var pathSegment = [['M', 0, 0], ['L', 10, 10]] + * var pathString = kity.g.pathToString(pathSegment); + * // 返回 'M0,0L10,10' + */ + g.pathToString = function(pathSegment) { + pathSegment = pathSegment || this; + if (typeof pathSegment == "string") return pathSegment; + if (pathSegment instanceof Array) { + pathSegment = utils.flatten(pathSegment); + return pathSegment.join(",").replace(/,?([achlmqrstvxz]),?/gi, "$1"); + } + }; + /** + * kity.g.parsePathString(pathString) + * + * 解析 Path 字符串成 PathSegment + * + * @copyright rapheal.js + * + * @example + * + * var seg = kity.g.parsePathString('M10,12l21-23-21.5,11z'); + * // 返回: [['M', 10, 12], ['l', 21, -23], ['l', -21.5, 11], ['z']] + * + * @param {String} pathString Path 字符串 + * @return {Array} + */ + g.parsePathString = cacher(function(pathString) { + var data = []; + pathString.replace(pathCommand, function(a, b, c) { + var params = [], name = b.toLowerCase(); + c.replace(pathValues, function(a, b) { + if (b) params.push(+b); + }); + if (name == "m" && params.length > 2) { + data.push([ b ].concat(params.splice(0, 2))); + name = "l"; + b = b == "m" ? "l" : "L"; + } + if (name == "r") { + data.push([ b ].concat(params)); + } else { + while (params.length >= paramCounts[name]) { + data.push([ b ].concat(params.splice(0, paramCounts[name]))); + if (!paramCounts[name]) { + break; + } + } + } + }); + data.isUniform = true; + data.toString = g.pathToString; + return data; + }); + /** + * kity.g.pathToAbsolute(path) + * + * 把路径转换为绝对路径的形式 + * + * @param {Array|String} path + * 要转换的 path 路径或者数组 + * + * @return {Array} + * 转换后的 Path Segment + * + * @example + * + * var path = 'M10,10l50,50'; + * var absPath = kity.g.pathToAbsolute(path); + * // 返回 [['M', 10, 10], ['L', 60, 60]] + */ + g.pathToAbsolute = cacher(function(path) { + var pathArray = path.isUniform ? path : g.parsePathString(g.pathToString(path)); + var res = [], x = 0, y = 0, mx = 0, my = 0, start = 0; + var r, pa, i, j, k, ii, jj, kk; + if (pathArray[0][0] == "M") { + x = +pathArray[0][1]; + y = +pathArray[0][2]; + mx = x; + my = y; + start++; + res[0] = [ "M", x, y ]; + } + for (r, pa, i = start, ii = pathArray.length; i < ii; i++) { + res.push(r = []); + pa = pathArray[i]; + if (pa[0] != pa[0].toUpperCase()) { + r[0] = pa[0].toUpperCase(); + switch (r[0]) { + case "A": + r[1] = pa[1]; + r[2] = pa[2]; + r[3] = pa[3]; + r[4] = pa[4]; + r[5] = pa[5]; + r[6] = +(pa[6] + x); + r[7] = +(pa[7] + y); + break; + + case "V": + r[1] = +pa[1] + y; + break; + + case "H": + r[1] = +pa[1] + x; + break; + + case "M": + mx = +pa[1] + x; + my = +pa[2] + y; + break; + + default: + for (j = 1, jj = pa.length; j < jj; j++) { + r[j] = +pa[j] + (j % 2 ? x : y); + } + } + } else { + for (k = 0, kk = pa.length; k < kk; k++) { + r[k] = pa[k]; + } + } + switch (r[0]) { + case "Z": + x = mx; + y = my; + break; + + case "H": + x = r[1]; + break; + + case "V": + y = r[1]; + break; + + case "M": + mx = r[r.length - 2]; + my = r[r.length - 1]; + break; + + default: + x = r[r.length - 2]; + y = r[r.length - 1]; + } + } + res.isUniform = true; + res.isAbsolute = true; + res.toString = g.pathToString; + return res; + }); + // 把圆弧绘制的曲线转化为对应的三次贝塞尔形式 + function a2c(x1, y1, rx, ry, angle, laf, sf, x2, y2, recursive) { + // copy from raphael.js + // for more information of where this math came from visit: + // http://www.w3.org/TR/SVG11/implnote.html#ArcImplementationNotes + var math = Math, PI = math.PI, abs = Math.abs, _120 = PI * 120 / 180, rad = PI / 180 * (+angle || 0), res = [], xy, rotate = function(x, y, rad) { + var X = x * math.cos(rad) - y * math.sin(rad), Y = x * math.sin(rad) + y * math.cos(rad); + return { + x: X, + y: Y + }; + }; + var cos, sin, h, x, y, rx2, ry2, k, cx, cy, f1, f2, df, f2old, x2old, y2old, c1, s1, c2, s2, t, hx, hy, m1, m2, m3, m4, newres, i, ii; + if (!recursive) { + xy = rotate(x1, y1, -rad); + x1 = xy.x; + y1 = xy.y; + xy = rotate(x2, y2, -rad); + x2 = xy.x; + y2 = xy.y; + cos = math.cos(PI / 180 * angle); + sin = math.sin(PI / 180 * angle); + x = (x1 - x2) / 2; + y = (y1 - y2) / 2; + h = x * x / (rx * rx) + y * y / (ry * ry); + if (h > 1) { + h = math.sqrt(h); + rx = h * rx; + ry = h * ry; + } + rx2 = rx * rx; + ry2 = ry * ry; + k = (laf == sf ? -1 : 1) * math.sqrt(abs((rx2 * ry2 - rx2 * y * y - ry2 * x * x) / (rx2 * y * y + ry2 * x * x))); + cx = k * rx * y / ry + (x1 + x2) / 2; + cy = k * -ry * x / rx + (y1 + y2) / 2; + f1 = math.asin(((y1 - cy) / ry).toFixed(9)); + f2 = math.asin(((y2 - cy) / ry).toFixed(9)); + f1 = x1 < cx ? PI - f1 : f1; + f2 = x2 < cx ? PI - f2 : f2; + if (f1 < 0) f1 = PI * 2 + f1; + if (f2 < 0) f2 = PI * 2 + f2; + if (sf && f1 > f2) { + f1 = f1 - PI * 2; + } + if (!sf && f2 > f1) { + f2 = f2 - PI * 2; + } + } else { + f1 = recursive[0]; + f2 = recursive[1]; + cx = recursive[2]; + cy = recursive[3]; + } + df = f2 - f1; + if (abs(df) > _120) { + f2old = f2; + x2old = x2; + y2old = y2; + f2 = f1 + _120 * (sf && f2 > f1 ? 1 : -1); + x2 = cx + rx * math.cos(f2); + y2 = cy + ry * math.sin(f2); + res = a2c(x2, y2, rx, ry, angle, 0, sf, x2old, y2old, [ f2, f2old, cx, cy ]); + } + df = f2 - f1; + c1 = math.cos(f1); + s1 = math.sin(f1); + c2 = math.cos(f2); + s2 = math.sin(f2); + t = math.tan(df / 4); + hx = 4 / 3 * rx * t; + hy = 4 / 3 * ry * t; + m1 = [ x1, y1 ]; + m2 = [ x1 + hx * s1, y1 - hy * c1 ]; + m3 = [ x2 + hx * s2, y2 - hy * c2 ]; + m4 = [ x2, y2 ]; + m2[0] = 2 * m1[0] - m2[0]; + m2[1] = 2 * m1[1] - m2[1]; + if (recursive) { + return [ m2, m3, m4 ].concat(res); + } else { + res = [ m2, m3, m4 ].concat(res).join().split(","); + newres = []; + for (i = 0, ii = res.length; i < ii; i++) { + newres[i] = i % 2 ? rotate(res[i - 1], res[i], rad).y : rotate(res[i], res[i + 1], rad).x; + } + return newres; + } + } + // 把二次贝塞尔曲线参数转化为三次贝塞尔曲线参数 + function q2c(x1, y1, ax, ay, x2, y2) { + // copy from raphael.js + var _13 = 1 / 3, _23 = 2 / 3; + return [ _13 * x1 + _23 * ax, _13 * y1 + _23 * ay, _13 * x2 + _23 * ax, _13 * y2 + _23 * ay, x2, y2 ]; + } + /** + * kity.g.pathToCurve(path) + * + * 把路径转换为贝塞尔路径 + * + * @param {Array|String} path + * 要转换的 path 路径或数组 + * + * @return {Array} + * 转换后的 PathSegment,每一段都是 'C' + */ + g.pathToCurve = cacher(function(path) { + var i, j, command, param; + var initPoint, currentPoint, endPoint, shouldClose, lastControlPoint, aussumedControlPoint; + var controlPoint1, controlPoint2; + var res = []; + // 处理的路径要求是一个绝对路径 + if (!path.isAbsolute) path = g.pathToAbsolute(path); + for (i = 0; i < path.length; i++) { + command = path[i][0]; + param = path[i].slice(1); + // 画笔移动 + if (command == "M") { + initPoint = lastControlPoint = currentPoint = param; + res.push(path[i]); + continue; + } + // 路径闭合 + if (command == "Z") { + shouldClose = true; + command = "L"; + param = initPoint; + } + // 绘制命令的目的位置 + endPoint = param.slice(param.length - 2); + // 对 'H' 命令的修正 + if (command == "H") { + endPoint = [ param[0], currentPoint[1] ]; + command = "L"; + } + // 对 'V' 命令的修正 + if (command == "V") { + endPoint = [ currentPoint[0], param[0] ]; + command = "L"; + } + // 对 'S' 命令求出隐含的控制点位置 + if (command == "S" || command == "T") { + // 隐含控制点是上一个控制点关于当前位置的镜像 + aussumedControlPoint = [ currentPoint[0] + (currentPoint[0] - lastControlPoint[0]), currentPoint[1] + (currentPoint[1] - lastControlPoint[1]) ]; + } + // 针对不同的命令求控制点 + switch (command) { + case "L": + controlPoint1 = currentPoint; + controlPoint2 = endPoint; + break; + + case "C": + controlPoint1 = param.slice(0, 2); + controlPoint2 = param.slice(2, 4); + break; + + case "S": + controlPoint1 = aussumedControlPoint.slice(); + controlPoint2 = param.slice(0, 2); + break; + + case "Q": + lastControlPoint = param.slice(0, 2); + param = q2c.apply(null, currentPoint.concat(param)); + controlPoint1 = param.slice(0, 2); + controlPoint2 = param.slice(2, 4); + break; + + case "T": + param = q2c.apply(null, currentPoint.concat(aussumedControlPoint).concat(param)); + controlPoint1 = param.slice(0, 2); + controlPoint2 = param.slice(2, 4); + break; + + case "A": + param = a2c.apply(null, currentPoint.concat(param)); + j = 0; + while (j in param) { + controlPoint1 = param.slice(j, j + 2); + controlPoint2 = param.slice(j + 2, j + 4); + endPoint = param.slice(j + 4, j + 6); + // 写入当前一段曲线 + res.push([ "C" ].concat(controlPoint1).concat(controlPoint2).concat(endPoint)); + j += 6; + } + break; + } + if (command != "A") { + // 写入当前一段曲线 + res.push([ "C" ].concat(controlPoint1).concat(controlPoint2).concat(endPoint)); + } + // 为下次循环准备当前位置 + currentPoint = endPoint; + // 二次贝塞尔曲线自己已经记录了上个控制点的位置,其它的记录控制点 2 的位置 + if (command != "Q") { + lastControlPoint = controlPoint2; + } + if (shouldClose) { + res.push([ "Z" ]); + shouldClose = false; + } + } + res.isUniform = true; + res.isAbsolute = true; + res.isCurve = true; + res.toString = g.pathToString; + return res; + }); + /** + * 将贝塞尔曲线切成两部分 + * + * @see http://stackoverflow.com/questions/18655135/divide-bezier-curve-into-two-equal-halves + */ + function cutBezier(bezierArray, t) { + function __(t) { + return function(p, q) { + return p + t * (q - p); + }; + } + var _ = __(t || .5), ba = bezierArray, ax = ba[0], ay = ba[1], bx = ba[2], by = ba[3], cx = ba[4], cy = ba[5], dx = ba[6], dy = ba[7], ex = _(ax, bx), ey = _(ay, by), fx = _(bx, cx), fy = _(by, cy), gx = _(cx, dx), gy = _(cy, dy), hx = _(ex, fx), hy = _(ey, fy), jx = _(fx, gx), jy = _(fy, gy), kx = _(hx, jx), ky = _(hy, jy); + return [ [ ax, ay, ex, ey, hx, hy, kx, ky ], [ kx, ky, jx, jy, gx, gy, dx, dy ] ]; + } + /** + * kity.g.cutBezier(bezierArray, t) + * + * 在指定位置把贝塞尔曲线切割为两部分 + * + * @param {Array} bezierArray + * 表示贝塞尔曲线的一个数组 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y] + * p1 和 p2 是贝塞尔曲线的起点和终点,c1 和 c2 是两个控制点 + * + * @param {Number} t + * 切割的位置(0 到 1) + * + * @return {Array} + * 切割的两个贝塞尔曲线:[ + * [p1x1, p1y1, c1x1, c1y1, c2x1, c2y1, p2x1, p2y1], + * [p1x2, p1y2, c1x2, c1y2, c2x2, c2y2, p2x2, p2y2] + * ] + * + */ + g.cutBezier = cacher(cutBezier); + /** + * 求一段贝塞尔曲线的子段 + * + * @param {Array} bezierArray + * 长度为 8 的数组,表示 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y] + * + * @param {Number} t + * 子段的结束位置(0 到 1) + * + * @param {Number} t0 + * 字段的开始位置(0 到 t),可不传,默认为 0 + * + * @return {Array} + * 长度为 8 的数组,表示给定贝塞尔曲线的子段 + */ + g.subBezier = function(bezierArray, t, t0) { + var b2t = cutBezier(bezierArray, t)[0]; + return t0 ? cutBezier(b2t, t0 / t)[1] : b2t; + }; + /** + * 求贝塞尔曲线上的一个点 + * + * @param {Array} bezierArray + * 长度为 8 的数组,表示 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y] + * + * @param {Number} t + * 所求点的开始位置(0 到 1) + * + * @return {Point} p + * p.x: x 坐标 + * p.y: y 坐标 + * p.tan: 在 t 处的切线方向(类型为 kity.Vector,模为 1) + */ + g.pointAtBezier = function(bezierArray, t) { + var b2t = cutBezier(bezierArray, t)[0]; + var p = Point.parse(b2t.slice(6)), c = Point.parse(b2t.slice(4, 2)), v = Vector.fromPoints(c, p); + if (t === 0) { + p.tan = g.pointAtBezier(bezierArray, .01).tan; + } else { + p.tan = v.normalize(); + } + return p; + }; + /** + * 求贝塞尔曲线的长度 + * + * @param {Array} bezierArray + * 长度为 8 的数组,表示 [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y] + * + * @param {Number} tolerate + * 允许的误差,默认是 0.1 + * + * @return {Number} 贝塞尔曲线的长度 + */ + g.bezierLength = cacher(function bezierLength(bezierArray) { + // 表示(c[0]*t^4 + c[1]*t^3 + c[2]*t^2 + c[3]*t^1 + c[4])^(1/2)的函数 + function f(x) { + var m = c0 * Math.pow(x, 4) + c1 * Math.pow(x, 3) + c2 * Math.pow(x, 2) + c3 * x + c4; + if (m < 0) { + m = 0; + } + return Math.pow(m, .5); + } + // 用Newton-Cotes型求积公式 + var arr = bezierArray; + // 三次贝塞尔曲线函数求导后,求出对应的方程系数,用cx[],cy[]表示x`(t)和y`(t)的系数 + var cx0, cx1, cx2; + var cy0, cy1, cy2; + // 用c[]表示x`(t)^2 + y`(t)^2的结果的系数 + var c0, c1, c2, c3, c4; + // 求x`(t) 和 y`(t)的系数 + cx0 = -3 * arr[0] + 9 * arr[2] - 9 * arr[4] + 3 * arr[6]; + cx1 = 6 * arr[0] - 12 * arr[2] + 6 * arr[4]; + cx2 = -3 * arr[0] + 3 * arr[2]; + cy0 = -3 * arr[1] + 9 * arr[3] - 9 * arr[5] + 3 * arr[7]; + cy1 = 6 * arr[1] - 12 * arr[3] + 6 * arr[5]; + cy2 = -3 * arr[1] + 3 * arr[3]; + // 求x`(t)^2 + y`(t)^2的结果的系数 c[] + c0 = Math.pow(cx0, 2) + Math.pow(cy0, 2); + c1 = 2 * (cx0 * cx1 + cy0 * cy1); + c2 = 2 * (cx0 * cx2 + cy0 * cy2) + Math.pow(cx1, 2) + Math.pow(cy1, 2); + c3 = 2 * (cx1 * cx2 + cy1 * cy2); + c4 = Math.pow(cx2, 2) + Math.pow(cy2, 2); + // 用cotes积分公式求值 + return (f(0) + f(1) + 4 * (f(.125) + f(.375) + f(.625) + f(.875)) + 2 * (f(.25) + f(.5) + f(.75))) / 24; + }); + // 计算一个 pathSegment 中每一段的在整体中所占的长度范围,以及总长度 + // 方法要求每一段都是贝塞尔曲线 + var getBezierPathSegmentRanges = cacher(function(pathSegment) { + var i, ii, segment, position, bezierLength, segmentRanges, totalLength; + segmentRanges = []; + // 总长度 + totalLength = 0; + for (i = 0, ii = pathSegment.length; i < ii; i++) { + segment = pathSegment[i]; + if (segment[0] == "M") { + position = segment.slice(1); + segmentRanges.push(null); + continue; + } + if (segment[0] == "Z") { + segmentRanges.push(null); + continue; + } + bezierLength = g.bezierLength(position.concat(segment.slice(1))); + segmentRanges.push([ totalLength, totalLength + bezierLength ]); + totalLength += bezierLength; + // 迭代当前位置 + position = segment.slice(4); + } + segmentRanges.totalLength = totalLength; + return segmentRanges; + }); + /** + * 求一段路径的子路径 + * + * @param {Array|String} path + * 原路径 + * + * @param {Number} t1 + * 要求的子路径的结束位置(0 到 1) + * + * @param {Number} t0 + * 要求的子路径的开始位置(0 到 t1),可不传,默认为 0 + * + * @return {Array} + * 子路径的 PathSegment + */ + g.subPath = function(path, t1, t0) { + var dt; + t0 = t0 || 0; + dt = t1 - t0; + dt = dt - (dt | 0); + t0 = t0 - (t0 | 0); + t1 = t0 + dt; + if (t1 > 1) { + return g.subPath(path, 1, t0).concat(g.subPath(path, t1 - 1)); + } + if (!path.isCurve) { + path = g.pathToCurve(path); + } + // path 每一段在整体中的长度区间 + var segmentRanges = getBezierPathSegmentRanges(path); + // path 总长度 + var totalLength = segmentRanges.totalLength; + // t1 和 t0 位置命中的长度位置 + var t1Length = totalLength * t1, t0Length = totalLength * (t0 || 0); + // 产生的子路径 + var subPath = []; + // 迭代变量,a 是一段的长度区间左值,b 是右值,d 是区间长度 + var i, ii, a, b, d; + var position; + var bezier, subBezier, stared; + for (i = 0, ii = path.length; i < ii; i++) { + if (path[i][0] == "M") { + position = path[i].slice(1); + if (stared) { + subPath.push(path[i].slice()); + } + continue; + } + if (path[i][0] == "Z") { + // subpath 路径不闭合 + continue; + } + a = segmentRanges[i][0]; + b = segmentRanges[i][1]; + d = b - a; + bezier = position.concat(path[i].slice(1)); + if (t0Length > b) { + // t0 和 t1 都右溢出 + // ----------------------------------- + // t0 t1 + // |________| + // + // 需要跳过当前块 + position = bezier.slice(bezier.length - 2); + continue; + } else if (t0Length >= a) { + // 命中 t0;t1 可能命中或右溢出 + // ----------------------------------- + // t0 t1 + // |______|__| + // + // or: |_|____|__| + // + // 取当前块 t0 到 t1 的部分 + subBezier = g.subBezier(bezier, Math.min((t1Length - a) / d, 1), (t0Length - a) / d); + stared = true; + position = subBezier.slice(0, 2); + subPath.push([ "M" ].concat(subBezier.slice(0, 2))); + subPath.push([ "C" ].concat(subBezier.slice(2))); + } else if (t1Length >= b) { + // t0 左溢出;t1 右溢出,整个块是需要的 + // ----------------------------------- + // t0 t1 + // |_________| + // + // 此时取整个块 + subPath.push(path[i].slice()); + } else if (t1Length >= a) { + // t0 左溢出;t1 命中,取当前块 t1 之前的部分 + // ----------------------------------- + // t0 t1 + // |__|______| + // 取当前块 t1 之前的部分 + subBezier = g.subBezier(bezier, (t1Length - a) / d); + subPath.push([ "C" ].concat(subBezier.slice(2))); + stared = false; + } else { + // 没有可以再要的了 + break; + } + position = bezier.slice(bezier.length - 2); + } + subPath.isAbsolute = true; + subPath.isCurve = true; + subPath.isUniform = true; + subPath.toString = g.pathToString; + return subPath; + }; + /** + * 求路径上的一个点 + * + * @param {Array|String} path + * 要求点的路径 + * + * @param {Number} t + * 要求的点的位置(0 到 1) + * + * @return {Point} p + * p.x: x 坐标 + * p.y: y 坐标 + * p.tan: 在 t 处的切线方向(类型为 kity.Vector,模为 1) + */ + g.pointAtPath = function(path, t) { + if (!path.isCurve) { + path = g.pathToCurve(path); + } + var subPath = g.subPath(path, t); + var lastCurve = subPath[subPath.length - 1][0] == "Z" ? subPath[subPath.length - 2] : subPath[subPath.length - 1]; + // 跳过 'C' 命令,只留参数 + lastCurve = lastCurve.slice(1); + var p = Point.parse(lastCurve.slice(4)), c = Point.parse(lastCurve.slice(2, 4)); + p.tan = Vector.fromPoints(c, p).normalize(); + return p; + }; + /** + * 求一段路径的长度 + * + * @param {string|Array} path + * 要求的路径 + * + * @return {Number} + * 路径的长度 + */ + g.pathLength = cacher(function(path) { + if (!path.isCurve) { + path = g.pathToCurve(path); + } + // path 每一段在整体中的长度区间 + var segmentRanges = getBezierPathSegmentRanges(path); + return segmentRanges.totalLength; + }); + /** + * 求一段路径的关键点 + * + * @param {string|Array} path + * 要求的路径 + * + * @return {Array} + * 关键点的集合 + */ + g.pathKeyPoints = cacher(function(path) { + var i, ii, command, keyPoints; + if (!path.isCurve) { + path = g.pathToCurve(path); + } + keyPoints = []; + for (i = 0, ii = path.length; i < ii; i++) { + if (path[i][0] == "z") continue; + keyPoints.push(path[i].slice(path[i].length - 2)); + } + return keyPoints; + }); + // 对比两个路径的关键位置,在合适的位置切割合适的路径,使得两个路径的段数一致 + // TODO: 使用插值算法,使对应点更合理 + var alignCurve = cacher(function(path1, path2) { + if (!path1.isCurve) path1 = g.pathToCurve(path1); + if (!path2.isCurve) path2 = g.pathToCurve(path2); + var p1 = pathClone(path1); + var p2 = pathClone(path2); + p1.i = 0; + p2.i = 0; + p1.o = p2; + p2.o = p1; + function command(p, i) { + return p[i || p.i] && p[i || p.i][0]; + } + function param(p, i) { + return p[i || p.i] && p[i || p.i].slice(1); + } + function point(p, i) { + var _param = param(p, i); + return _param && _param.slice(-2); + } + function fixZ(p) { + if (command(p) == "Z") { + p.splice(p.i, 1); + return true; + } + return false; + } + function fixM(p) { + if (command(p) == "M") { + p.o.splice(p.o.i, 0, [ "M" ].concat(point(p.o, p.o.i - 1))); + p.i++; + p.o.i++; + return true; + } + return false; + } + function fill(p) { + var lastPoint; + var i = 1; + while (!lastPoint) { + lastPoint = point(p, p.length - i++); + } + p.o.i = p.i; + while (p.length < p.o.length) { + if (fixZ(p.o)) continue; + if (fixM(p.o)) continue; + p.push([ "C" ].concat(lastPoint).concat(lastPoint).concat(lastPoint)); + p.i++; + p.o.i++; + } + } + while (p1.i < p1.length && p2.i < p2.length) { + if (fixZ(p1) || fixZ(p2)) continue; + if (command(p1) == command(p2)) { + p1.i++; + p2.i++; + continue; + } + if (fixM(p1) || fixM(p2)) continue; + p1.i++; + p2.i++; + } + if (p1.i == p1.length) fill(p1); + if (p2.i == p2.length) fill(p2); + delete p1.i; + delete p1.o; + delete p2.i; + delete p2.o; + return [ p1, p2 ]; + }); + g.alignCurve = alignCurve; + /** + * 获得两个路径的补间结果 + * + * @param {string|Array} path1 + * 补间起始路径 + * + * @param {string|Array} path2 + * 补间结束路径 + * + * @param {Number} t + * 补间比例,0 返回跟 path1 等效的结果;1 返回跟 path2 等效的结果 + * + * @return {PathSegment} + * 补间的结果 + */ + g.pathTween = function(path1, path2, t) { + if (t === 0) return path1; + if (t === 1) return path2; + var aligned = alignCurve(path1, path2); + var result = [], seg, i, j; + path1 = aligned[0]; + path2 = aligned[1]; + for (i = 0; i < path1.length; i++) { + result.push(seg = []); + seg.push(path1[i][0]); + for (j = 1; j < path1[i].length; j++) { + seg.push(path1[i][j] + t * (path2[i][j] - path1[i][j])); + } + } + result.isUniform = result.isCurve = result.isAbsolute = true; + return result; + }; + /** + * 变换指定的路径 + * + * @param {String|Array} path + * 需要变换的路径 + * + * @param {kity.Matrix} matrix + * 使用的变换矩阵 + * + * @return {Array} + * 变换后的路径 + */ + g.transformPath = cacher(function(path, matrix) { + var i, ii, j, result, seg, pair; + if (!path.isCurve) { + path = g.pathToCurve(path); + } + result = []; + for (i = 0, ii = path.length; i < ii; i++) { + result.push(seg = [ path[i][0] ]); + for (j = 1; j < path[i].length; j += 2) { + pair = path[i].slice(j, j + 2); + pair = matrix.transformPoint(Point.parse(pair)); + result.push(pair); + } + } + return result; + }); + // entend + _p.r(11).extendClass(Matrix, { + transformPath: function(path) { + return g.transformPath(path, this); + } + }); + return g; + } +}; + +//src/graphic/gradient.js +_p[35] = { + value: function(require, exports, module) { + var svg = _p.r(67); + var Resource = _p.r(58); + var Color = _p.r(28); + return _p.r(11).createClass("GradientBrush", { + base: Resource, + constructor: function(gradientNodeType, paper) { + this.callBase(gradientNodeType, paper); + this.stops = []; + }, + addStop: function(offset, color, opacity) { + var gstop = svg.createNode("stop"); + if (!(color instanceof Color)) { + color = Color.parse(color); + } + if (opacity === undefined) { + opacity = color.get("a"); + } + gstop.setAttribute("offset", offset); + gstop.setAttribute("stop-color", color.toRGB()); + if (opacity < 1) { + gstop.setAttribute("stop-opacity", opacity); + } + this.node.appendChild(gstop); + return this; + } + }); + } +}; + +//src/graphic/group.js +_p[36] = { + value: function(require, exports, module) { + var ShapeContainer = _p.r(61); + return _p.r(11).createClass("Group", { + mixins: [ ShapeContainer ], + base: _p.r(60), + constructor: function Group() { + this.callBase("g"); + } + }); + } +}; + +//src/graphic/hyperlink.js +_p[37] = { + value: function(require, exports, module) { + var ShapeContainer = _p.r(61); + return _p.r(11).createClass("HyperLink", { + mixins: [ ShapeContainer ], + base: _p.r(60), + constructor: function(url) { + this.callBase("a"); + this.setHref(url); + }, + setHref: function(href) { + this.node.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", href); + return this; + }, + getHref: function() { + return this.node.getAttributeNS("xlink:href"); + }, + setTarget: function(target) { + this.node.setAttribute("target", target); + return this; + }, + getTarget: function() { + return this.node.getAttribute("target"); + } + }); + } +}; + +//src/graphic/image.js +_p[38] = { + value: function(require, exports, module) { + return _p.r(11).createClass("Image", { + base: _p.r(60), + constructor: function(url, width, height, x, y) { + this.callBase("image"); + this.url = url; + this.width = width || 0; + this.height = height || 0; + this.x = x || 0; + this.y = y || 0; + this.update(); + }, + update: function() { + this.node.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", this.url); + this.node.setAttribute("x", this.x); + this.node.setAttribute("y", this.y); + this.node.setAttribute("width", this.width); + this.node.setAttribute("height", this.height); + return this; + }, + setUrl: function(url) { + this.url = url === "" ? null : url; + return this.update(); + }, + getUrl: function() { + return this.url; + }, + setWidth: function(width) { + this.width = width; + return this.update(); + }, + getWidth: function() { + return this.width; + }, + setHeight: function(height) { + this.height = height; + return this.update(); + }, + getHeight: function() { + return this.height; + }, + setX: function(x) { + this.x = x; + return this.update(); + }, + getX: function() { + return this.x; + }, + setY: function(y) { + this.y = y; + return this.update(); + }, + getY: function() { + return this.y; + } + }); + } +}; + +//src/graphic/line.js +_p[39] = { + value: function(require, exports, module) { + return _p.r(11).createClass("Line", { + base: _p.r(46), + constructor: function(x1, y1, x2, y2) { + this.callBase(); + this.point1 = { + x: x1 || 0, + y: y1 || 0 + }; + this.point2 = { + x: x2 || 0, + y: y2 || 0 + }; + this.update(); + }, + setPoint1: function(x, y) { + this.point1.x = x; + this.point1.y = y; + return this.update(); + }, + setPoint2: function(x, y) { + this.point2.x = x; + this.point2.y = y; + return this.update(); + }, + getPoint1: function() { + return { + x: this.point1.x, + y: this.point1.y + }; + }, + getPoint2: function() { + return { + x: this.point2.x, + y: this.point2.y + }; + }, + update: function() { + var drawer = this.getDrawer(); + drawer.clear(); + drawer.moveTo(this.point1.x, this.point1.y); + drawer.lineTo(this.point2.x, this.point2.y); + return this; + } + }); + } +}; + +//src/graphic/lineargradient.js +_p[40] = { + value: function(require, exports, module) { + var svg = _p.r(67); + var Gradient = _p.r(35); + return _p.r(11).createClass("LinearGradientBrush", { + base: Gradient, + constructor: function(paper) { + this.callBase("linearGradient", paper); + this.setStartPosition(0, 0); + this.setEndPosition(1, 0); + }, + setStartPosition: function(px, py) { + this.node.setAttribute("x1", px); + this.node.setAttribute("y1", py); + return this; + }, + setEndPosition: function(px, py) { + this.node.setAttribute("x2", px); + this.node.setAttribute("y2", py); + return this; + }, + getStartPosition: function() { + return { + x: +this.node.getAttribute("x1"), + y: +this.node.getAttribute("y1") + }; + }, + getEndPosition: function() { + return { + x: +this.node.getAttribute("x2"), + y: +this.node.getAttribute("y2") + }; + } + }); + } +}; + +//src/graphic/marker.js +_p[41] = { + value: function(require, exports, module) { + var Point = _p.r(50); + var Marker = _p.r(11).createClass("Marker", { + base: _p.r(58), + mixins: [ _p.r(61), _p.r(75) ], + constructor: function() { + this.callBase("marker"); + this.setOrient("auto"); + }, + setRef: function(x, y) { + if (arguments.length === 1) { + y = x.y; + x = x.x; + } + this.node.setAttribute("refX", x); + this.node.setAttribute("refY", y); + return this; + }, + getRef: function() { + return new Point(+this.node.getAttribute("refX"), +this.node.getAttribute("refY")); + }, + setWidth: function(width) { + this.node.setAttribute("markerWidth", this.width = width); + return this; + }, + setOrient: function(orient) { + this.node.setAttribute("orient", this.orient = orient); + return this; + }, + getOrient: function() { + return this.orient; + }, + getWidth: function() { + return +this.width; + }, + setHeight: function(height) { + this.node.setAttribute("markerHeight", this.height = height); + return this; + }, + getHeight: function() { + return +this.height; + } + }); + var Path = _p.r(46); + _p.r(11).extendClass(Path, { + setMarker: function(marker, pos) { + pos = pos || "end"; + if (!marker) { + this.node.removeAttribute("marker-" + pos); + } else { + this.node.setAttribute("marker-" + pos, marker.toString()); + } + return this; + } + }); + return Marker; + } +}; + +//src/graphic/mask.js +/** + * 蒙板 + */ +_p[42] = { + value: function(require, exports, module) { + var Class = _p.r(11); + var Shape = _p.r(60); + var Mask = Class.createClass("Mask", { + base: Shape, + mixins: [ _p.r(61) ], + constructor: function() { + this.callBase("mask"); + }, + mask: function(shape) { + shape.getNode().setAttribute("mask", "url(#" + this.getId() + ")"); + return this; + } + }); + Class.extendClass(Shape, { + maskWith: function(mask) { + mask.mask(this); + return this; + } + }); + return Mask; + } +}; + +//src/graphic/matrix.js +_p[43] = { + value: function(require, exports, module) { + var utils = _p.r(12); + var Box = _p.r(25); + var mPattern = /matrix\s*\((.+)\)/i; + var Point = _p.r(50); + // 注意,合并的结果是先执行m2,再执行m1的结果 + function mergeMatrixData(m2, m1) { + return { + a: m1.a * m2.a + m1.c * m2.b, + b: m1.b * m2.a + m1.d * m2.b, + c: m1.a * m2.c + m1.c * m2.d, + d: m1.b * m2.c + m1.d * m2.d, + e: m1.a * m2.e + m1.c * m2.f + m1.e, + f: m1.b * m2.e + m1.d * m2.f + m1.f + }; + } + function d2r(deg) { + return deg * Math.PI / 180; + } + var Matrix = _p.r(11).createClass("Matrix", { + constructor: function() { + if (arguments.length) { + this.setMatrix.apply(this, arguments); + } else { + this.setMatrix(1, 0, 0, 1, 0, 0); + } + }, + translate: function(x, y) { + this.m = mergeMatrixData(this.m, { + a: 1, + c: 0, + e: x, + b: 0, + d: 1, + f: y + }); + return this; + }, + rotate: function(deg) { + var rad = d2r(deg); + var sin = Math.sin(rad), cos = Math.cos(rad); + this.m = mergeMatrixData(this.m, { + a: cos, + c: -sin, + e: 0, + b: sin, + d: cos, + f: 0 + }); + return this; + }, + scale: function(sx, sy) { + if (sy === undefined) { + sy = sx; + } + this.m = mergeMatrixData(this.m, { + a: sx, + c: 0, + e: 0, + b: 0, + d: sy, + f: 0 + }); + return this; + }, + skew: function(degX, degY) { + if (degY === undefined) { + degY = degX; + } + var tx = Math.tan(d2r(degX)), ty = Math.tan(d2r(degY)); + this.m = mergeMatrixData(this.m, { + a: 1, + c: tx, + e: 0, + b: ty, + d: 1, + f: 0 + }); + return this; + }, + /** + * 获得反转矩阵 + * + * 这是我解方程算出来的 + */ + inverse: function() { + var m = this.m, a = m.a, b = m.b, c = m.c, d = m.d, e = m.e, f = m.f, k, aa, bb, cc, dd, ee, ff; + k = a * d - b * c; + aa = d / k; + bb = -b / k; + cc = -c / k; + dd = a / k; + ee = (c * f - e * d) / k; + ff = (b * e - a * f) / k; + return new Matrix(aa, bb, cc, dd, ee, ff); + }, + setMatrix: function(a, b, c, d, e, f) { + if (arguments.length === 1) { + this.m = utils.clone(arguments[0]); + } else { + this.m = { + a: a, + b: b, + c: c, + d: d, + e: e, + f: f + }; + } + return this; + }, + getMatrix: function() { + return utils.clone(this.m); + }, + getTranslate: function() { + var m = this.m; + return { + x: m.e / m.a, + y: m.f / m.d + }; + }, + mergeMatrix: function(matrix) { + return new Matrix(mergeMatrixData(this.m, matrix.m)); + }, + merge: function(matrix) { + return this.mergeMatrix(matrix); + }, + toString: function() { + return this.valueOf().join(" "); + }, + valueOf: function() { + var m = this.m; + return [ m.a, m.b, m.c, m.d, m.e, m.f ]; + }, + equals: function(matrix) { + var m1 = this.m, m2 = matrix.m; + return m1.a == m2.a && m1.b == m2.b && m1.c == m2.c && m1.d == m2.d && m1.e == m2.e && m1.f == m2.f; + }, + transformPoint: function() { + return Matrix.transformPoint.apply(null, [].slice.call(arguments).concat([ this.m ])); + }, + transformBox: function(box) { + return Matrix.transformBox(box, this.m); + }, + clone: function() { + return new Matrix(this.m); + } + }); + Matrix.parse = function(str) { + var match; + var f = parseFloat; + if (str instanceof Array) { + return new Matrix({ + a: str[0], + b: str[1], + c: str[2], + d: str[3], + e: str[4], + f: str[5] + }); + } + if (match = mPattern.exec(str)) { + var values = match[1].split(","); + if (values.length != 6) { + values = match[1].split(" "); + } + return new Matrix({ + a: f(values[0]), + b: f(values[1]), + c: f(values[2]), + d: f(values[3]), + e: f(values[4]), + f: f(values[5]) + }); + } + return new Matrix(); + }; + Matrix.transformPoint = function(x, y, m) { + if (arguments.length === 2) { + m = y; + y = x.y; + x = x.x; + } + return new Point(m.a * x + m.c * y + m.e, m.b * x + m.d * y + m.f); + }; + Matrix.transformBox = function(box, matrix) { + var xMin = Number.MAX_VALUE, xMax = -Number.MAX_VALUE, yMin = Number.MAX_VALUE, yMax = -Number.MAX_VALUE; + var bps = [ [ box.x, box.y ], [ box.x + box.width, box.y ], [ box.x, box.y + box.height ], [ box.x + box.width, box.y + box.height ] ]; + var bp, rp, rps = []; + while (bp = bps.pop()) { + rp = Matrix.transformPoint(bp[0], bp[1], matrix); + rps.push(rp); + xMin = Math.min(xMin, rp.x); + xMax = Math.max(xMax, rp.x); + yMin = Math.min(yMin, rp.y); + yMax = Math.max(yMax, rp.y); + } + box = new Box({ + x: xMin, + y: yMin, + width: xMax - xMin, + height: yMax - yMin + }); + utils.extend(box, { + closurePoints: rps + }); + return box; + }; + // 获得从 node 到 refer 的变换矩阵 + Matrix.getCTM = function(target, refer) { + var ctm = { + a: 1, + b: 0, + c: 0, + d: 1, + e: 0, + f: 0 + }; + var node = target.shapeNode || target.node; + refer = refer || "parent"; + /** + * 由于新版chrome(dev 48.0)移除了getTransformToElement这个方法可能导致报错,这里做兼容处理 + * @Date 2015-11-12 + * @Editor Naixor + */ + function getTransformToElement(target, source) { + var matrix; + try { + matrix = source.getScreenCTM().inverse(); + } catch (e) { + throw new Error("Can not inverse source element' ctm."); + } + return matrix.multiply(target.getScreenCTM()); + } + // 根据参照坐标系选区的不一样,返回不同的结果 + switch (refer) { + case "screen": + // 以浏览器屏幕为参照坐标系 + ctm = node.getScreenCTM(); + break; + + case "doc": + case "paper": + // 以文档(Paper)为参照坐标系 + ctm = node.getCTM(); + break; + + case "view": + case "top": + // 以顶层绘图容器(视野)为参照坐标系 + if (target.getPaper()) { + ctm = node.getTransformToElement !== undefined ? node.getTransformToElement(target.getPaper().shapeNode) : getTransformToElement(node, target.getPaper().shapeNode); + } + break; + + case "parent": + // 以父容器为参照坐标系 + if (target.node.parentNode) { + ctm = node.getTransformToElement !== undefined ? node.getTransformToElement(target.node.parentNode) : getTransformToElement(node, target.node.parentNode); + } + break; + + default: + // 其他情况,指定参照物 + if (refer.node) { + ctm = node.getTransformToElement !== undefined ? node.getTransformToElement(refer.shapeNode || refer.node) : getTransformToElement(node, refer.shapeNode || refer.node); + } + } + return ctm ? new Matrix(ctm.a, ctm.b, ctm.c, ctm.d, ctm.e, ctm.f) : new Matrix(); + }; + return Matrix; + } +}; + +//src/graphic/palette.js +/** + * 调色板 + */ +_p[44] = { + value: function(require, exports, module) { + //标准color + var StandardColor = _p.r(64), Color = _p.r(28), Utils = _p.r(12); + var Palette = _p.r(11).createClass("Palette", { + constructor: function() { + this.color = {}; + }, + /* + * 获取颜色名称所对应的颜色值的Color对象 + * @param name 需要获取的颜色名称 + * @return 对应颜色名称的color对象, 如果未找到对应的名称, 则返回null + */ + get: function(name) { + var colorValue = this.color[name] || StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name] || ""; + if (colorValue) { + return new Color(colorValue); + } + return null; + }, + /* + * 获取给定名称的颜色的hex值表示 + * @param name 需要获取的颜色名称 + * @return 如果找到对应的名称, 则返回该名称所对应的hex格式的值, 否则, 返回一个空字符串 + */ + getColorValue: function(name) { + return this.color[name] || StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name] || ""; + }, + /* + * 向调色板实例添加自己独有的颜色名称,对已存在的颜色名称, 将会覆盖掉 + * @param name 新添加的颜色名称 + * @param value 新添加的颜色名称所对应的值, 可以是一个合法的颜色字符串或者是一个color对象 + * @return 新添加的颜色的值 + */ + add: function(name, value) { + if (typeof value === "string") { + this.color[name] = new Color(value).toRGBA(); + } else { + this.color[name] = value.toRGBA(); + } + return value; + }, + /* + * 删除调色板实例上用户自己添加的颜色, 该方法不能删除内置的颜色 + * @param name 需要删除的颜色名称 + * @return 删除是否成功的bool值 + */ + remove: function(name) { + if (this.color.hasOwnProperty(name)) { + delete this.color[name]; + return true; + } + return false; + } + }); + Utils.extend(Palette, { + getColor: function(name) { + var colorValue = StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name]; + if (colorValue) { + return new Color(colorValue); + } + return null; + }, + /* + * 通过给定的名字获取标准的颜色值表示, 返回的值以hex的方式提供 + * @param name 需要获取的标准颜色名称 + * @return 名字所对应的颜色值的hex表示, 如果未找到对应名称的值, 则返回一个空字符串 + */ + getColorValue: function(name) { + return StandardColor.EXTEND_STANDARD[name] || StandardColor.COLOR_STANDARD[name] || ""; + }, + /* + * 向调色板添加颜色名称,新添加的颜色对所有的调色板对象都可见 + * 对已存在的颜色名称, 将会覆盖掉 + * @param name 新添加的颜色名称 + * @param value 新添加的颜色名称所对于的值, 应该是一个hex格式的颜色字符串, 如: ”#ff0000“ + * @return 新添加的颜色的值 + */ + addColor: function(name, value) { + if (typeof value === "string") { + StandardColor.EXTEND_STANDARD[name] = new Color(value).toRGBA(); + } else { + StandardColor.EXTEND_STANDARD[name] = value.toRGBA(); + } + return value; + }, + /* + * 删除用户自己添加的颜色, 该方法不能删除内置的颜色, 该方法不会影响调色板实例自由的颜色 + * @param name 需要删除的颜色名称 + * @return 删除是否成功的bool值 + */ + removeColor: function(name) { + if (StandardColor.EXTEND_STANDARD.hasOwnProperty(name)) { + delete StandardColor.EXTEND_STANDARD[name]; + return true; + } + return false; + } + }); + return Palette; + } +}; + +//src/graphic/paper.js +_p[45] = { + value: function(require, exports, module) { + var Class = _p.r(11); + var utils = _p.r(12); + var svg = _p.r(67); + var Container = _p.r(29); + var ShapeContainer = _p.r(61); + var ViewBox = _p.r(75); + var EventHandler = _p.r(33); + var Styled = _p.r(66); + var Matrix = _p.r(43); + var Paper = Class.createClass("Paper", { + mixins: [ ShapeContainer, EventHandler, Styled, ViewBox ], + constructor: function(container) { + this.callBase(); + this.node = this.createSVGNode(); + this.node.paper = this; + this.node.appendChild(this.resourceNode = svg.createNode("defs")); + this.node.appendChild(this.shapeNode = svg.createNode("g")); + this.resources = new Container(); + this.setWidth("100%").setHeight("100%"); + if (container) { + this.renderTo(container); + } + this.callMixin(); + }, + renderTo: function(container) { + if (utils.isString(container)) { + container = document.getElementById(container); + } + this.container = container; + container.appendChild(this.node); + }, + createSVGNode: function() { + var node = svg.createNode("svg"); + node.setAttribute("xmlns", "http://www.w3.org/2000/svg"); + node.setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink"); + node.setAttribute("version", "1.1"); + return node; + }, + getNode: function() { + return this.node; + }, + getContainer: function() { + return this.container; + }, + getWidth: function() { + return this.node.clientWidth; + }, + setWidth: function(width) { + this.node.setAttribute("width", width); + return this; + }, + getHeight: function() { + return this.node.clientHeight; + }, + setHeight: function(height) { + this.node.setAttribute("height", height); + return this; + }, + setViewPort: function(cx, cy, zoom) { + var viewport, box; + if (arguments.length == 1) { + viewport = arguments[0]; + cx = viewport.center.x; + cy = viewport.center.y; + zoom = viewport.zoom; + } + zoom = zoom || 1; + box = this.getViewBox(); + var matrix = new Matrix(); + var dx = box.x + box.width / 2 - cx, dy = box.y + box.height / 2 - cy; + matrix.translate(-cx, -cy); + matrix.scale(zoom); + matrix.translate(cx, cy); + matrix.translate(dx, dy); + this.shapeNode.setAttribute("transform", "matrix(" + matrix + ")"); + this.viewport = { + center: { + x: cx, + y: cy + }, + offset: { + x: dx, + y: dy + }, + zoom: zoom + }; + return this; + }, + getViewPort: function() { + if (!this.viewport) { + var box = this.getViewBox(); + return { + zoom: 1, + center: { + x: box.x + box.width / 2, + y: box.y + box.height / 2 + }, + offset: { + x: 0, + y: 0 + } + }; + } + return this.viewport; + }, + getViewPortMatrix: function() { + return Matrix.parse(this.shapeNode.getAttribute("transform")); + }, + getViewPortTransform: function() { + var m = this.shapeNode.getCTM(); + return new Matrix(m.a, m.b, m.c, m.d, m.e, m.f); + }, + getTransform: function() { + return this.getViewPortTransform().reverse(); + }, + addResource: function(resource) { + this.resources.appendItem(resource); + if (resource.node) { + this.resourceNode.appendChild(resource.node); + } + return this; + }, + removeResource: function(resource) { + if (resource.remove) { + resource.remove(); + } + if (resource.node) { + this.resourceNode.removeChild(resource.node); + } + return this; + }, + getPaper: function() { + return this; + } + }); + var Shape = _p.r(60); + Class.extendClass(Shape, { + getPaper: function() { + var parent = this.container; + while (parent && parent instanceof Paper === false) { + parent = parent.container; + } + return parent; + }, + isAttached: function() { + return !!this.getPaper(); + }, + whenPaperReady: function(fn) { + var me = this; + function check() { + var paper = me.getPaper(); + if (paper && fn) { + fn.call(me, paper); + } + return paper; + } + if (!check()) { + this.on("add treeadd", function listen() { + if (check()) { + me.off("add", listen); + me.off("treeadd", listen); + } + }); + } + return this; + } + }); + return Paper; + } +}; + +//src/graphic/path.js +_p[46] = { + value: function(require, exports, module) { + var Utils = _p.r(12); + var createClass = _p.r(11).createClass; + var Shape = _p.r(60); + var svg = _p.r(67); + var g = _p.r(34); + var slice = Array.prototype.slice, flatten = Utils.flatten; + var PathDrawer = createClass("PathDrawer", { + constructor: function(path) { + this.segment = []; + this.path = path; + this.__clear = false; + }, + getPath: function() { + return this.path; + }, + redraw: function() { + this._transation = this._transation || []; + return this.clear(); + }, + done: function() { + var transation = this._transation; + this._transation = null; + this.push(transation); + return this; + }, + clear: function() { + if (this._transation) { + this._transation = []; + } else { + this.path.setPathData("M 0 0"); + } + this._clear = true; + return this; + }, + push: function() { + var segment = slice.call(arguments); + var originData; + if (this._transation) { + this._transation.push(segment); + return this; + } + if (this._clear) { + originData = ""; + this._clear = false; + } else { + originData = this.path.getPathData(); + } + originData = originData || ""; + this.path.setPathData(originData + g.pathToString(segment)); + return this; + }, + moveTo: function(x, y) { + return this.push("M", slice.call(arguments)); + }, + moveBy: function(dx, dy) { + return this.push("m", slice.call(arguments)); + }, + lineTo: function(x, y) { + return this.push("L", slice.call(arguments)); + }, + lineBy: function(dx, dy) { + return this.push("l", slice.call(arguments)); + }, + arcTo: function(rx, ry, xr, laf, sf, x, y) { + return this.push("A", slice.call(arguments)); + }, + arcBy: function(rx, ry, xr, laf, sf, dx, dy) { + return this.push("a", arguments); + }, + carcTo: function(r, laf, sf, x, y) { + return this.push("A", [ r, r, 0 ].concat(slice.call(arguments, 1))); + }, + carcBy: function(r, laf, sf, dx, dy) { + return this.push("a", [ r, r, 0 ].concat(slice.call(arguments, 1))); + }, + bezierTo: function(x1, y1, x2, y2, x, y) { + return this.push("C", slice.call(arguments)); + }, + bezierBy: function(dx1, dy1, dx2, dy2, dx, dy) { + return this.push("c", slice.call(arguments)); + }, + close: function() { + return this.push("z"); + } + }); + return createClass("Path", { + base: Shape, + constructor: function(data) { + this.callBase("path"); + if (data) { + this.setPathData(data); + } + this.node.setAttribute("fill", svg.defaults.fill); + this.node.setAttribute("stroke", svg.defaults.stroke); + }, + setPathData: function(data) { + data = data || "M0,0"; + this.pathdata = g.pathToString(data); + this.node.setAttribute("d", this.pathdata); + this.trigger("shapeupdate", { + type: "pathdata" + }); + return this; + }, + getPathData: function() { + return this.pathdata || ""; + }, + getDrawer: function() { + return new PathDrawer(this); + }, + isClosed: function() { + var data = this.getPathData(); + return !!~data.indexOf("z") || !!~data.indexOf("Z"); + } + }); + } +}; + +//src/graphic/pattern.js +_p[47] = { + value: function(require, exports, module) { + var Resource = _p.r(58); + var ShapeContainer = _p.r(61); + var svg = _p.r(67); + return _p.r(11).createClass("PatternBrush", { + base: Resource, + mixins: [ ShapeContainer ], + constructor: function(paper) { + this.callBase("pattern", paper); + this.node.setAttribute("patternUnits", "userSpaceOnUse"); + }, + setX: function(x) { + this.x = x; + this.node.setAttribute("x", x); + return this; + }, + setY: function(y) { + this.y = y; + this.node.setAttribute("y", y); + return this; + }, + setWidth: function(width) { + this.width = width; + this.node.setAttribute("width", width); + return this; + }, + setHeight: function(height) { + this.height = height; + this.node.setAttribute("height", height); + return this; + }, + getWidth: function() { + return this.width; + }, + getHeight: function() { + return this.height; + } + }); + } +}; + +//src/graphic/pen.js +_p[48] = { + value: function(require, exports, module) { + var Color = _p.r(28); + return _p.r(11).createClass("Pen", { + constructor: function(brush, width) { + this.brush = brush; + this.width = width || 1; + this.linecap = null; + this.linejoin = null; + this.dashArray = null; + this.opacity = 1; + }, + getBrush: function() { + return this.brush; + }, + setBrush: function(brush) { + this.brush = brush; + return this; + }, + setColor: function(color) { + return this.setBrush(color); + }, + getColor: function() { + return this.brush instanceof Color ? this.brush : null; + }, + getWidth: function() { + return this.width; + }, + setWidth: function(width) { + this.width = width; + return this; + }, + getOpacity: function() { + return this.opacity; + }, + setOpacity: function(opacity) { + this.opacity = opacity; + }, + getLineCap: function() { + return this.linecap; + }, + setLineCap: function(linecap) { + this.linecap = linecap; + return this; + }, + getLineJoin: function() { + return this.linejoin; + }, + setLineJoin: function(linejoin) { + this.linejoin = linejoin; + return this; + }, + getDashArray: function() { + return this.dashArray; + }, + setDashArray: function(dashArray) { + this.dashArray = dashArray; + return this; + }, + stroke: function(shape) { + var node = shape.node; + node.setAttribute("stroke", this.brush.toString()); + node.setAttribute("stroke-width", this.getWidth()); + if (this.getOpacity() < 1) { + node.setAttribute("stroke-opacity", this.getOpacity()); + } + if (this.getLineCap()) { + node.setAttribute("stroke-linecap", this.getLineCap()); + } + if (this.getLineJoin()) { + node.setAttribute("stroke-linejoin", this.getLineJoin()); + } + if (this.getDashArray()) { + node.setAttribute("stroke-dasharray", this.getDashArray()); + } + } + }); + } +}; + +//src/graphic/pie.js +_p[49] = { + value: function(require, exports, module) { + return _p.r(11).createClass({ + base: _p.r(68), + constructor: function(radius, angle, angleOffset) { + this.callBase([ 0, radius ], angle, angleOffset); + }, + getRadius: function() { + return this.getSectionArray()[1]; + }, + setRadius: function(radius) { + this.setSectionArray([ 0, radius ]); + } + }); + } +}; + +//src/graphic/point.js +/* + * 点对象抽象 + */ +_p[50] = { + value: function(require, exports, module) { + /** + * @class kity.Point + * @description 表示一个点 + */ + var Point = _p.r(11).createClass("Point", { + /** + * @constructor + * @for kity.Point + * @description 指定默认的 x 和 y 创建一个点 + * + * @param {Number} x 点的 x 坐标 + * @param {Number} y 点的 y 坐标 + */ + constructor: function(x, y) { + /** + * @property + * @for kity.Point + * @description 表示点的 x 坐标 + * @type {Number} + */ + this.x = x || 0; + /** + * @property + * @for kity.Point + * @description 表示点的 y 坐标 + * @type {Number} + */ + this.y = y || 0; + }, + offset: function(dx, dy) { + if (arguments.length == 1) { + dy = dx.y; + dx = dx.x; + } + return new Point(this.x + dx, this.y + dy); + }, + valueOf: function() { + return [ this.x, this.y ]; + }, + toString: function() { + return this.valueOf().join(" "); + }, + spof: function() { + return new Point((this.x | 0) + .5, (this.y | 0) + .5); + }, + round: function() { + return new Point(this.x | 0, this.y | 0); + }, + isOrigin: function() { + return this.x === 0 && this.y === 0; + } + }); + /** + * @static + * @method fromPolar() + * @for kity.Point + * @grammar kity.Point.fromPolar(radius, angle, unit) => kity.Point + * @param {Number} radius 极坐标中的半径 + * @param {Number} angle 极坐标中的角度 + * @param {String} unit 角度使用的单位,默认为 'deg' (角度),可以取值为 'rad',表示传入的是弧度值 + */ + Point.fromPolar = function(radius, angle, unit) { + if (unit != "rad") { + // deg to rad + angle = angle / 180 * Math.PI; + } + return new Point(radius * Math.cos(angle), radius * Math.sin(angle)); + }; + Point.parse = function(unknown) { + if (!unknown) return new Point(); + if (unknown instanceof Point) { + return unknown; + } + if (typeof unknown == "string") { + return Point.parse(unknown.split(/\s*[\s,]\s*/)); + } + if ("0" in unknown && "1" in unknown) { + return new Point(unknown[0], unknown[1]); + } + }; + return Point; + } +}; + +//src/graphic/pointcontainer.js +/** + * 点集合容器 + */ +_p[51] = { + value: function(require, exports, module) { + return _p.r(11).createClass("PointContainer", { + base: _p.r(29), + constructor: function() { + this.callBase(); + }, + addPoint: function(point, pos) { + return this.addItem.apply(this, arguments); + }, + prependPoint: function() { + return this.prependItem.apply(this, arguments); + }, + appendPoint: function() { + return this.appendItem.apply(this, arguments); + }, + removePoint: function(pos) { + return this.removeItem.apply(this, arguments); + }, + addPoints: function() { + return this.addItems.apply(this, arguments); + }, + setPoints: function() { + return this.setItems.apply(this, arguments); + }, + getPoint: function() { + return this.getItem.apply(this, arguments); + }, + getPoints: function() { + return this.getItems.apply(this, arguments); + }, + getFirstPoint: function() { + return this.getFirstItem.apply(this, arguments); + }, + getLastPoint: function() { + return this.getLastItem.apply(this, arguments); + } + }); + } +}; + +//src/graphic/poly.js +/* + * 通过点来决定图形的公共父类 + */ +_p[52] = { + value: function(require, exports, module) { + var Utils = _p.r(12); + return _p.r(11).createClass("Poly", { + base: _p.r(46), + mixins: [ _p.r(51) ], + constructor: function(points, closeable) { + this.callBase(); + //是否可闭合 + this.closeable = !!closeable; + this.setPoints(points || []); + this.changeable = true; + this.update(); + }, + //当点集合发生变化时采取的动作 + onContainerChanged: function() { + if (this.changeable) { + this.update(); + } + }, + update: function() { + var drawer = this.getDrawer(), points = this.getPoints(); + drawer.clear(); + if (!points.length) { + return this; + } + drawer.moveTo(points[0]); + for (var i = 1, point, len = points.length; i < len; i++) { + point = points[i]; + drawer.lineTo(point); + } + if (this.closeable && points.length > 2) { + drawer.close(); + } + return this; + } + }); + } +}; + +//src/graphic/polygon.js +_p[53] = { + value: function(require, exports, module) { + return _p.r(11).createClass("Polygon", { + base: _p.r(52), + constructor: function(points) { + this.callBase(points, true); + } + }); + } +}; + +//src/graphic/polyline.js +_p[54] = { + value: function(require, exports, module) { + return _p.r(11).createClass("Polyline", { + base: _p.r(52), + constructor: function(points) { + this.callBase(points); + } + }); + } +}; + +//src/graphic/radialgradient.js +_p[55] = { + value: function(require, exports, module) { + var Gradient = _p.r(35); + return _p.r(11).createClass("RadialGradientBrush", { + base: Gradient, + constructor: function(paper) { + this.callBase("radialGradient", paper); + this.setCenter(.5, .5); + this.setFocal(.5, .5); + this.setRadius(.5); + }, + setCenter: function(cx, cy) { + this.node.setAttribute("cx", cx); + this.node.setAttribute("cy", cy); + return this; + }, + getCenter: function() { + return { + x: +this.node.getAttribute("cx"), + y: +this.node.getAttribute("cy") + }; + }, + setFocal: function(fx, fy) { + this.node.setAttribute("fx", fx); + this.node.setAttribute("fy", fy); + return this; + }, + getFocal: function() { + return { + x: +this.node.getAttribute("fx"), + y: +this.node.getAttribute("fy") + }; + }, + setRadius: function(r) { + this.node.setAttribute("r", r); + return this; + }, + getRadius: function() { + return +this.node.getAttribute("r"); + } + }); + } +}; + +//src/graphic/rect.js +_p[56] = { + value: function(require, exports, module) { + var RectUtils = {}, Utils = _p.r(12), Point = _p.r(50), Box = _p.r(25); + Utils.extend(RectUtils, { + //根据传递进来的width、height和radius属性, + //获取最适合的radius值 + formatRadius: function(width, height, radius) { + var minValue = Math.floor(Math.min(width / 2, height / 2)); + return Math.min(minValue, radius); + } + }); + /** + * @class kity.Rect + * @description 表示一个矩形 + * @base kity.Path + */ + var Rect = _p.r(11).createClass("Rect", { + base: _p.r(46), + /** + * @constructor + * @for kity.Rect + * @grammar new kity.Rect(width, height, x, y, radius) + * @param {Number} width 矩形的初始化宽度 + * @param {Number} height 矩形的初始化高度 + * @param {Number} x 矩形的初始化 x 坐标 + * @param {Number} y 矩形的初始化 y 坐标 + * @param {Number} radius 矩形的初始化圆角大小 + */ + constructor: function(width, height, x, y, radius) { + this.callBase(); + this.x = x || 0; + this.y = y || 0; + this.width = width || 0; + this.height = height || 0; + this.radius = RectUtils.formatRadius(this.width, this.height, radius || 0); + this.update(); + }, + update: function() { + var x = this.x, y = this.y, w = this.width, h = this.height, r = this.radius; + var drawer = this.getDrawer().redraw(); + if (!r) { + // 直角 + drawer.push("M", x, y); + drawer.push("h", w); + drawer.push("v", h); + drawer.push("h", -w); + drawer.push("z"); + } else { + //圆角 + w -= 2 * r; + h -= 2 * r; + drawer.push("M", x + r, y); + drawer.push("h", w); + drawer.push("a", r, r, 0, 0, 1, r, r); + drawer.push("v", h); + drawer.push("a", r, r, 0, 0, 1, -r, r); + drawer.push("h", -w); + drawer.push("a", r, r, 0, 0, 1, -r, -r); + drawer.push("v", -h); + drawer.push("a", r, r, 0, 0, 1, r, -r); + drawer.push("z"); + } + drawer.done(); + return this; + }, + /** + * @method setWidth + * @for kity.Rect + * @grammar setWidth(width) => kity.Rect + * @description 设置矩形的宽度,设置后返回矩形实例本身 + * @param {Number} width 宽度值 + * + * @example + * ```js + * rect.setWidth(300); + * ``` + */ + setWidth: function(width) { + this.width = width; + return this.update(); + }, + /** + * @method setHeight + * @for kity.Rect + * @grammar setHeight(height) => kity.Rect + * @description 设置矩形的高度,设置后返回矩形实例本身 + * @param {Number} height 高度值 + * + * @example + * ```js + * rect.setHeight(200); + * ``` + */ + setHeight: function(height) { + this.height = height; + return this.update(); + }, + /** + * @method setSize + * @for kity.Rect + * @grammar setSize(width, height) => kity.Rect + * @description 设置矩形的尺寸,设置后返回矩形本身 + * @param {Number} width 矩形的宽度值 + * @param {Number} height 矩形的高度值 + * + * @example + * ```js + * rect.setSize(300, 200); + * ``` + */ + setSize: function(width, height) { + this.width = width; + this.height = height; + return this.update(); + }, + /** + * @method setBox + * @for kity.Rect + * @grammar setBox(box) => kity.Rect + * @description 使用一个 kity 的盒子数据, + * @param {kity.Box} box 盒子数据 + */ + setBox: function(box) { + this.x = box.x; + this.y = box.y; + this.width = box.width; + this.height = box.height; + return this.update(); + }, + getBox: function() { + return new Box(this.x, this.y, this.width, this.height); + }, + getRadius: function() { + return this.radius; + }, + setRadius: function(radius) { + this.radius = RectUtils.formatRadius(this.width, this.height, radius || 0); + return this.update(); + }, + getPosition: function() { + return new Point(this.x, this.y); + }, + setPosition: function(x, y) { + if (arguments.length == 1) { + var p = Point.parse(arguments[0]); + y = p.y; + x = p.x; + } + this.x = x; + this.y = y; + return this.update(); + }, + getWidth: function() { + return this.width; + }, + getHeight: function() { + return this.height; + }, + getPositionX: function() { + return this.x; + }, + getPositionY: function() { + return this.y; + }, + setPositionX: function(x) { + this.x = x; + return this.update(); + }, + setPositionY: function(y) { + this.y = y; + return this.update(); + } + }); + return Rect; + } +}; + +//src/graphic/regularpolygon.js +_p[57] = { + value: function(require, exports, module) { + var Point = _p.r(50); + return _p.r(11).createClass("RegularPolygon", { + base: _p.r(46), + constructor: function(side, radius, x, y) { + this.callBase(); + this.radius = radius || 0; + this.side = Math.max(side || 3, 3); + if (arguments.length > 2) { + if (arguments.length == 3) { + y = x.y; + x = x.x; + } + } + this.center = new Point(x, y); + this.draw(); + }, + getSide: function() { + return this.side; + }, + setSide: function(side) { + this.side = side; + return this.draw(); + }, + getRadius: function() { + return this.radius; + }, + setRadius: function(radius) { + this.radius = radius; + return this.draw(); + }, + draw: function() { + var radius = this.radius, side = this.side, step = Math.PI * 2 / side, drawer = this.getDrawer(), i; + drawer.clear(); + drawer.moveTo(Point.fromPolar(radius, Math.PI / 2, "rad").offset(this.center)); + for (i = 0; i <= side; i++) { + drawer.lineTo(Point.fromPolar(radius, step * i + Math.PI / 2, "rad").offset(this.center)); + } + drawer.close(); + return this; + } + }); + } +}; + +//src/graphic/resource.js +/** + * @fileOverview + * + * 资源节点基类 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[58] = { + value: function(require, exports, module) { + var svg = _p.r(67); + return _p.r(11).createClass("Resource", { + constructor: function(nodeType, paper) { + this.callBase(); + this.node = svg.createNode(nodeType); + if (paper) { + paper.addResource(this); + } + }, + toString: function() { + return "url(#" + this.node.id + ")"; + } + }); + } +}; + +//src/graphic/ring.js +_p[59] = { + value: function(require, exports, module) { + return _p.r(11).createClass({ + base: _p.r(68), + constructor: function(innerRadius, outerRadius) { + this.callBase([ innerRadius, outerRadius ], 360, 0); + }, + getInnerRadius: function() { + return this.getSectionArray()[0]; + }, + getOuterRadius: function() { + return this.getSectionArray()[1]; + }, + setInnerRadius: function(value) { + this.setSectionArray([ value, this.getOuterRadius() ]); + }, + setOuterRadius: function(value) { + this.setSectionArray([ this.getInnerRadius(), value ]); + } + }); + } +}; + +//src/graphic/shape.js +_p[60] = { + value: function(require, exports, module) { + var svg = _p.r(67); + var utils = _p.r(12); + var EventHandler = _p.r(33); + var Styled = _p.r(66); + var Data = _p.r(31); + var Matrix = _p.r(43); + var Pen = _p.r(48); + var slice = Array.prototype.slice; + var Box = _p.r(25); + var Shape = _p.r(11).createClass("Shape", { + mixins: [ EventHandler, Styled, Data ], + constructor: function Shape(tagName) { + this.node = svg.createNode(tagName); + this.node.shape = this; + this.transform = { + translate: null, + rotate: null, + scale: null, + matrix: null + }; + this.callMixin(); + }, + getId: function() { + return this.node.id; + }, + setId: function(id) { + this.node.id = id; + return this; + }, + getNode: function() { + return this.node; + }, + getBoundaryBox: function() { + var box; + try { + box = this.node.getBBox(); + } catch (e) { + box = { + x: this.node.clientLeft, + y: this.node.clientTop, + width: this.node.clientWidth, + height: this.node.clientHeight + }; + } + return new Box(box); + }, + getRenderBox: function(refer) { + var box = this.getBoundaryBox(); + var matrix = this.getTransform(refer); + return matrix.transformBox(box); + }, + getWidth: function() { + return this.getRenderBox().width; + }, + getHeight: function() { + return this.getRenderBox().height; + }, + getSize: function() { + var box = this.getRenderBox(); + delete box.x; + delete box.y; + return box; + }, + setOpacity: function(value) { + this.node.setAttribute("opacity", value); + return this; + }, + getOpacity: function() { + var opacity = this.node.getAttribute("opacity"); + return opacity ? +opacity : 1; + }, + setVisible: function(value) { + if (value) { + this.node.removeAttribute("display"); + } else { + this.node.setAttribute("display", "none"); + } + return this; + }, + getVisible: function() { + this.node.getAttribute("display"); + }, + hasAncestor: function(node) { + var parent = this.container; + while (parent) { + if (parent === node) { + return true; + } + parent = parent.container; + } + return false; + }, + getTransform: function(refer) { + return Matrix.getCTM(this, refer); + }, + clearTransform: function() { + this.node.removeAttribute("transform"); + this.transform = { + translate: null, + rotate: null, + scale: null, + matrix: null + }; + this.trigger("shapeupdate", { + type: "transform" + }); + return this; + }, + _applyTransform: function() { + var t = this.transform, result = []; + if (t.translate) { + result.push([ "translate(", t.translate, ")" ]); + } + if (t.rotate) { + result.push([ "rotate(", t.rotate, ")" ]); + } + if (t.scale) { + result.push([ "scale(", t.scale, ")" ]); + } + if (t.matrix) { + result.push([ "matrix(", t.matrix, ")" ]); + } + this.node.setAttribute("transform", utils.flatten(result).join(" ")); + return this; + }, + setMatrix: function(m) { + this.transform.matrix = m; + return this._applyTransform(); + }, + setTranslate: function(t) { + this.transform.translate = t !== null && slice.call(arguments) || null; + return this._applyTransform(); + }, + setRotate: function(r) { + this.transform.rotate = r !== null && slice.call(arguments) || null; + return this._applyTransform(); + }, + setScale: function(s) { + this.transform.scale = s !== null && slice.call(arguments) || null; + return this._applyTransform(); + }, + translate: function(dx, dy) { + var m = this.transform.matrix || new Matrix(); + if (dy === undefined) { + dy = 0; + } + this.transform.matrix = m.translate(dx, dy); + return this._applyTransform(); + }, + rotate: function(deg) { + var m = this.transform.matrix || new Matrix(); + this.transform.matrix = m.rotate(deg); + return this._applyTransform(); + }, + scale: function(sx, sy) { + var m = this.transform.matrix || new Matrix(); + if (sy === undefined) { + sy = sx; + } + this.transform.matrix = m.scale(sx, sy); + return this._applyTransform(); + }, + skew: function(sx, sy) { + var m = this.transform.matrix || new Matrix(); + if (sy === undefined) { + sy = sx; + } + this.transform.matrix = m.skew(sx, sy); + return this._applyTransform(); + }, + stroke: function(pen, width) { + if (pen && pen.stroke) { + pen.stroke(this); + } else if (pen) { + // 字符串或重写了 toString 的对象 + this.node.setAttribute("stroke", pen.toString()); + if (width) { + this.node.setAttribute("stroke-width", width); + } + } else if (pen === null) { + this.node.removeAttribute("stroe"); + } + return this; + }, + fill: function(brush) { + // 字符串或重写了 toString 的对象 + if (brush) { + this.node.setAttribute("fill", brush.toString()); + } + if (brush === null) { + this.node.removeAttribute("fill"); + } + return this; + }, + setAttr: function(a, v) { + var me = this; + if (utils.isObject(a)) { + utils.each(a, function(val, key) { + me.setAttr(key, val); + }); + } + if (v === undefined || v === null || v === "") { + this.node.removeAttribute(a); + } else { + this.node.setAttribute(a, v); + } + return this; + }, + getAttr: function(a) { + return this.node.getAttribute(a); + } + }); + return Shape; + } +}; + +//src/graphic/shapecontainer.js +_p[61] = { + value: function(require, exports, module) { + var Container = _p.r(29); + var utils = _p.r(12); + var ShapeContainer = _p.r(11).createClass("ShapeContainer", { + base: Container, + isShapeContainer: true, + /* private */ + handleAdd: function(shape, index) { + var parent = this.getShapeNode(); + parent.insertBefore(shape.node, parent.childNodes[index] || null); + shape.trigger("add", { + container: this + }); + if (shape.notifyTreeModification) { + shape.notifyTreeModification("treeadd", this); + } + }, + /* private */ + handleRemove: function(shape, index) { + var parent = this.getShapeNode(); + parent.removeChild(shape.node); + shape.trigger("remove", { + container: this + }); + if (shape.notifyTreeModification) { + shape.notifyTreeModification("treeremove", this); + } + }, + /* private */ + notifyTreeModification: function(type, container) { + this.eachItem(function(index, shape) { + if (shape.notifyTreeModification) { + shape.notifyTreeModification(type, container); + } + shape.trigger(type, { + container: container + }); + }); + }, + /* public */ + getShape: function(index) { + return this.getItem(index); + }, + /* public */ + addShape: function(shape, index) { + return this.addItem(shape, index); + }, + put: function(shape) { + this.addShape(shape); + return shape; + }, + appendShape: function(shape) { + return this.addShape(shape); + }, + prependShape: function(shape) { + return this.addShape(shape, 0); + }, + replaceShape: function(replacer, origin) { + var index = this.indexOf(origin); + if (index === -1) { + return; + } + this.removeShape(index); + this.addShape(replacer, index); + return this; + }, + addShapeBefore: function(shape, refer) { + var index = this.indexOf(refer); + return this.addShape(shape, index); + }, + addShapeAfter: function(shape, refer) { + var index = this.indexOf(refer); + return this.addShape(shape, index === -1 ? undefined : index + 1); + }, + /* public */ + addShapes: function(shapes) { + return this.addItems(shapes); + }, + /* public */ + removeShape: function(index) { + return this.removeItem(index); + }, + getShapes: function() { + return this.getItems(); + }, + getShapesByType: function(name) { + var shapes = []; + function getShapes(shape) { + if (name.toLowerCase() == shape.getType().toLowerCase()) { + shapes.push(shape); + } + if (shape.isShapeContainer) { + utils.each(shape.getShapes(), function(n) { + getShapes(n); + }); + } + } + getShapes(this); + return shapes; + }, + /* public */ + getShapeById: function(id) { + return this.getShapeNode().getElementById(id).shape; + }, + arrangeShape: function(shape, index) { + return this.removeShape(shape).addShape(shape, index); + }, + /* protected */ + getShapeNode: function() { + return this.shapeNode || this.node; + } + }); + var Shape = _p.r(60); + _p.r(11).extendClass(Shape, { + bringTo: function(index) { + this.container.arrangeShape(this, index); + return this; + }, + bringFront: function() { + return this.bringTo(this.container.indexOf(this) + 1); + }, + bringBack: function() { + return this.bringTo(this.container.indexOf(this) - 1); + }, + bringTop: function() { + this.container.removeShape(this).addShape(this); + return this; + }, + bringRear: function() { + return this.bringTo(0); + }, + bringRefer: function(referShape, offset) { + if (referShape.container) { + if (this.remove) { + this.remove(); + } + referShape.container.addShape(this, referShape.container.indexOf(referShape) + (offset || 0)); + } + return this; + }, + bringAbove: function(referShape) { + return this.bringRefer(referShape); + }, + bringBelow: function(referShape) { + return this.bringRefer(referShape, 1); + }, + replaceBy: function(newShape) { + if (this.container) { + newShape.bringAbove(this); + this.remove(); + } + return this; + } + }); + return ShapeContainer; + } +}; + +//src/graphic/shapeevent.js +/* + * 图形事件包装类 + * */ +_p[62] = { + value: function(require, exprots, module) { + var Matrix = _p.r(43), Utils = _p.r(12), Point = _p.r(50); + return _p.r(11).createClass("ShapeEvent", { + constructor: function(event) { + var target = null; + // dom 事件封装对象 + if (!Utils.isObject(event.target)) { + this.type = event.type; + target = event.target; + // use标签有特殊属性, 需要区别对待 + if (target.correspondingUseElement) { + target = target.correspondingUseElement; + } + this.originEvent = event; + this.targetShape = target.shape || target.paper || event.currentTarget && (event.currentTarget.shape || event.currentTarget.paper); + if (event._kityParam) { + Utils.extend(this, event._kityParam); + } + } else { + Utils.extend(this, event); + } + }, + preventDefault: function() { + var evt = this.originEvent; + if (!evt) { + return true; + } + if (evt.preventDefault) { + evt.preventDefault(); + return evt.cancelable; + } else { + evt.returnValue = false; + return true; + } + }, + //当前鼠标事件在用户坐标系中点击的点的坐标位置 + getPosition: function(refer, touchIndex) { + if (!this.originEvent) { + return null; + } + var eventClient = this.originEvent.touches ? this.originEvent.touches[touchIndex || 0] : this.originEvent; + var target = this.targetShape; + var targetNode = target.shapeNode || target.node; + var pScreen = new Point(eventClient && eventClient.clientX || 0, eventClient && eventClient.clientY || 0); + var pTarget = Matrix.transformPoint(pScreen, targetNode.getScreenCTM().inverse()); + var pRefer = Matrix.getCTM(target, refer || "view").transformPoint(pTarget); + return pRefer; + }, + stopPropagation: function() { + var evt = this.originEvent; + if (!evt) { + return true; + } + if (evt.stopPropagation) { + evt.stopPropagation(); + } else { + evt.cancelBubble = false; + } + } + }); + } +}; + +//src/graphic/shapepoint.js +/* + * 图形上的点抽象 + */ +_p[63] = { + value: function(require, exports, module) { + return _p.r(11).createClass("ShapePoint", { + base: _p.r(50), + constructor: function(px, py) { + this.callBase(px, py); + }, + setX: function(x) { + return this.setPoint(x, this.y); + }, + setY: function(y) { + return this.setPoint(this.x, y); + }, + setPoint: function(x, y) { + this.x = x; + this.y = y; + this.update(); + return this; + }, + getPoint: function() { + return this; + }, + update: function() { + if (this.container && this.container.update) { + this.container.update(); + } + return this; + } + }); + } +}; + +//src/graphic/standardcolor.js +/** + * 标准颜色映射 + */ +_p[64] = { + value: { + COLOR_STANDARD: { + aliceblue: "#f0f8ff", + antiquewhite: "#faebd7", + aqua: "#00ffff", + aquamarine: "#7fffd4", + azure: "#f0ffff", + beige: "#f5f5dc", + bisque: "#ffe4c4", + black: "#000000", + blanchedalmond: "#ffebcd", + blue: "#0000ff", + blueviolet: "#8a2be2", + brown: "#a52a2a", + burlywood: "#deb887", + cadetblue: "#5f9ea0", + chartreuse: "#7fff00", + chocolate: "#d2691e", + coral: "#ff7f50", + cornflowerblue: "#6495ed", + cornsilk: "#fff8dc", + crimson: "#dc143c", + cyan: "#00ffff", + darkblue: "#00008b", + darkcyan: "#008b8b", + darkgoldenrod: "#b8860b", + darkgray: "#a9a9a9", + darkgreen: "#006400", + darkgrey: "#a9a9a9", + darkkhaki: "#bdb76b", + darkmagenta: "#8b008b", + darkolivegreen: "#556b2f", + darkorange: "#ff8c00", + darkorchid: "#9932cc", + darkred: "#8b0000", + darksalmon: "#e9967a", + darkseagreen: "#8fbc8f", + darkslateblue: "#483d8b", + darkslategray: "#2f4f4f", + darkslategrey: "#2f4f4f", + darkturquoise: "#00ced1", + darkviolet: "#9400d3", + deeppink: "#ff1493", + deepskyblue: "#00bfff", + dimgray: "#696969", + dimgrey: "#696969", + dodgerblue: "#1e90ff", + firebrick: "#b22222", + floralwhite: "#fffaf0", + forestgreen: "#228b22", + fuchsia: "#ff00ff", + gainsboro: "#dcdcdc", + ghostwhite: "#f8f8ff", + gold: "#ffd700", + goldenrod: "#daa520", + gray: "#808080", + green: "#008000", + greenyellow: "#adff2f", + grey: "#808080", + honeydew: "#f0fff0", + hotpink: "#ff69b4", + indianred: "#cd5c5c", + indigo: "#4b0082", + ivory: "#fffff0", + khaki: "#f0e68c", + lavender: "#e6e6fa", + lavenderblush: "#fff0f5", + lawngreen: "#7cfc00", + lemonchiffon: "#fffacd", + lightblue: "#add8e6", + lightcoral: "#f08080", + lightcyan: "#e0ffff", + lightgoldenrodyellow: "#fafad2", + lightgray: "#d3d3d3", + lightgreen: "#90ee90", + lightgrey: "#d3d3d3", + lightpink: "#ffb6c1", + lightsalmon: "#ffa07a", + lightseagreen: "#20b2aa", + lightskyblue: "#87cefa", + lightslategray: "#778899", + lightslategrey: "#778899", + lightsteelblue: "#b0c4de", + lightyellow: "#ffffe0", + lime: "#00ff00", + limegreen: "#32cd32", + linen: "#faf0e6", + magenta: "#ff00ff", + maroon: "#800000", + mediumaquamarine: "#66cdaa", + mediumblue: "#0000cd", + mediumorchid: "#ba55d3", + mediumpurple: "#9370db", + mediumseagreen: "#3cb371", + mediumslateblue: "#7b68ee", + mediumspringgreen: "#00fa9a", + mediumturquoise: "#48d1cc", + mediumvioletred: "#c71585", + midnightblue: "#191970", + mintcream: "#f5fffa", + mistyrose: "#ffe4e1", + moccasin: "#ffe4b5", + navajowhite: "#ffdead", + navy: "#000080", + oldlace: "#fdf5e6", + olive: "#808000", + olivedrab: "#6b8e23", + orange: "#ffa500", + orangered: "#ff4500", + orchid: "#da70d6", + palegoldenrod: "#eee8aa", + palegreen: "#98fb98", + paleturquoise: "#afeeee", + palevioletred: "#db7093", + papayawhip: "#ffefd5", + peachpuff: "#ffdab9", + peru: "#cd853f", + pink: "#ffc0cb", + plum: "#dda0dd", + powderblue: "#b0e0e6", + purple: "#800080", + red: "#ff0000", + rosybrown: "#bc8f8f", + royalblue: "#4169e1", + saddlebrown: "#8b4513", + salmon: "#fa8072", + sandybrown: "#f4a460", + seagreen: "#2e8b57", + seashell: "#fff5ee", + sienna: "#a0522d", + silver: "#c0c0c0", + skyblue: "#87ceeb", + slateblue: "#6a5acd", + slategray: "#708090", + slategrey: "#708090", + snow: "#fffafa", + springgreen: "#00ff7f", + steelblue: "#4682b4", + tan: "#d2b48c", + teal: "#008080", + thistle: "#d8bfd8", + tomato: "#ff6347", + turquoise: "#40e0d0", + violet: "#ee82ee", + wheat: "#f5deb3", + white: "#ffffff", + whitesmoke: "#f5f5f5", + yellow: "#ffff00" + }, + //标准扩展 + EXTEND_STANDARD: {} + } +}; + +//src/graphic/star.js +_p[65] = { + value: function(require, exports, module) { + /** + * @see http://www.jdawiseman.com/papers/easymath/surds_star_inner_radius.html + */ + var defaultRatioForStar = { + "3": .2, + // yy + "5": .38196601125, + "6": .57735026919, + "8": .541196100146, + "10": .726542528005, + "12": .707106781187 + }; + var Point = _p.r(50); + return _p.r(11).createClass("Star", { + base: _p.r(46), + constructor: function(vertex, radius, shrink, offset, angleOffset) { + this.callBase(); + this.vertex = vertex || 3; + this.radius = radius || 0; + this.shrink = shrink; + this.offset = offset || new Point(0, 0); + this.angleOffset = angleOffset || 0; + this.draw(); + }, + getVertex: function() { + return this.vertex; + }, + setVertex: function(value) { + this.vertex = value; + return this.draw(); + }, + getRadius: function() { + return this.radius; + }, + setRadius: function(value) { + this.radius = value; + return this.draw(); + }, + getShrink: function() { + return this.shrink; + }, + setShrink: function(value) { + this.shrink = value; + return this.draw(); + }, + getOffset: function() { + return this.offset; + }, + setOffset: function(value) { + this.offset = value; + return this.draw(); + }, + getAngleOffset: function() { + return this.angleOffset; + }, + setAngleOffset: function(value) { + this.angleOffset = value; + return this.draw(); + }, + draw: function() { + var innerRadius = this.radius, outerRadius = this.radius * (this.shrink || defaultRatioForStar[this.vertex] || .5), vertex = this.vertex, offset = this.offset, angleStart = 90, angleStep = 180 / vertex, angleOffset = this.angleOffset, drawer = this.getDrawer(), i, angle; + drawer.clear(); + drawer.moveTo(Point.fromPolar(outerRadius, angleStart)); + for (i = 1; i <= vertex * 2; i++) { + angle = angleStart + angleStep * i; + // 绘制内点 + if (i % 2) { + drawer.lineTo(Point.fromPolar(innerRadius, angle + angleOffset).offset(offset)); + } else { + drawer.lineTo(Point.fromPolar(outerRadius, angle)); + } + } + drawer.close(); + } + }); + } +}; + +//src/graphic/styled.js +_p[66] = { + value: function(require, exports, module) { + // polyfill for ie + var ClassList = _p.r(11).createClass("ClassList", { + constructor: function(node) { + this._node = node; + this._list = node.className.toString().split(" "); + }, + _update: function() { + this._node.className = this._list.join(" "); + }, + add: function(name) { + this._list.push(name); + this._update(); + }, + remove: function(name) { + var index = this._list.indexOf(name); + if (~index) { + this._list.splice(index, 1); + } + this._update(); + }, + contains: function(name) { + return !!~this._list.indexOf(name); + } + }); + function getClassList(node) { + if (!node.classList) { + node.classList = new ClassList(node); + } + return node.classList; + } + return _p.r(11).createClass("Styled", { + addClass: function(name) { + getClassList(this.node).add(name); + return this; + }, + removeClass: function(name) { + getClassList(this.node).remove(name); + return this; + }, + hasClass: function(name) { + return getClassList(this.node).contains(name); + }, + setStyle: function(styles) { + if (arguments.length == 2) { + this.node.style[arguments[0]] = arguments[1]; + return this; + } + for (var name in styles) { + if (styles.hasOwnProperty(name)) { + this.node.style[name] = styles[name]; + } + } + return this; + } + }); + } +}; + +//src/graphic/svg.js +_p[67] = { + value: function(require, exports, module) { + var doc = document; + var id = 0; + var svg = { + createNode: function(name) { + var node = doc.createElementNS(svg.ns, name); + node.id = "kity_" + name + "_" + id++; + return node; + }, + defaults: { + stroke: "none", + fill: "none" + }, + xlink: "http://www.w3.org/1999/xlink", + ns: "http://www.w3.org/2000/svg" + }; + return svg; + } +}; + +//src/graphic/sweep.js +_p[68] = { + value: function(require, exports, module) { + var Point = _p.r(50); + return _p.r(11).createClass("Sweep", { + base: _p.r(46), + constructor: function(sectionArray, angle, angleOffset) { + this.callBase(); + this.sectionArray = sectionArray || []; + this.angle = angle || 0; + this.angleOffset = angleOffset || 0; + this.draw(); + }, + getSectionArray: function() { + return this.sectionArray; + }, + setSectionArray: function(value) { + this.sectionArray = value; + return this.draw(); + }, + getAngle: function() { + return this.angle; + }, + setAngle: function(value) { + this.angle = value; + return this.draw(); + }, + getAngleOffset: function() { + return this.angleOffset; + }, + setAngleOffset: function(value) { + this.angleOffset = value; + return this.draw(); + }, + draw: function() { + var sectionArray = this.sectionArray, i; + for (i = 0; i < sectionArray.length; i += 2) { + this.drawSection(sectionArray[i], sectionArray[i + 1]); + } + return this; + }, + drawSection: function(from, to) { + var angleLength = this.angle && (this.angle % 360 ? this.angle % 360 : 360), angleStart = this.angleOffset, angleHalf = angleStart + angleLength / 2, angleEnd = angleStart + angleLength, sweepFlag = angleLength < 0 ? 0 : 1, drawer = this.getDrawer(); + drawer.redraw(); + if (angleLength === 0) { + drawer.done(); + return; + } + drawer.moveTo(Point.fromPolar(from, angleStart)); + drawer.lineTo(Point.fromPolar(to, angleStart)); + if (to) { + drawer.carcTo(to, 0, sweepFlag, Point.fromPolar(to, angleHalf)); + drawer.carcTo(to, 0, sweepFlag, Point.fromPolar(to, angleEnd)); + } + drawer.lineTo(Point.fromPolar(from, angleEnd)); + if (from) { + drawer.carcTo(from, 0, sweepFlag, Point.fromPolar(from, angleHalf)); + drawer.carcTo(from, 0, sweepFlag, Point.fromPolar(from, angleStart)); + } + drawer.close(); + drawer.done(); + } + }); + } +}; + +//src/graphic/text.js +_p[69] = { + value: function(require, exports, module) { + var TextContent = _p.r(70); + var ShapeContainer = _p.r(61); + var svg = _p.r(67); + var utils = _p.r(12); + var offsetHash = {}; + function getTextBoundOffset(text) { + var font = text._cachedFontHash; + if (offsetHash[font]) { + return offsetHash[font]; + } + var textContent = text.getContent(); + text.setContent("百度Fex"); + var bbox = text.getBoundaryBox(), y = text.getY(); + if (!bbox.height) return { + top: 0, + bottom: 0, + middle: 0 + }; + var topOffset = y - bbox.y + +text.node.getAttribute("dy"), bottomOffset = topOffset - bbox.height; + text.setContent(textContent); + return offsetHash[font] = { + top: topOffset, + bottom: bottomOffset, + middle: (topOffset + bottomOffset) / 2 + }; + } + return _p.r(11).createClass("Text", { + base: TextContent, + mixins: [ ShapeContainer ], + constructor: function(content) { + this.callBase("text"); + if (content !== undefined) { + this.setContent(content); + } + this._buildFontHash(); + }, + fixPosition: function() { + if (!this.__fixedPosition) { + this.setVerticalAlign(this.getVerticalAlign()); + } + }, + _buildFontHash: function() { + var style = window.getComputedStyle(this.node); + this._cachedFontHash = [ style.fontFamily, style.fontSize, style.fontStretch, style.fontStyle, style.fontVariant, style.fontWeight ].join("-"); + }, + _fontChanged: function(font) { + var last = this._lastFont; + var current = utils.extend({}, last, font); + if (!last) { + this._lastFont = font; + return true; + } + var changed = last.family != current.family || last.size != current.size || last.style != current.style || last.weight != current.weight; + this._lastFont = current; + return changed; + }, + setX: function(x) { + this.node.setAttribute("x", x); + return this; + }, + setPosition: function(x, y) { + return this.setX(x).setY(y); + }, + setY: function(y) { + this.node.setAttribute("y", y); + return this; + }, + getX: function() { + return +this.node.getAttribute("x") || 0; + }, + getY: function() { + return +this.node.getAttribute("y") || 0; + }, + setFont: function(font) { + this.callBase(font); + if (this._fontChanged(font)) { + this._buildFontHash(); + this.setVerticalAlign(this.getVerticalAlign()); + } + return this; + }, + setTextAnchor: function(anchor) { + this.node.setAttribute("text-anchor", anchor); + return this; + }, + getTextAnchor: function() { + return this.node.getAttribute("text-anchor") || "start"; + }, + // top/bottom/middle/baseline + setVerticalAlign: function(align) { + this.whenPaperReady(function() { + var dy; + switch (align) { + case "top": + dy = getTextBoundOffset(this).top; + break; + + case "bottom": + dy = getTextBoundOffset(this).bottom; + break; + + case "middle": + dy = getTextBoundOffset(this).middle; + break; + + default: + dy = 0; + } + if (dy) this.__fixedPosition = true; + this.node.setAttribute("dy", dy); + }); + this.verticalAlign = align; + return this; + }, + getVerticalAlign: function() { + return this.verticalAlign || "baseline"; + }, + setStartOffset: function(offset) { + // only for text path + if (this.shapeNode != this.node) { + this.shapeNode.setAttribute("startOffset", offset * 100 + "%"); + } + }, + addSpan: function(span) { + this.addShape(span); + return this; + }, + setPath: function(path) { + var textpath = this.shapeNode; + if (this.shapeNode == this.node) { + // 当前还不是 textpath + textpath = this.shapeNode = svg.createNode("textPath"); + while (this.node.firstChild) { + this.shapeNode.appendChild(this.node.firstChild); + } + this.node.appendChild(textpath); + } + textpath.setAttributeNS(svg.xlink, "xlink:href", "#" + path.node.id); + this.setTextAnchor(this.getTextAnchor()); + return this; + } + }); + } +}; + +//src/graphic/textcontent.js +_p[70] = { + value: function(require, exports, module) { + var Shape = _p.r(60); + return _p.r(11).createClass("TextContent", { + base: Shape, + constructor: function(nodeType) { + // call shape constructor + this.callBase(nodeType); + this.shapeNode = this.shapeNode || this.node; + this.shapeNode.setAttribute("text-rendering", "geometricPrecision"); + }, + clearContent: function() { + while (this.shapeNode.firstChild) { + this.shapeNode.removeChild(this.shapeNode.firstChild); + } + return this; + }, + setContent: function(content) { + this.shapeNode.textContent = content; + return this; + }, + getContent: function() { + return this.shapeNode.textContent; + }, + appendContent: function(content) { + this.shapeNode.textContent += content; + return this; + }, + setSize: function(value) { + return this.setFontSize(value); + }, + setFontSize: function(value) { + return this.setFont({ + size: value + }); + }, + setFontFamily: function(value) { + return this.setFont({ + family: value + }); + }, + setFontBold: function(bold) { + return this.setFont({ + weight: bold ? "bold" : "normal" + }); + }, + setFontItalic: function(italic) { + return this.setFont({ + style: italic ? "italic" : "normal" + }); + }, + setFont: function(font) { + var node = this.node; + [ "family", "size", "weight", "style" ].forEach(function(section) { + if (font[section] === null) { + node.removeAttribute("font-" + section); + } else if (font[section]) { + node.setAttribute("font-" + section, font[section]); + } + }); + return this; + }, + getExtentOfChar: function(index) { + return this.node.getExtentOfChar(index); + }, + getRotationOfChar: function(index) { + return this.node.getRotationOfChar(index); + }, + getCharNumAtPosition: function(x, y) { + return this.node.getCharNumAtPosition(this.node.viewportElement.createSVGPoint(x, y)); + } + }); + } +}; + +//src/graphic/textspan.js +_p[71] = { + value: function(require, exports, module) { + var TextContent = _p.r(70); + var Styled = _p.r(66); + return _p.r(11).createClass("TextSpan", { + base: TextContent, + mixins: [ Styled ], + constructor: function(content) { + this.callBase("tspan"); + this.setContent(content); + } + }); + } +}; + +//src/graphic/use.js +/* + * USE 功能 + */ +_p[72] = { + value: function(require, exports, module) { + var Svg = _p.r(67); + var Class = _p.r(11); + var Use = Class.createClass("Use", { + base: _p.r(60), + constructor: function(shape) { + this.callBase("use"); + this.ref(shape); + }, + ref: function(shape) { + if (!shape) { + this.node.removeAttributeNS(Svg.xlink, "xlink:href"); + return this; + } + var shapeId = shape.getId(); + if (shapeId) { + this.node.setAttributeNS(Svg.xlink, "xlink:href", "#" + shapeId); + } + // by techird + // 作为 Use 的图形,如果没有 fill 和 stroke,移除默认的 'none' 值,用于 Use 覆盖 + if (shape.node.getAttribute("fill") === "none") { + shape.node.removeAttribute("fill"); + } + if (shape.node.getAttribute("stroke") === "none") { + shape.node.removeAttribute("stroke"); + } + return this; + } + }); + var Shape = _p.r(60); + Class.extendClass(Shape, { + // fast-use + use: function() { + return new Use(this); + } + }); + return Use; + } +}; + +//src/graphic/vector.js +_p[73] = { + value: function(require, exports, module) { + var Point = _p.r(50); + var Matrix = _p.r(43); + var Vector = _p.r(11).createClass("Vector", { + base: Point, + constructor: function(x, y) { + this.callBase(x, y); + }, + square: function() { + return this.x * this.x + this.y * this.y; + }, + length: function() { + return Math.sqrt(this.square()); + }, + add: function(q) { + return new Vector(this.x + q.x, this.y + q.y); + }, + minus: function(q) { + return new Vector(this.x - q.x, this.y - q.y); + }, + dot: function(q) { + return this.x * q.x + this.y * q.y; + }, + project: function(q) { + return q.multipy(this.dot(q) / q.square()); + }, + normalize: function(length) { + if (length === undefined) { + length = 1; + } + return this.multipy(length / this.length()); + }, + multipy: function(scale) { + return new Vector(this.x * scale, this.y * scale); + }, + rotate: function(angle, unit) { + if (unit == "rad") { + angle = angle / Math.PI * 180; + } + var p = new Matrix().rotate(angle).transformPoint(this); + return new Vector(p.x, p.y); + }, + vertical: function() { + return new Vector(this.y, -this.x); + }, + reverse: function() { + return this.multipy(-1); + }, + getAngle: function() { + var length = this.length(); + if (length === 0) return 0; + var rad = Math.acos(this.x / length); + var sign = this.y > 0 ? 1 : -1; + return sign * 180 * rad / Math.PI; + } + }); + Vector.fromPoints = function(p1, p2) { + return new Vector(p2.x - p1.x, p2.y - p1.y); + }; + Vector.fromPolar = function() { + var p = Point.fromPolar.apply(Point, arguments); + return new Vector(p.x, p.y); + }; + _p.r(11).extendClass(Point, { + asVector: function() { + return new Vector(this.x, this.y); + } + }); + return Vector; + } +}; + +//src/graphic/view.js +_p[74] = { + value: function(require, exports, module) { + var ShapeContainer = _p.r(61); + var ViewBox = _p.r(75); + return _p.r(11).createClass("View", { + mixins: [ ShapeContainer, ViewBox ], + base: _p.r(74), + constructor: function() { + this.callBase("view"); + } + }); + } +}; + +//src/graphic/viewbox.js +_p[75] = { + value: function(require, exports, module) { + return _p.r(11).createClass("ViewBox", { + getViewBox: function() { + var attr = this.node.getAttribute("viewBox"); + if (attr === null) { + // firefox: + // 1. viewBox 没有设置过的时候获得的是 null + // 2. svg 标签没有指定绝对大小的时候 clientWidth 和 clientHeigt 为 0,需要在父容器上查找 + // TODO: 第 2 条取得的不准确(假如有 padding 之类的) + return { + x: 0, + y: 0, + width: this.node.clientWidth || this.node.parentNode.clientWidth, + height: this.node.clientHeight || this.node.parentNode.clientHeight + }; + } else { + attr = attr.split(" "); + return { + x: +attr[0], + y: +attr[1], + width: +attr[2], + height: +attr[3] + }; + } + }, + setViewBox: function(x, y, width, height) { + this.node.setAttribute("viewBox", [ x, y, width, height ].join(" ")); + return this; + } + }); + } +}; + +//src/kity.js +/** + * @fileOverview kity 暴露的方法或对象 + */ +_p[76] = { + value: function(require, exports, module) { + var kity = {}, utils = _p.r(12); + kity.version = "2.0.0"; + utils.extend(kity, { + // core + createClass: _p.r(11).createClass, + extendClass: _p.r(11).extendClass, + Utils: utils, + Browser: _p.r(10), + // shape + Box: _p.r(25), + Bezier: _p.r(23), + BezierPoint: _p.r(24), + Circle: _p.r(26), + Clip: _p.r(27), + Color: _p.r(28), + Container: _p.r(29), + Curve: _p.r(30), + Ellipse: _p.r(32), + Group: _p.r(36), + Gradient: _p.r(35), + HyperLink: _p.r(37), + Image: _p.r(38), + Line: _p.r(39), + LinearGradient: _p.r(40), + Mask: _p.r(42), + Matrix: _p.r(43), + Marker: _p.r(41), + Palette: _p.r(44), + Paper: _p.r(45), + Path: _p.r(46), + Pattern: _p.r(47), + Pen: _p.r(48), + Point: _p.r(50), + PointContainer: _p.r(51), + Polygon: _p.r(53), + Polyline: _p.r(54), + Pie: _p.r(49), + RadialGradient: _p.r(55), + Resource: _p.r(58), + Rect: _p.r(56), + RegularPolygon: _p.r(57), + Ring: _p.r(59), + Shape: _p.r(60), + ShapePoint: _p.r(63), + ShapeContainer: _p.r(61), + Sweep: _p.r(68), + Star: _p.r(65), + Text: _p.r(69), + TextSpan: _p.r(71), + Use: _p.r(72), + Vector: _p.r(73), + g: _p.r(34), + // animate + Animator: _p.r(0), + Easing: _p.r(1), + OpacityAnimator: _p.r(4), + RotateAnimator: _p.r(6), + ScaleAnimator: _p.r(7), + Timeline: _p.r(8), + TranslateAnimator: _p.r(9), + PathAnimator: _p.r(5), + MotionAnimator: _p.r(3), + requestFrame: _p.r(2).requestFrame, + releaseFrame: _p.r(2).releaseFrame, + // filter + Filter: _p.r(20), + GaussianblurFilter: _p.r(21), + ProjectionFilter: _p.r(22), + // effect + ColorMatrixEffect: _p.r(13), + CompositeEffect: _p.r(14), + ConvolveMatrixEffect: _p.r(15), + Effect: _p.r(16), + GaussianblurEffect: _p.r(17), + OffsetEffect: _p.r(18) + }); + return window.kity = kity; + } +}; + +var moduleMapping = { + kity: 76 +}; + +function use(name) { + _p.r([ moduleMapping[name] ]); +} +/* global use, inc: true */ + +/** + * 模块暴露 + */ +use('kity'); +})(); \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/loading.gif b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..5bb90fd6a49107a321c35b9cee4a7b810314b51f Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/loading.gif differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_BB.woff b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_BB.woff new file mode 100644 index 0000000000000000000000000000000000000000..51b3cce0cca2aef11b35d287a0077f65bf42cb26 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_BB.woff differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_CAL.woff b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_CAL.woff new file mode 100644 index 0000000000000000000000000000000000000000..f433b03af6a9396146bc669df2a4f74c58b6e61a Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_CAL.woff differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_FRAK.woff b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_FRAK.woff new file mode 100644 index 0000000000000000000000000000000000000000..9c7e9d68e6d48f0e1d67c77d62af1d485cfbeff4 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_FRAK.woff differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_MAIN.woff b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_MAIN.woff new file mode 100644 index 0000000000000000000000000000000000000000..ed93f8e84f307c523934cfea59c18569ec257e4b Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_MAIN.woff differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_ROMAN.woff b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_ROMAN.woff new file mode 100644 index 0000000000000000000000000000000000000000..6b5d474dffe13e550788a56ebe4d3f8245388215 Binary files /dev/null and b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/kityformula/resource/KF_AMS_ROMAN.woff differ diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/plugin.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/plugin.js new file mode 100644 index 0000000000000000000000000000000000000000..9b74d606efa311f760624889eb95bca86ac21006 --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/plugin.js @@ -0,0 +1,72 @@ +tinymce.PluginManager.add('kityformula-editor', function(editor, url) { + + var baseURL = tinymce.baseURL+'/plugins/kityformula-editor/kityFormula.html'; + + editor.on('dblclick',function(){ + var sel=editor.selection.getContent(); + var path=/\/g; + var path2=/data-latex="(.*?)"/g; + + if(sel.search(path)==0){ + sel.replace(path2,function($0,$1){ + var param=encodeURIComponent($1); + openDialog(param); + return $0; + }); + }; + }); + + var openDialog = function(param) { + return editor.windowManager.openUrl({ + title: '插入公式', + size: 'large', + width: 785, + height: 475, + url:param?baseURL+"?c="+param:baseURL, + buttons: [ + { + type: 'cancel', + text: 'Close' + }, + { + type: 'custom', + text: 'Save', + name: 'save', + primary: true + }, + ], + onAction: function (api, details) { + switch (details.name) { + case 'save': + api.sendMessage("save"); + break; + default: + break; + }; + } + }); + }; + + + editor.ui.registry.addButton('kityformula-editor', { + text: '公式', + tooltip: '插入公式', + onAction: function() { + openDialog(); + } + }); + editor.ui.registry.addMenuItem('kityformula-editor', { + text: '公式', + onAction: function() { + openDialog(); + } + }); + return { + getMetadata: function() { + return { + name: "公式", + url: "http://hgcserver.gitee.io", + }; + } + }; +}); \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/plugin.min.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/plugin.min.js new file mode 100644 index 0000000000000000000000000000000000000000..9b74d606efa311f760624889eb95bca86ac21006 --- /dev/null +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/kityformula-editor/plugin.min.js @@ -0,0 +1,72 @@ +tinymce.PluginManager.add('kityformula-editor', function(editor, url) { + + var baseURL = tinymce.baseURL+'/plugins/kityformula-editor/kityFormula.html'; + + editor.on('dblclick',function(){ + var sel=editor.selection.getContent(); + var path=/\/g; + var path2=/data-latex="(.*?)"/g; + + if(sel.search(path)==0){ + sel.replace(path2,function($0,$1){ + var param=encodeURIComponent($1); + openDialog(param); + return $0; + }); + }; + }); + + var openDialog = function(param) { + return editor.windowManager.openUrl({ + title: '插入公式', + size: 'large', + width: 785, + height: 475, + url:param?baseURL+"?c="+param:baseURL, + buttons: [ + { + type: 'cancel', + text: 'Close' + }, + { + type: 'custom', + text: 'Save', + name: 'save', + primary: true + }, + ], + onAction: function (api, details) { + switch (details.name) { + case 'save': + api.sendMessage("save"); + break; + default: + break; + }; + } + }); + }; + + + editor.ui.registry.addButton('kityformula-editor', { + text: '公式', + tooltip: '插入公式', + onAction: function() { + openDialog(); + } + }); + editor.ui.registry.addMenuItem('kityformula-editor', { + text: '公式', + onAction: function() { + openDialog(); + } + }); + return { + getMetadata: function() { + return { + name: "公式", + url: "http://hgcserver.gitee.io", + }; + } + }; +}); \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/table/plugin.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/table/plugin.js index 6e6262a2cf88de0905bf5d629c7ee8fbd8854d7d..0587755f7642fc4932cb32ac208896f1f4af5d20 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/plugins/table/plugin.js +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/table/plugin.js @@ -4677,8 +4677,8 @@ var hasAdvancedTableTab = function (editor) { return editor.getParam('table_advtab', true, 'boolean'); }; - var hasAppearanceOptions = function (editor) { - return editor.getParam('table_appearance_options', true, 'boolean'); + var hasAplaytpanceOptions = function (editor) { + return editor.getParam('table_aplaytpance_options', true, 'boolean'); }; var hasTableGrid = function (editor) { return editor.getParam('table_grid', true, 'boolean'); @@ -7655,7 +7655,7 @@ label: 'Height' } ]; - var appearanceItems = hasAppearanceOptions(editor) ? [ + var aplaytpanceItems = hasAplaytpanceOptions(editor) ? [ { type: 'input', name: 'cellspacing', @@ -7712,7 +7712,7 @@ label: 'Class', items: classes }] : []; - return rowColCountItems.concat(alwaysItems).concat(appearanceItems).concat(alignmentItem).concat(classListItem); + return rowColCountItems.concat(alwaysItems).concat(aplaytpanceItems).concat(alignmentItem).concat(classListItem); }; var styleTDTH = function (dom, elm, name, value) { diff --git a/public/static/component/laytp/module/tinymce/tinymce/plugins/table/plugin.min.js b/public/static/component/laytp/module/tinymce/tinymce/plugins/table/plugin.min.js index 4bbd6fe946311a52a2d5b8351717043b928c2fdd..0889cff6fde640aa1c0844ee5bfbfcd0a5fffe3f 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/plugins/table/plugin.min.js +++ b/public/static/component/laytp/module/tinymce/tinymce/plugins/table/plugin.min.js @@ -6,4 +6,4 @@ * * Version: 5.6.2 (2020-12-08) */ -!function(){"use strict";var y=function(){},b=function(n){return function(){return n}},d=function(n){return n};function w(r){for(var o=[],n=1;n=e.length&&n.substr(t,t+e.length)===e},rn=function(n,e){return-1!==n.indexOf(e)},on=function(n,e){return tn(n,e,0)},un=function(n,e){return tn(n,e,n.length-e.length)},cn=(G=/^\s+|\s+$/g,function(n){return n.replace(G,"")}),an=function(n){return 0=n.startCol&&o<=n.finishRow&&u>=n.startRow},pt=function(n,e){return e.column>=n.startCol&&e.column+e.colspan-1<=n.finishCol&&e.row>=n.startRow&&e.row+e.rowspan-1<=n.finishRow},ht=function(n,e,t){var r=mt.findItem(n,e,Pn),o=mt.findItem(n,t,Pn);return r.bind(function(r){return o.map(function(n){return e=r,t=n,{startRow:Math.min(e.row,t.row),startCol:Math.min(e.column,t.column),finishRow:Math.max(e.row+e.rowspan-1,t.row+t.rowspan-1),finishCol:Math.max(e.column+e.colspan-1,t.column+t.colspan-1)};var e,t})})},vt=function(e,n,t){return ht(e,n,t).bind(function(n){return function(n,e){for(var t=!0,r=w(pt,e),o=e.startRow;o<=e.finishRow;o++)for(var u=e.startCol;u<=e.finishCol;u++)t=t&&mt.getAt(n,o,u).exists(r);return t?x.some(e):x.none()}(e,n)})},bt=function(t,n,e){return ht(t,n,e).map(function(n){var e=mt.filterItems(t,w(gt,n));return E(e,function(n){return n.element})})},wt=function(n,e){return mt.findItem(n,e,function(n,e){return Mn(e,n)}).map(function(n){return n.element})},yt=function(i,c,a){return ot(i).bind(function(n){var r,e,o,u,t=xt(n);return r=t,e=i,o=c,u=a,mt.findItem(r,e,Pn).bind(function(n){var e=0t.maxRow||st.maxCol||(mt.getAt(e,l,s).filter(r).isNone()?(o=f,0,u=n[l].element,i=In.fromTag("td"),Ot(i,In.fromTag("br")),(o?Ot:Rt)(u,i)):f=!0)}},fr=function(n,e){var t,u,r,i,c,a,l,o,f,s,d=function(n){return Bn(n.element,e)},m=lt(n),g=mt.generate(m),p=(u=d,r=(t=g).grid.columns,i=t.grid.rows,c=r,l=a=0,zn(t.access,function(n){var e,t,r,o;u(n)&&(t=(e=n.row)+n.rowspan-1,o=(r=n.column)+n.colspan-1,e=r.length-1)return x.none();var n=r[o].fold(function(){var n,e,t=(n=r.slice(0,o),(e=R.call(n,0)).reverse(),e);return V(t,function(n,e){return n.map(function(n){return{value:n,delta:e+1}})})},function(n){return x.some({value:n,delta:0})}),e=r[o+1].fold(function(){var n=r.slice(o+1);return V(n,function(n,e){return n.map(function(n){return{value:n,delta:e+1}})})},function(n){return x.some({value:n,delta:1})});return n.bind(function(t){return e.map(function(n){var e=n.delta+t.delta;return Math.abs(n.value-t.value)/e})})},to=function(e,t){return function(n){return"rtl"===ro(n)?t:e}},ro=function(n){return"rtl"===He(n,"direction")?"rtl":"ltr"},oo=qr("height",function(n){var e=n.dom;return we(n)?e.getBoundingClientRect().height:e.offsetHeight}),uo=function(n){return oo.get(n)},io=function(n){return oo.getOuter(n)},co=function(t,r){return{left:t,top:r,translate:function(n,e){return co(t+n,r+e)}}},ao=co,lo=function(n,e){return n!==undefined?n:e!==undefined?e:0},fo=function(n){var e=n.dom.ownerDocument,t=e.body,r=e.defaultView,o=e.documentElement;if(t===n.dom)return ao(t.offsetLeft,t.offsetTop);var u=lo(null==r?void 0:r.pageYOffset,o.scrollTop),i=lo(null==r?void 0:r.pageXOffset,o.scrollLeft),c=lo(o.clientTop,t.clientTop),a=lo(o.clientLeft,t.clientLeft);return so(n).translate(i-a,u-c)},so=function(n){var e,t=n.dom,r=t.ownerDocument.body;return r===t?ao(r.offsetLeft,r.offsetTop):we(n)?(e=t.getBoundingClientRect(),ao(e.left,e.top)):ao(0,0)},mo=function(n,e){return{row:n,y:e}},go=function(n,e){return{col:n,x:e}},po=function(n){return fo(n).left+Jr(n)},ho=function(n){return fo(n).left},vo=function(n,e){return go(n,ho(e))},bo=function(n,e){return go(n,po(e))},wo=function(n){return fo(n).top},yo=function(n,e){return mo(n,wo(e))},Co=function(n,e){return mo(n,wo(e)+io(e))},xo=function(t,e,r){if(0===r.length)return[];var n=E(r.slice(1),function(n,e){return n.map(function(n){return t(e,n)})}),o=r[r.length-1].map(function(n){return e(r.length-1,n)});return n.concat([o])},So={delta:d,positions:function(n){return xo(yo,Co,n)},edge:wo},To=to({delta:d,edge:ho,positions:function(n){return xo(vo,bo,n)}},{delta:function(n){return-n},edge:po,positions:function(n){return xo(bo,vo,n)}}),Ro={delta:function(n,e){return To(e).delta(n,e)},positions:function(n,e){return To(e).positions(n,e)},edge:function(n){return To(n).edge(n)}},Oo={unsupportedLength:["em","ex","cap","ch","ic","rem","lh","rlh","vw","vh","vi","vb","vmin","vmax","cm","mm","Q","in","pc","pt","px"],fixed:["px","pt"],relative:["%"],empty:[""]},Do=(Ur="[eE][+-]?[0-9]+",Gr=["Infinity",(Vr="[0-9]+")+"\\."+($r=function(n){return"(?:"+n+")?"})(Vr)+$r(Ur),"\\."+Vr+$r(Ur),Vr+$r(Ur)].join("|"),new RegExp("^([+-]?(?:"+Gr+"))(.*)$")),Ao=function(n,o){return x.from(Do.exec(n)).bind(function(n){var e,t=Number(n[1]),r=n[2];return e=r,I(o,function(n){return I(Oo[n],function(n){return e===n})})?x.some({value:t,unit:r}):x.none()})},Io=function(){var n=Dn().browser;return n.isIE()||n.isEdge()},Bo=function(n,e,t){return r=He(n,e),o=t,u=parseFloat(r),isNaN(u)?o:u;var r,o,u},Eo=function(n){return Io()?(t=(e=n).dom.getBoundingClientRect().height,"border-box"===He(e,"box-sizing")?t:t-Bo(e,"padding-top",0)-Bo(e,"padding-bottom",0)-(Bo(e,"border-top-width",0)+Bo(e,"border-bottom-width",0))):Bo(n,"height",uo(n));var e,t},Po=function(n){return Io()?(t=(e=n).dom.getBoundingClientRect().width,"border-box"===He(e,"box-sizing")?t:t-Bo(e,"padding-left",0)-Bo(e,"padding-right",0)-(Bo(e,"border-left-width",0)+Bo(e,"border-right-width",0))):Bo(n,"width",Yr(n));var e,t},ko=/(\d+(\.\d+)?)%/,Mo=/(\d+(\.\d+)?)px|em/,No=function(n,e){var t,r=(t=n,x.from(t.dom.offsetParent).map(In.fromDom).getOr(ye(oe(n))));return e(n)/e(r)*100},jo=function(n,e){Fe(n,"width",e+"px")},_o=function(n,e){Fe(n,"width",e+"%")},zo=function(n,e){Fe(n,"height",e+"px")},Wo=function(n,e,t,r){var o,u,i,c,a,l=parseInt(n,10);return un(n,"%")&&"table"!==Yn(e)?(u=l,i=t,c=r,a=ot(o=e).map(function(n){var e=i(n);return Math.floor(u/100*e)}).getOr(u),c(o,a),a):l},Fo=function(n){var e,t=Ve(e=n,"height").getOrThunk(function(){return Eo(e)+"px"});return t?Wo(t,n,uo,zo):uo(n)},Lo=function(n){return Ve(n,"width").fold(function(){return x.from(Me(n,"width"))},function(n){return x.some(n)})},Ho=function(n,e){return n/e.pixelWidth()*100},qo=function(e,t){return Lo(e).fold(function(){var n=Yr(e);return Ho(n,t)},function(n){return function(n,e,t){var r=ko.exec(e);if(null!==r)return parseFloat(r[1]);var o=Po(n);return Ho(o,t)}(e,n,t)})},Vo=function(e,t){return Lo(e).fold(function(){return Po(e)},function(n){return function(n,e,t){var r=Mo.exec(e);if(null!==r)return parseInt(r[1],10);var o=ko.exec(e);if(null===o)return Po(n);var u=parseFloat(o[1]);return u/100*t.pixelWidth()}(e,n,t)})},Uo=function(n){return t="rowspan",Fo(e=n)/Ge(e,t);var e,t},$o=function(n,e,t){Fe(n,"width",e+t)},Go=function(n){return No(n,Yr)+"%"},Ko=b(ko),Xo=b(Mo),Yo=(Kr="col",function(n){return ne(n)&&Yn(n)===Kr}),Jo=function(n,e,t){return Ve(n,e).fold(function(){return t(n)+"px"},function(n){return n})},Qo=function(n,e){return Jo(n,"width",function(n){return Yo(n)?Yr(n):Vo(n,e)})},Zo=function(n){return Jo(n,"height",Uo)},nu=function(n,e,t,r,o,u){return n.filter(r).fold(function(){return u(eo(t,e))},function(n){return o(n)})},eu=function(n,e,i,c,a){var t,l=Qr(n),r=mt.hasColumns(n)?(t=n,E(mt.justColumns(t),function(n){return x.from(n.element)})):l,f=[x.some(Ro.edge(e))].concat(E(Ro.positions(l,e),function(n){return n.map(function(n){return n.x})})),s=g(Ke);return E(r,function(n,u){return nu(n,u,f,s,function(n){if(!Yo(r=n)||Ve(r,"width").isSome())return i(n,a);var e,t,r,o=(e=l[u],t=d,e!==undefined&&null!==e?t(e):x.none());return nu(o,u,f,s,function(n){return c(x.some(Yr(n)))},c)},c)})},tu=function(n){return n.map(function(n){return n+"px"}).getOr("")},ru=function(n,e,t){return eu(n,e,Vo,function(n){return n.getOrThunk(t.minCellWidth)},t)},ou=function(n,e,t,r,o){var u=no(n),i=[x.some(t.edge(e))].concat(E(t.positions(u,e),function(n){return n.map(function(n){return n.y})}));return E(u,function(n,e){return nu(n,e,i,g(Xe),r,o)})},uu=function(n,e,t){for(var r=0,o=n;o=e.length||n.column>Mc(e[0]))return na.error("invalid start address out of table bounds, row: "+n.row+", column: "+n.column);var r=e.slice(n.row),o=r[0].cells.slice(n.column),u=Mc(t[0]),i=t.length;return na.value({rowDelta:r.length-i,colDelta:o.length-u})}(t,r,o).map(function(n){var e=ia(r,n,u);return ca(t,e,o,u,i)})},la=function(r,n,e,t,o){var u,i,c,a;u=n,i=r,c=o,a=t.cell,0=t&&n.column=t&&n.column=o&&n.column',r.insertBefore(o,r.firstChild)),""===i.align?Bl(t,r):Il(t,r,i.align),t.focus(),t.addVisual()})},of=function(n,e){var t,r,o,u,i,c,a,l,f=n.dom,s=Fl(n,Fi(n));!1===e?(t=f.getParent(n.selection.getStart(),"table"))?(o=t,u=Fi(r=n),l=r.dom,s=U({width:l.getStyle(o,"width")||l.getAttrib(o,"width"),height:l.getStyle(o,"height")||l.getAttrib(o,"height"),cellspacing:l.getStyle(o,"border-spacing")||l.getAttrib(o,"cellspacing"),cellpadding:l.getAttrib(o,"cellpadding")||Al(r.dom,o,"padding"),border:(i=l,c=o,a=Ve(In.fromDom(c),"border-width"),Li(r)&&a.isSome()?a.getOr(""):i.getAttrib(c,"border")||Al(r.dom,c,"border-width")||Al(r.dom,c,"border")),caption:!!l.select("caption",o)[0],"class":l.getAttrib(o,"class",""),align:zl(r,o)},u?Ml(l,o):{})):Fi(n)&&(s.borderstyle="",s.bordercolor="",s.backgroundcolor=""):(s.cols="1",s.rows="1",Fi(n)&&(s.borderstyle="",s.bordercolor="",s.backgroundcolor=""));var d=Pl(n.getParam("table_class_list",[],"array"));0=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom}),Bf=function(t,r,n,e,o){var u=function(n){var e=t.dom.createRange();return e.setStart(r.dom,n),e.collapse(!0),e},i=_t(r).length,c=function(n,e,t,r,o){if(0===o)return 0;if(e===r)return o-1;for(var u=r,i=1;ir.left&&o.leftt.right;var e,t})});var t},Ks={point:function(n){return n.bottom},adjuster:function(n,e,t,r,o){var u=Ws(o,5);return Math.abs(t.bottom-r.bottom)<1||t.top>o.bottom?$s.retry(u):t.top===o.bottom?$s.retry(Ws(o,1)):Gs(n,e,o)?$s.retry(Ls(u,5,0)):$s.none()},move:Ws,gather:Bs},Xs=function(t,r,o,u,i){return 0===i?x.some(u):(a=t,l=u.left,f=r.point(u),a.elementFromPoint(l,f).filter(function(n){return"table"===Yn(n)}).isSome()?(e=u,c=i-1,Xs(t,n=r,o,n.move(e,5),c)):t.situsFromPoint(u.left,r.point(u)).bind(function(n){return n.start.fold(x.none,function(e){return Us(t,e).bind(function(n){return r.adjuster(t,e,n,o,u).fold(x.none,function(n){return Xs(t,r,o,n,i-1)})}).orThunk(function(){return x.some(u)})},x.none)}));var n,e,c,a,l,f},Ys=function(e,t,n){var r,o,u,i=e.move(n,5),c=Xs(t,e,n,i,100).getOr(i);return o=c,u=t,((r=e).point(o)>u.getInnerHeight()?x.some(r.point(o)-u.getInnerHeight()):r.point(o)<0?x.some(-r.point(o)):x.none()).fold(function(){return t.situsFromPoint(c.left,e.point(c))},function(n){return t.scrollBy(0,n),t.situsFromPoint(c.left,e.point(c)-n)})},Js={tryUp:w(Ys,{point:function(n){return n.top},adjuster:function(n,e,t,r,o){var u=Fs(o,5);return Math.abs(t.top-r.top)<1||t.bottom=e.length&&n.substr(t,t+e.length)===e},rn=function(n,e){return-1!==n.indexOf(e)},on=function(n,e){return tn(n,e,0)},un=function(n,e){return tn(n,e,n.length-e.length)},cn=(G=/^\s+|\s+$/g,function(n){return n.replace(G,"")}),an=function(n){return 0=n.startCol&&o<=n.finishRow&&u>=n.startRow},pt=function(n,e){return e.column>=n.startCol&&e.column+e.colspan-1<=n.finishCol&&e.row>=n.startRow&&e.row+e.rowspan-1<=n.finishRow},ht=function(n,e,t){var r=mt.findItem(n,e,Pn),o=mt.findItem(n,t,Pn);return r.bind(function(r){return o.map(function(n){return e=r,t=n,{startRow:Math.min(e.row,t.row),startCol:Math.min(e.column,t.column),finishRow:Math.max(e.row+e.rowspan-1,t.row+t.rowspan-1),finishCol:Math.max(e.column+e.colspan-1,t.column+t.colspan-1)};var e,t})})},vt=function(e,n,t){return ht(e,n,t).bind(function(n){return function(n,e){for(var t=!0,r=w(pt,e),o=e.startRow;o<=e.finishRow;o++)for(var u=e.startCol;u<=e.finishCol;u++)t=t&&mt.getAt(n,o,u).exists(r);return t?x.some(e):x.none()}(e,n)})},bt=function(t,n,e){return ht(t,n,e).map(function(n){var e=mt.filterItems(t,w(gt,n));return E(e,function(n){return n.element})})},wt=function(n,e){return mt.findItem(n,e,function(n,e){return Mn(e,n)}).map(function(n){return n.element})},yt=function(i,c,a){return ot(i).bind(function(n){var r,e,o,u,t=xt(n);return r=t,e=i,o=c,u=a,mt.findItem(r,e,Pn).bind(function(n){var e=0t.maxRow||st.maxCol||(mt.getAt(e,l,s).filter(r).isNone()?(o=f,0,u=n[l].element,i=In.fromTag("td"),Ot(i,In.fromTag("br")),(o?Ot:Rt)(u,i)):f=!0)}},fr=function(n,e){var t,u,r,i,c,a,l,o,f,s,d=function(n){return Bn(n.element,e)},m=lt(n),g=mt.generate(m),p=(u=d,r=(t=g).grid.columns,i=t.grid.rows,c=r,l=a=0,zn(t.access,function(n){var e,t,r,o;u(n)&&(t=(e=n.row)+n.rowspan-1,o=(r=n.column)+n.colspan-1,e=r.length-1)return x.none();var n=r[o].fold(function(){var n,e,t=(n=r.slice(0,o),(e=R.call(n,0)).reverse(),e);return V(t,function(n,e){return n.map(function(n){return{value:n,delta:e+1}})})},function(n){return x.some({value:n,delta:0})}),e=r[o+1].fold(function(){var n=r.slice(o+1);return V(n,function(n,e){return n.map(function(n){return{value:n,delta:e+1}})})},function(n){return x.some({value:n,delta:1})});return n.bind(function(t){return e.map(function(n){var e=n.delta+t.delta;return Math.abs(n.value-t.value)/e})})},to=function(e,t){return function(n){return"rtl"===ro(n)?t:e}},ro=function(n){return"rtl"===He(n,"direction")?"rtl":"ltr"},oo=qr("height",function(n){var e=n.dom;return we(n)?e.getBoundingClientRect().height:e.offsetHeight}),uo=function(n){return oo.get(n)},io=function(n){return oo.getOuter(n)},co=function(t,r){return{left:t,top:r,translate:function(n,e){return co(t+n,r+e)}}},ao=co,lo=function(n,e){return n!==undefined?n:e!==undefined?e:0},fo=function(n){var e=n.dom.ownerDocument,t=e.body,r=e.defaultView,o=e.documentElement;if(t===n.dom)return ao(t.offsetLeft,t.offsetTop);var u=lo(null==r?void 0:r.pageYOffset,o.scrollTop),i=lo(null==r?void 0:r.pageXOffset,o.scrollLeft),c=lo(o.clientTop,t.clientTop),a=lo(o.clientLeft,t.clientLeft);return so(n).translate(i-a,u-c)},so=function(n){var e,t=n.dom,r=t.ownerDocument.body;return r===t?ao(r.offsetLeft,r.offsetTop):we(n)?(e=t.getBoundingClientRect(),ao(e.left,e.top)):ao(0,0)},mo=function(n,e){return{row:n,y:e}},go=function(n,e){return{col:n,x:e}},po=function(n){return fo(n).left+Jr(n)},ho=function(n){return fo(n).left},vo=function(n,e){return go(n,ho(e))},bo=function(n,e){return go(n,po(e))},wo=function(n){return fo(n).top},yo=function(n,e){return mo(n,wo(e))},Co=function(n,e){return mo(n,wo(e)+io(e))},xo=function(t,e,r){if(0===r.length)return[];var n=E(r.slice(1),function(n,e){return n.map(function(n){return t(e,n)})}),o=r[r.length-1].map(function(n){return e(r.length-1,n)});return n.concat([o])},So={delta:d,positions:function(n){return xo(yo,Co,n)},edge:wo},To=to({delta:d,edge:ho,positions:function(n){return xo(vo,bo,n)}},{delta:function(n){return-n},edge:po,positions:function(n){return xo(bo,vo,n)}}),Ro={delta:function(n,e){return To(e).delta(n,e)},positions:function(n,e){return To(e).positions(n,e)},edge:function(n){return To(n).edge(n)}},Oo={unsupportedLength:["em","ex","cap","ch","ic","rem","lh","rlh","vw","vh","vi","vb","vmin","vmax","cm","mm","Q","in","pc","pt","px"],fixed:["px","pt"],relative:["%"],empty:[""]},Do=(Ur="[eE][+-]?[0-9]+",Gr=["Infinity",(Vr="[0-9]+")+"\\."+($r=function(n){return"(?:"+n+")?"})(Vr)+$r(Ur),"\\."+Vr+$r(Ur),Vr+$r(Ur)].join("|"),new RegExp("^([+-]?(?:"+Gr+"))(.*)$")),Ao=function(n,o){return x.from(Do.exec(n)).bind(function(n){var e,t=Number(n[1]),r=n[2];return e=r,I(o,function(n){return I(Oo[n],function(n){return e===n})})?x.some({value:t,unit:r}):x.none()})},Io=function(){var n=Dn().browser;return n.isIE()||n.isEdge()},Bo=function(n,e,t){return r=He(n,e),o=t,u=parseFloat(r),isNaN(u)?o:u;var r,o,u},Eo=function(n){return Io()?(t=(e=n).dom.getBoundingClientRect().height,"border-box"===He(e,"box-sizing")?t:t-Bo(e,"padding-top",0)-Bo(e,"padding-bottom",0)-(Bo(e,"border-top-width",0)+Bo(e,"border-bottom-width",0))):Bo(n,"height",uo(n));var e,t},Po=function(n){return Io()?(t=(e=n).dom.getBoundingClientRect().width,"border-box"===He(e,"box-sizing")?t:t-Bo(e,"padding-left",0)-Bo(e,"padding-right",0)-(Bo(e,"border-left-width",0)+Bo(e,"border-right-width",0))):Bo(n,"width",Yr(n));var e,t},ko=/(\d+(\.\d+)?)%/,Mo=/(\d+(\.\d+)?)px|em/,No=function(n,e){var t,r=(t=n,x.from(t.dom.offsetParent).map(In.fromDom).getOr(ye(oe(n))));return e(n)/e(r)*100},jo=function(n,e){Fe(n,"width",e+"px")},_o=function(n,e){Fe(n,"width",e+"%")},zo=function(n,e){Fe(n,"height",e+"px")},Wo=function(n,e,t,r){var o,u,i,c,a,l=parseInt(n,10);return un(n,"%")&&"table"!==Yn(e)?(u=l,i=t,c=r,a=ot(o=e).map(function(n){var e=i(n);return Math.floor(u/100*e)}).getOr(u),c(o,a),a):l},Fo=function(n){var e,t=Ve(e=n,"height").getOrThunk(function(){return Eo(e)+"px"});return t?Wo(t,n,uo,zo):uo(n)},Lo=function(n){return Ve(n,"width").fold(function(){return x.from(Me(n,"width"))},function(n){return x.some(n)})},Ho=function(n,e){return n/e.pixelWidth()*100},qo=function(e,t){return Lo(e).fold(function(){var n=Yr(e);return Ho(n,t)},function(n){return function(n,e,t){var r=ko.exec(e);if(null!==r)return parseFloat(r[1]);var o=Po(n);return Ho(o,t)}(e,n,t)})},Vo=function(e,t){return Lo(e).fold(function(){return Po(e)},function(n){return function(n,e,t){var r=Mo.exec(e);if(null!==r)return parseInt(r[1],10);var o=ko.exec(e);if(null===o)return Po(n);var u=parseFloat(o[1]);return u/100*t.pixelWidth()}(e,n,t)})},Uo=function(n){return t="rowspan",Fo(e=n)/Ge(e,t);var e,t},$o=function(n,e,t){Fe(n,"width",e+t)},Go=function(n){return No(n,Yr)+"%"},Ko=b(ko),Xo=b(Mo),Yo=(Kr="col",function(n){return ne(n)&&Yn(n)===Kr}),Jo=function(n,e,t){return Ve(n,e).fold(function(){return t(n)+"px"},function(n){return n})},Qo=function(n,e){return Jo(n,"width",function(n){return Yo(n)?Yr(n):Vo(n,e)})},Zo=function(n){return Jo(n,"height",Uo)},nu=function(n,e,t,r,o,u){return n.filter(r).fold(function(){return u(eo(t,e))},function(n){return o(n)})},eu=function(n,e,i,c,a){var t,l=Qr(n),r=mt.hasColumns(n)?(t=n,E(mt.justColumns(t),function(n){return x.from(n.element)})):l,f=[x.some(Ro.edge(e))].concat(E(Ro.positions(l,e),function(n){return n.map(function(n){return n.x})})),s=g(Ke);return E(r,function(n,u){return nu(n,u,f,s,function(n){if(!Yo(r=n)||Ve(r,"width").isSome())return i(n,a);var e,t,r,o=(e=l[u],t=d,e!==undefined&&null!==e?t(e):x.none());return nu(o,u,f,s,function(n){return c(x.some(Yr(n)))},c)},c)})},tu=function(n){return n.map(function(n){return n+"px"}).getOr("")},ru=function(n,e,t){return eu(n,e,Vo,function(n){return n.getOrThunk(t.minCellWidth)},t)},ou=function(n,e,t,r,o){var u=no(n),i=[x.some(t.edge(e))].concat(E(t.positions(u,e),function(n){return n.map(function(n){return n.y})}));return E(u,function(n,e){return nu(n,e,i,g(Xe),r,o)})},uu=function(n,e,t){for(var r=0,o=n;o=e.length||n.column>Mc(e[0]))return na.error("invalid start address out of table bounds, row: "+n.row+", column: "+n.column);var r=e.slice(n.row),o=r[0].cells.slice(n.column),u=Mc(t[0]),i=t.length;return na.value({rowDelta:r.length-i,colDelta:o.length-u})}(t,r,o).map(function(n){var e=ia(r,n,u);return ca(t,e,o,u,i)})},la=function(r,n,e,t,o){var u,i,c,a;u=n,i=r,c=o,a=t.cell,0=t&&n.column=t&&n.column=o&&n.column',r.insertBefore(o,r.firstChild)),""===i.align?Bl(t,r):Il(t,r,i.align),t.focus(),t.addVisual()})},of=function(n,e){var t,r,o,u,i,c,a,l,f=n.dom,s=Fl(n,Fi(n));!1===e?(t=f.getParent(n.selection.getStart(),"table"))?(o=t,u=Fi(r=n),l=r.dom,s=U({width:l.getStyle(o,"width")||l.getAttrib(o,"width"),height:l.getStyle(o,"height")||l.getAttrib(o,"height"),cellspacing:l.getStyle(o,"border-spacing")||l.getAttrib(o,"cellspacing"),cellpadding:l.getAttrib(o,"cellpadding")||Al(r.dom,o,"padding"),border:(i=l,c=o,a=Ve(In.fromDom(c),"border-width"),Li(r)&&a.isSome()?a.getOr(""):i.getAttrib(c,"border")||Al(r.dom,c,"border-width")||Al(r.dom,c,"border")),caption:!!l.select("caption",o)[0],"class":l.getAttrib(o,"class",""),align:zl(r,o)},u?Ml(l,o):{})):Fi(n)&&(s.borderstyle="",s.bordercolor="",s.backgroundcolor=""):(s.cols="1",s.rows="1",Fi(n)&&(s.borderstyle="",s.bordercolor="",s.backgroundcolor=""));var d=Pl(n.getParam("table_class_list",[],"array"));0=n.left&&e<=n.right&&t>=n.top&&t<=n.bottom}),Bf=function(t,r,n,e,o){var u=function(n){var e=t.dom.createRange();return e.setStart(r.dom,n),e.collapse(!0),e},i=_t(r).length,c=function(n,e,t,r,o){if(0===o)return 0;if(e===r)return o-1;for(var u=r,i=1;ir.left&&o.leftt.right;var e,t})});var t},Ks={point:function(n){return n.bottom},adjuster:function(n,e,t,r,o){var u=Ws(o,5);return Math.abs(t.bottom-r.bottom)<1||t.top>o.bottom?$s.retry(u):t.top===o.bottom?$s.retry(Ws(o,1)):Gs(n,e,o)?$s.retry(Ls(u,5,0)):$s.none()},move:Ws,gather:Bs},Xs=function(t,r,o,u,i){return 0===i?x.some(u):(a=t,l=u.left,f=r.point(u),a.elementFromPoint(l,f).filter(function(n){return"table"===Yn(n)}).isSome()?(e=u,c=i-1,Xs(t,n=r,o,n.move(e,5),c)):t.situsFromPoint(u.left,r.point(u)).bind(function(n){return n.start.fold(x.none,function(e){return Us(t,e).bind(function(n){return r.adjuster(t,e,n,o,u).fold(x.none,function(n){return Xs(t,r,o,n,i-1)})}).orThunk(function(){return x.some(u)})},x.none)}));var n,e,c,a,l,f},Ys=function(e,t,n){var r,o,u,i=e.move(n,5),c=Xs(t,e,n,i,100).getOr(i);return o=c,u=t,((r=e).point(o)>u.getInnerHeight()?x.some(r.point(o)-u.getInnerHeight()):r.point(o)<0?x.some(-r.point(o)):x.none()).fold(function(){return t.situsFromPoint(c.left,e.point(c))},function(n){return t.scrollBy(0,n),t.situsFromPoint(c.left,e.point(c)-n)})},Js={tryUp:w(Ys,{point:function(n){return n.top},adjuster:function(n,e,t,r,o){var u=Fs(o,5);return Math.abs(t.top-r.top)<1||t.bottomdiv{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:500000}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:500000}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:1000000}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:2000000}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:110000000}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:100000}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:200000}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:110000000}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:100000}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:300000}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:110000000}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:100000}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:100000}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{z-index:120000000}.tox-shadowhost.tox-fullscreen{z-index:120000000}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:120100000}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:115000000}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:140000000}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:100000000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} +.tox{box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #000;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:130000000}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:500000}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:500000}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:1000000}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:2000000}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:110000000}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:100000}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:200000}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:110000000}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:100000}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:300000}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:110000000}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:100000}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:100000}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-aplaytpance:none;-moz-aplaytpance:none;aplaytpance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-aplaytpance:none;-moz-aplaytpance:none;aplaytpance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-aplaytpance:textarea;-moz-aplaytpance:textarea;aplaytpance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{z-index:120000000}.tox-shadowhost.tox-fullscreen{z-index:120000000}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:120100000}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:115000000}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:140000000}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:100000000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} /*# sourceMappingURL=skin.min.css.map */ diff --git a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.min.css.map b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.min.css.map index 23af48585d5c711bc8a0da1fca53ececc30d8421..c96f5818eff3f99d0313aa715399b137b16ed3a3 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.min.css.map +++ b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["ui/dark/skin.css"],"names":[],"mappings":";;;;;;AAMA,KACE,WAAY,YACZ,MAAO,QACP,OAAQ,KACR,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,OACb,4BAA6B,YAC7B,gBAAiB,KACjB,YAAa,KACb,eAAgB,KAChB,eAAgB,QAChB,YAAa,OAEf,yBACE,WAAY,QACZ,MAAO,QACP,OAAQ,QACR,UAAW,QACX,YAAa,QACb,UAAW,QACX,WAAY,QACZ,YAAa,QACb,YAAa,QACb,4BAA6B,QAC7B,WAAY,QACZ,gBAAiB,QACjB,YAAa,QACb,eAAgB,QAChB,eAAgB,QAChB,YAAa,QAEf,yBAEE,WAAY,IACZ,OAAQ,EACR,MAAO,KACP,OAAQ,KACR,OAAQ,EACR,UAAW,KACX,QAAS,EACT,QAAS,EACT,SAAU,OACV,MAAO,KAET,oBACE,UAAW,IACX,WAAY,KAEd,cACE,UAAW,IACX,WAAY,MAEd,aACE,OAAQ,IAAI,MAAM,KAClB,cAAe,EACf,WAAY,KACZ,WAAY,WACZ,QAAS,KACT,eAAgB,OAChB,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,SAAU,OACV,SAAU,SACV,WAAY,kBAEd,oBACE,OAAQ,KACR,WAAY,KAEd,uCACE,OAAQ,IAAI,MAAM,KAClB,cAAe,EACf,WAAY,KAEd,iBACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,QAAS,KAEX,oBACA,wBACE,QAAS,EAEX,yBACE,OAAQ,EAEV,kCACE,YAAa,OACb,QAAS,KACT,cAAe,IAEjB,uCACE,YAAa,QACb,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,KACT,gBAAiB,cAEnB,2CACE,eAAgB,IAElB,+CACE,YAAa,OACb,QAAS,KACT,cAAe,IAEjB,oEACE,aAAc,KACd,aAAc,MAEhB,kCACE,WAAY,KAEd,4FACE,iBAAkB,oBAClB,aAAc,QACd,MAAO,KAET,wGACE,aAAc,QAEhB,8EACE,MAAO,KAET,wEACE,KAAM,KAER,sEACE,MAAO,KAET,4FACE,iBAAkB,mBAClB,aAAc,mBACd,MAAO,KAET,wGACE,aAAc,mBAEhB,8EACE,MAAO,KAET,wEACE,KAAM,KAER,sEACE,MAAO,KAET,6FACE,iBAAkB,iBAClB,aAAc,iBACd,MAAO,KAET,yGACE,aAAc,iBAEhB,+EACE,MAAO,KAET,yEACE,KAAM,KAER,uEACE,MAAO,KAET,+FACE,iBAAkB,oBAClB,aAAc,oBACd,MAAO,KAET,2GACE,aAAc,oBAEhB,iFACE,MAAO,KAET,2EACE,KAAM,KAER,yEACE,MAAO,KAET,+DACA,qFACE,WAAY,EAEd,uFACE,YAAa,IAEf,8FACE,YAAa,KAEf,gFACE,QAAS,IAAI,IAAI,IAAI,IAEvB,4FACE,kBAAmB,IACnB,aAAc,IAEhB,iFACE,aAAc,IAEhB,wFACE,aAAc,KAEhB,0EACE,QAAS,IAAI,IAAI,IAAI,IAEvB,sFACE,mBAAoB,IACpB,cAAe,IAEjB,oBACE,QAAS,KACT,KAAM,EAAE,EAAE,KAEZ,cACE,QAAS,KACT,KAAM,EAAE,EAAE,KAEZ,iBACE,iBAAkB,QAClB,iBAAkB,KAClB,oBAAqB,EAAE,EACvB,kBAAmB,OACnB,aAAc,QACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,KACP,OAAQ,QACR,QAAS,aACT,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,YAAa,KACb,OAAQ,EACR,QAAS,EACT,QAAS,IAAI,KACb,WAAY,OACZ,gBAAiB,KACjB,eAAgB,WAChB,YAAa,OAEf,2BACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,qBACP,OAAQ,YAEV,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,uCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,4BACE,iBAAkB,QAClB,iBAAkB,KAClB,oBAAqB,EAAE,EACvB,kBAAmB,OACnB,aAAc,QACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,MAAO,KACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,QAAS,EACT,QAAS,IAAI,KACb,gBAAiB,KACjB,eAAgB,WAElB,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,qBAET,iDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,iDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,kDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,uBACA,kCACA,wDACE,QAAS,IAEX,qCACA,gDACA,sEACE,QAAS,MACT,KAAM,aAER,sBACE,WAAY,EACZ,OAAQ,KACR,WAAY,WACZ,OAAQ,QACR,QAAS,aACT,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,IACb,YAAa,IACb,OAAQ,EACR,QAAS,EACT,YAAa,OAEf,0BACE,UAAW,KAEb,wBACE,iBAAkB,YAClB,aAAc,YACd,WAAY,MACZ,MAAO,KAET,kCACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,qBAET,6CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,6CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,8CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,sCACE,KAAM,aAER,8DACE,MAAO,KAET,mBACE,YAAa,OACb,cAAe,IACf,OAAQ,QACR,QAAS,KACT,OAAQ,KACR,UAAW,KAEb,0BAEE,OAAQ,IACR,SAAU,OACV,SAAU,SACV,IAAK,KACL,MAAO,IAET,0BACE,YAAa,OACb,cAAe,IACf,WAAY,EAAE,EAAE,EAAE,IAAI,YACtB,WAAY,YACZ,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,QAAS,gBACT,MAAO,KAET,4DACE,QAAS,MACT,KAAM,qBAER,gEACE,QAAS,KACT,KAAM,QAER,0DACE,QAAS,KACT,KAAM,QAER,6BACE,MAAO,qBACP,OAAQ,YAEV,kFACE,KAAM,qBAER,oFACE,KAAM,qBAER,wFACE,KAAM,qBAER,8FACE,QAAS,KAEX,4FACE,QAAS,MAEX,oGACE,QAAS,KAEX,wGACE,QAAS,MAEX,0DACE,cAAe,IACf,WAAY,MAAM,EAAE,EAAE,EAAE,IAAI,QAC5B,QAAS,gBAEX,yCACE,YAAa,IAEf,yCACE,KAAM,SAER,2CACE,YAAa,IAEf,mCACE,aAAc,IAEhB,mCACE,MAAO,SAET,qCACE,aAAc,IAKhB,qDACE,QAAS,KACT,QAAS,EAEX,kDACE,QAAS,KACT,UAAW,KACX,WAAY,MACZ,WAAY,OACZ,WAAY,KACZ,QAAS,EAEX,kDACE,oBAAqB,EACrB,aAAc,QACd,kBAAmB,EACnB,mBAAoB,EACpB,aAAc,MACd,iBAAkB,IAClB,QAAS,IAAI,EAEf,8DACE,iBAAkB,EAEpB,oCACE,iBAAkB,KAClB,MAAO,KACP,OAAQ,QACR,UAAW,KACX,WAAY,OACZ,YAAa,IACb,cAAe,IACf,WAAY,KACZ,QAAS,IAAI,IACb,eAAgB,KAChB,sBAAuB,KACvB,oBAAqB,KAClB,iBAAkB,KACjB,gBAAiB,KACb,YAAa,KAEvB,2BACE,YAAa,OACb,MAAO,KACP,OAAQ,QACR,QAAS,KACT,sBAAuB,KACvB,oBAAqB,KAClB,iBAAkB,KACjB,gBAAiB,KACb,YAAa,KAEvB,iDACE,QAAS,IAAI,IAEf,oDACE,cAAe,IACf,QAAS,IAEX,iDACE,cAAe,IACf,QAAS,IAEX,0DACE,iBAAkB,QAClB,MAAO,KAET,yDACE,iBAAkB,QAEpB,6DACE,iBAAkB,QAClB,MAAO,KAET,4DACE,iBAAkB,QAEpB,0DACE,iBAAkB,QAClB,MAAO,KAET,oGACE,iBAAkB,QAClB,MAAO,KAET,oGACE,MAAO,KAET,uGACE,MAAO,KAET,2CACE,iBAAkB,YAClB,MAAO,qBACP,OAAQ,YAGV,qCADA,gCAEE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,MAAO,KAGT,yCADA,oCAEE,KAAM,aAER,4DACE,OAAQ,KACR,MAAO,KAET,iCACE,MAAO,aACP,QAAS,aACT,KAAM,EACN,wBAAyB,KACzB,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,KACb,eAAgB,KAChB,WAAY,UAEd,qCACE,MAAO,qBACP,QAAS,aACT,UAAW,KACX,OAAQ,KACR,YAAa,KACb,eAAgB,KAElB,iCACE,YAAa,OACb,QAAS,KACT,WAAY,KAEd,wCACE,QAAS,GACT,UAAW,EACX,WAAY,QAEd,qCACE,KAAM,KAER,yHACE,QAAS,KAEX,qJACE,QAAS,KAEX,iCACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,QAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBACtB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,OACX,cAAe,EACf,WAAY,KACZ,QAAS,EAEX,wDACE,YAAa,OACb,QAAS,KACT,UAAW,OACX,OAAQ,EACR,QAAS,EAAE,IAEb,uDACE,OAAQ,KACR,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EAAE,IAEb,6DACE,YAAa,OAEf,6DACE,YAAa,IAEf,qCACE,QAAS,KAEX,0CACE,YAAa,OACb,KAAM,EAAE,EAAE,KACV,eAAgB,IAElB,qFACE,aAAc,KAEhB,sFACE,gBAAiB,SACjB,YAAa,KAEf,qFACE,YAAa,WACb,cAAe,KAEjB,wFACE,YAAa,OAEf,wFACE,YAAa,SACb,WAAY,KAEd,6CACE,mBAAoB,OAChB,WAAY,OAChB,KAAM,EAAE,EAAE,KACV,eAAgB,OAElB,wFACE,YAAa,WAEf,yFACE,YAAa,SAEf,wFACE,WAAY,WAEd,2FACE,mBAAoB,OAChB,WAAY,OAElB,2FACE,WAAY,SAEd,0FACE,aAAc,IAAI,MAAM,KAE1B,mFACE,YAAa,IAEf,wGACE,YAAa,IAEf,oDACE,YAAa,KACb,WAAY,MAEd,gEACE,YAAa,KAEf,oFACE,YAAa,IAAI,MAAM,KAEzB,6EACE,aAAc,IAEhB,kGACE,aAAc,IAKhB,4EACE,UAAW,gBAEb,8CACE,aAAc,KACd,WAAY,KAEd,0DACE,aAAc,KACd,UAAW,gBAEb,sEACE,aAAc,IAEhB,iCACE,QAAS,KACT,eAAgB,IAChB,OAAQ,MACR,OAAQ,EAEV,qBACE,WAAY,WACZ,QAAS,KACT,OAAQ,KAEV,8BACE,OAAQ,KAEV,qBACA,8BACE,MAAO,MAET,2BACE,WAAY,IACZ,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,YACZ,OAAQ,KACR,SAAU,SACV,MAAO,KAET,iCACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,OAAQ,KACR,SAAU,SACV,MAAO,KAET,qBACE,WAAY,WACZ,OAAQ,KACR,MAAO,KAET,8BACE,WAAY,4GACZ,OAAQ,KACR,MAAO,KAET,qBACA,8BACE,MAAO,KAET,2BACE,WAAY,KACZ,OAAQ,IAAI,MAAM,KAClB,WAAY,YACZ,OAAQ,IACR,MAAO,KAET,mBACE,QAAS,KACT,eAAgB,OAChB,gBAAiB,cAEnB,uBACE,YAAa,OACb,QAAS,KACT,gBAAiB,cACjB,cAAe,IACf,MAAO,QAET,yBACE,MAAO,IAET,qCAEE,OAAQ,IAAI,MAAM,cAEpB,qCACE,OAAQ,IAAI,MAAM,KAClB,UAAW,EACX,cAAe,EAEjB,oCACE,aAAc,KAEhB,oCACE,aAAc,KAEhB,0CACE,YAAa,KAEf,wCACE,aAAc,KAEhB,8BACE,YAAa,KAEf,8BACE,YAAa,KAEf,oCACE,aAAc,KAEhB,kCACE,YAAa,KAEf,gCAEA,0CADA,yCAEE,OAAQ,IAAI,EAAE,IAAI,IAEpB,qEACE,OAAQ,EACR,OAAQ,KAAK,EAEf,wBACE,QAAS,KAEX,iBACE,OAAQ,KACR,WAAY,UAAU,IAAK,CAAE,WAAW,KACxC,MAAO,KAGT,uBADA,uBAEE,WAAY,EAAE,EAAE,EAAE,IAAI,qBAAyB,MAC/C,UAAW,UAEb,yBACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,kCACE,OAAQ,QAEV,+BACE,YAAa,OACb,iBAAkB,YAClB,OAAQ,EACR,OAAQ,QACR,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,QAAS,EACT,QAAS,EACT,MAAO,KAET,mCACE,OAAQ,KACR,MAAO,KAET,qCACE,WAAY,QAEd,8CACE,YAAa,KAEf,wCACE,aAAc,KAEhB,yBACE,WAAY,QACZ,SAAU,SAEZ,4CACE,WAAY,IAEd,kBACE,WAAY,QACZ,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,EAAE,kBACxB,QAAS,IAAI,IAAI,KAAK,IACtB,SAAU,SAEZ,0BACE,YAAa,OACb,MAAO,KACP,QAAS,KACT,gBAAiB,cAEnB,wBACE,MAAO,qBACP,UAAW,KAEb,wBACE,MAAO,KACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,WAAY,IACZ,SAAU,SACV,eAAgB,QAElB,iCACE,OAAQ,KACR,YAAa,OACb,MAAO,KAET,4BACE,YAAa,IAEf,8BACE,MAAO,qBACP,UAAW,KACX,WAAY,OAEd,0BACE,OAAQ,EAEV,iCACE,YAAa,KACb,WAAY,OAEd,yCACE,WAAY,QACZ,OAAQ,EACR,QAAS,GACT,QAAS,KACT,KAAM,EACN,QAAS,GACT,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,yBACE,QAAS,KACT,YAAa,EACb,UAAW,KACX,gBAAiB,SACjB,WAAY,IAEd,sCACE,cAAe,IACf,MAAO,KAET,wBACE,QAAS,KACT,UAAW,KACX,gBAAiB,SACjB,WAAY,KAEd,mCACE,WAAY,0CACZ,OAAQ,EACR,QAAS,GACT,QAAS,MACT,OAAQ,IACR,WAAY,MACZ,SAAU,SACV,MAAO,KAET,2BACE,WAAY,QACZ,OAAQ,EACR,QAAS,KACT,eAAgB,OAChB,UAAW,EACX,KAAM,EACN,QAAS,GACT,SAAU,SACV,MAAO,EACP,WAAY,OACZ,IAAK,EACL,QAAS,EAEX,gCACE,YAAa,OACb,MAAO,KACP,QAAS,KACT,eAAgB,OAChB,SAAU,SAEZ,oCACE,eAAgB,KAElB,+BACE,OAAQ,EACR,eAAgB,OAChB,UAAW,KACX,KAAM,EACN,QAAS,IACT,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,GAEX,iCACE,iBAAkB,QAClB,WAAY,EAAE,EAAE,IAAI,IAAI,QACxB,MAAO,KACP,WAAY,OAEd,kDACE,UAAW,KAEb,gCACE,YAAa,OACb,iBAAkB,QAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,GAEX,0BACE,QAAS,KACT,eAAgB,OAChB,YAAa,EACb,SAAU,KAEZ,wBACE,OAAQ,IAEV,uCACE,YAAa,IAEf,4DACA,mDACA,oDACE,YAAa,IAEf,iCACE,aAAc,IAEhB,sDACA,6CACA,8CACE,aAAc,IAEhB,eACE,YAAa,OACb,QAAS,KAEX,2BACE,KAAM,qBAER,qBACE,MAAO,qBACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,UAElB,0CACE,aAAc,IAEhB,sDACE,YAAa,IAEf,oCACE,YAAa,IAEf,gDACE,aAAc,IAEhB,sBACE,YAAa,OACb,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,MACV,MAAO,EACP,IAAK,EACL,QAAS,KAEX,gCACE,iBAAkB,mBAClB,OAAQ,EACR,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,wCACE,iBAAkB,QAEpB,iBACE,iBAAkB,QAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,EAAE,KAAK,KAAK,MAAM,kBAAsB,CAAE,EAAE,EAAE,KAAK,IAAI,mBACnE,QAAS,KACT,eAAgB,OAChB,WAAY,KACZ,UAAW,MACX,SAAU,OACV,SAAU,SACV,MAAO,KACP,QAAS,EAEX,yCACE,8CACE,WAAY,WACZ,OAAQ,IAAI,KACZ,MAAO,oBAGX,wBACE,QAAS,KAEX,yBACE,YAAa,OACb,iBAAkB,QAClB,cAAe,KACf,MAAO,KACP,QAAS,KACT,UAAW,KACX,gBAAiB,cACjB,QAAS,IAAI,KAAK,EAAE,KACpB,SAAU,SAEZ,qCACE,QAAS,EAEX,6BACE,OAAQ,KACR,OAAQ,KACR,KAAM,EACN,SAAU,SACV,IAAK,EACL,MAAO,KAET,oCACE,OAAQ,SAEV,0BACE,YAAa,KAEf,wBACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,OAAQ,EACR,eAAgB,KAElB,uBACE,MAAO,KACP,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,UAAW,EACX,WAAY,KACZ,eAAgB,KAElB,yCACE,oDACE,eAAgB,QAGpB,2BACE,YAAa,WACb,QAAS,KACT,eAAgB,OAChB,QAAS,KAAK,KAEhB,yCACE,wDACE,eAAgB,IAChB,2BAA4B,MAC5B,WAAY,KACZ,eAAgB,GAGpB,gCACE,cAAe,IAAI,MAAM,YACzB,MAAO,qBACP,QAAS,aACT,UAAW,KACX,YAAa,IACb,cAAe,IACf,gBAAiB,KACjB,YAAa,OAEf,sCACE,iBAAkB,oBAEpB,wCACE,cAAe,IAAI,MAAM,QACzB,MAAO,QAET,+BACE,WAAY,WACZ,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KACzB,WAAY,MACZ,SAAU,KACV,2BAA4B,MAC5B,QAAS,KAAK,KAEhB,iCACE,cAAe,EACf,WAAY,KAEd,4CACE,WAAY,EAEd,2CACE,cAAe,EAEjB,2CACE,cAAe,EACf,WAAY,EAEd,iCACE,MAAO,QACP,OAAQ,QACR,gBAAiB,KAGnB,uCADA,uCAEE,MAAO,QACP,gBAAiB,KAEnB,wCACE,MAAO,QACP,gBAAiB,KAEnB,mCACE,KAAM,KAER,kCACE,QAAS,MACT,gBAAiB,KACjB,cAAe,KACf,mBAAoB,EACZ,kBAAmB,EAC3B,qBAAsB,EACd,oBAAqB,EAC7B,sBAAuB,OACf,qBAAsB,OAEhC,mDACE,MAAO,KACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,cAAe,KACf,WAAY,KACZ,eAAgB,KAElB,mDACE,MAAO,KACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,cAAe,KACf,WAAY,KACZ,eAAgB,KAElB,kDACE,cAAe,KAEjB,+DACA,+DACA,8DACE,WAAY,EAEd,8DACA,8DACA,6DACE,cAAe,EAEjB,8DACA,8DACA,6DACE,cAAe,EACf,WAAY,EAEd,2BACE,OAAQ,MACR,UAAW,OAEb,2BACE,UAAW,MAEb,qDACE,SAAU,KAEZ,yCACE,WAAY,OAEd,yBACE,YAAa,OACb,iBAAkB,QAClB,WAAY,IAAI,MAAM,KACtB,QAAS,KACT,gBAAiB,cACjB,QAAS,IAAI,KAGf,6BADA,+BAEE,QAAS,KAEX,+BACE,YAAa,OACb,iBAAkB,mBAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,wBACE,gBAAiB,SACjB,MAAO,KAET,iCACE,YAAa,IACb,eAAgB,IAElB,iCACE,cAAe,IAAI,MAAM,KAE3B,4CACE,cAAe,KAEjB,2BACE,eAAgB,IAChB,YAAa,IAEf,yBACE,SAAU,SACV,MAAO,KACP,QAAS,KAEX,8BACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,0CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,wDACE,KAAM,EACN,wBAAyB,KACzB,OAAQ,KAEV,8BACE,QAAS,EACT,WAAY,OAEd,6BACE,QAAS,EACT,WAAY,QAEd,iCACE,WAAY,WAAW,GAAG,OAAO,GAAI,CAAE,QAAQ,IAAK,KAEtD,wDACE,iBAAkB,GAKpB,sCACE,SAAU,iBAEZ,yCACE,uEACE,aAAc,GAGlB,yCACE,8FACE,YAAa,KAIjB,kEADA,oEAEE,YAAa,IAEf,gCACE,WAAY,MAEd,yCACE,iEACE,YAAa,GAGjB,yCACE,wFACE,aAAc,KAIlB,4DADA,8DAEE,aAAc,IAEhB,gCACE,SAAU,OAEZ,6BACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,mBACE,YAAa,OACb,WAAY,KACZ,OAAQ,IAAI,OAAO,KACnB,WAAY,WACZ,QAAS,KACT,eAAgB,OAChB,UAAW,EACX,gBAAiB,OACjB,WAAY,MACZ,QAAS,KAEX,qBACE,MAAO,qBACP,OAAQ,EAAE,EAAE,KAAK,EAEnB,oBACE,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,SAAU,OACV,SAAU,SAEZ,4BACE,iBAAkB,KAClB,OAAQ,EACR,WAAY,WACZ,KAAM,EACN,wBAAyB,KACzB,OAAQ,KACR,SAAU,SACV,MAAO,KAET,0BACE,OAAQ,IAAI,OAAO,KAErB,2BACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,eAAgB,OAChB,SAAU,OAEZ,wBACE,QAAS,EAEX,iDACE,WAAY,KACZ,WAAY,WAAW,IAEzB,oDACA,2CACE,cAAe,KAEjB,uDACE,WAAY,EAAE,IAAI,IAAI,KAAK,gBAE7B,yBACE,QAAS,EACT,WAAY,OAEd,wBACE,QAAS,EACT,WAAY,QAEd,4BACE,WAAY,WAAW,GAAG,OAAO,IAAK,CAAE,QAAQ,KAAM,KAExD,mDACE,iBAAkB,GAEpB,uBACE,KAAM,EACN,SAAU,SAEZ,qGACA,qGACA,iGACE,QAAS,KAEX,2BACE,QAAS,MAEX,yCACE,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,gDACE,KAAM,KAER,gDACE,KAAM,OAER,8CACE,KAAM,MAER,qEACA,qEACA,mEACE,cAAe,KAEjB,wDACE,MAAO,IAET,+DACA,+DACA,6DACE,aAAc,KAEhB,kDACE,KAAM,IAER,wBACE,UAAW,KAEb,kCACE,UAAW,KAEb,qDACE,YAAa,IAEf,sBACE,QAAS,KACT,SAAU,SACV,QAAS,EAEX,qCACE,QAAS,GAEX,2BACE,aAAc,kBACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,OAAQ,KACR,SAAU,SACV,IAAK,IACL,MAAO,KAGT,2DADA,2DAEE,aAAc,QACd,OAAQ,QAEV,mCACE,iBAAkB,gEAAsE,CAAE,iEAAuE,CAAE,gEAAsE,CAAE,kEAC3O,oBAAqB,EAAE,CAAC,CAAE,EAAE,GAAG,CAAE,IAAI,IAAI,CAAE,KAAK,EAChD,gBAAiB,KAAK,KACtB,OAAQ,IAAI,MAAM,QAClB,cAAe,IACf,WAAY,WACZ,QAAS,GACT,OAAQ,KACR,KAAM,KACN,SAAU,SACV,IAAK,KACL,MAAO,KACP,QAAS,GAEX,+CACE,OAAQ,YAKV,oDACE,aAAc,KAEhB,0CACE,KAAM,IAKR,8CACE,cAAe,KAEjB,oCACE,MAAO,IAET,gBACA,wBACE,MAAO,qBACP,QAAS,MACT,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,QAAS,EAAE,IAAI,EAAE,EACjB,eAAgB,KAChB,YAAa,OAEf,wBACE,QAAS,EAAE,IAEb,yBACE,QAAS,EAAE,EAAE,EAAE,IAEjB,eACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,sBACE,WAAY,WACZ,cAAe,IAEjB,+BACE,KAAM,EAER,6BACE,MAAO,KAET,kCACE,QAAS,KAEX,qBACE,QAAS,KACT,eAAgB,IAChB,UAAW,KACX,gBAAiB,cAEnB,4CACE,MAAO,sBAET,4CACE,MAAO,2BAET,4CACE,MAAO,sBAET,iCACE,YAAa,OACb,QAAS,KAEX,8BACE,YAAa,OACb,QAAS,KAEX,iCACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,+CACE,KAAM,EACN,wBAAyB,KAE3B,6CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,2DACE,KAAM,EACN,wBAAyB,KACzB,OAAQ,KAEV,mEACE,YAAa,IAEf,6DACE,aAAc,IAEhB,iDACA,qDACE,QAAS,KAIX,4CACA,mBAHA,oBACA,4BAGE,mBAAoB,KACjB,gBAAiB,KACZ,WAAY,KACpB,iBAAkB,QAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,KACP,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,KACb,OAAQ,EACR,WAAY,KACZ,QAAS,EACT,QAAS,IAAI,OACb,OAAQ,KACR,MAAO,KAGT,6BADA,8BAEE,iBAAkB,QAClB,MAAO,sBACP,OAAQ,YAGV,kDACA,yBAFA,0BAGE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,QAAS,EAEX,4BACE,aAAc,EACd,cAAe,IACf,WAAY,IACZ,UAAW,MAEb,oBACE,iBAAkB,YAClB,OAAQ,EACR,aAAc,YACd,WAAY,MACZ,MAAO,QACP,OAAQ,QACR,QAAS,MACT,OAAQ,EACR,QAAS,EAEX,wBACE,QAAS,MACT,KAAM,KAER,6CACE,YAAa,IAEf,uCACE,aAAc,IAEhB,uBACE,OAAQ,QACR,SAAU,SAEZ,sDACE,iBAAkB,QAClB,MAAO,sBACP,OAAQ,YAEV,gCACE,OAAQ,QACR,KAAM,EACN,OAAQ,EAAE,IAEZ,kCACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KAET,sCACE,KAAM,KAER,4CACE,YAAa,OACb,QAAS,KAEX,0CACE,MAAO,IAET,oCACE,KAAM,IAER,sBACE,OAAQ,QACR,SAAU,SAEZ,6BACE,mBAAoB,KACjB,gBAAiB,KACZ,WAAY,KACpB,iBAAkB,QAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,KACP,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,KACb,OAAQ,EACR,WAAY,KACZ,QAAS,EACT,QAAS,IAAI,OACb,OAAQ,KACR,MAAO,KAET,uCACE,iBAAkB,QAClB,MAAO,sBACP,OAAQ,YAEV,yCACE,QAAS,KAEX,mCACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,QAAS,EAEX,0BACE,eAAgB,KAChB,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,sDACA,sDACE,cAAe,KAEjB,yCACE,MAAO,IAET,gDACA,gDACE,aAAc,KAEhB,mCACE,KAAM,IAER,mBACE,mBAAoB,SACjB,gBAAiB,SACZ,WAAY,SACpB,YAAa,SAEf,gBACE,OAAQ,EACR,OAAQ,KACR,KAAM,EACN,OAAQ,EACR,SAAU,OACV,oBAAqB,KACjB,oBAAqB,KACzB,QAAS,EACT,SAAU,MACV,IAAK,EACL,aAAc,WACd,MAAO,KAET,8DACE,QAAS,KAEX,gCACE,QAAS,KAEX,+BACE,QAAS,KAEX,qCACA,qCACE,QAAS,KAEX,0BACE,WAAY,KACZ,WAAY,IAEd,sBACE,MAAO,KAET,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,6BACE,iBAAkB,KAClB,OAAQ,MACR,SAAU,KACV,SAAU,SACV,MAAO,KAET,6BACA,uDACE,WAAY,IAEd,gCACE,WAAY,wGAEd,2CACE,KAAM,EACN,wBAAyB,KAE3B,yBACE,WAAY,KAEZ,QAAS,GACT,SAAU,SACV,KAAM,EAER,0BACE,OAAQ,IAAI,MAAM,KAClB,OAAQ,KACR,KAAM,EACN,SAAU,SACV,IAAK,EACL,MAAO,KAET,+BACE,OAAQ,EACR,OAAQ,KACR,SAAU,SAEZ,6BACE,aAAc,IAAI,EAAE,EAAE,IACtB,OAAQ,UACR,KAAM,MACN,OAAQ,KAAK,EAAE,EAAE,KACjB,IAAK,MAEP,6BACE,aAAc,IAAI,IAAI,EAAE,EACxB,OAAQ,UACR,KAAM,MACN,OAAQ,KAAK,EAAE,EAAE,MACjB,IAAK,MAEP,6BACE,aAAc,EAAE,EAAE,IAAI,IACtB,OAAQ,UACR,KAAM,MACN,OAAQ,MAAM,IAAI,EAAE,KACpB,IAAK,MAEP,6BACE,aAAc,EAAE,IAAI,IAAI,EACxB,OAAQ,UACR,KAAM,MACN,OAAQ,MAAM,EAAE,EAAE,MAClB,IAAK,MAEP,8EACE,YAAa,IAEf,sEACE,YAAa,KAEf,sEACE,YAAa,KAEf,wEACE,aAAc,IAEhB,gEACE,aAAc,KAEhB,gEACE,aAAc,KAEhB,8BACE,QAAS,KACT,UAAW,KACX,MAAO,MAET,kCACE,aAAc,KACd,aAAc,MACd,aAAc,EAAE,IAAI,IAAI,EACxB,WAAY,WACZ,OAAQ,KACR,MAAO,KAET,2EACE,OAAQ,KAAK,EAEf,iEACE,iBAAkB,oBAClB,aAAc,oBAEhB,qCACE,MAAO,KACP,QAAS,MACT,UAAW,KACX,QAAS,IACT,WAAY,OACZ,MAAO,KAKT,gEACE,aAAc,EAKhB,4DACE,aAAc,EAMhB,eACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,EAAE,kBACxB,QAAS,aACT,SAAU,OACV,eAAgB,IAChB,QAAS,KAEX,mDACE,QAAS,EAEX,sDACE,QAAS,IAEX,mDACE,QAAS,IASX,iCACA,2BARA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,wBAGE,OAAQ,EAEV,kBACE,WAAY,+MAA+M,KAAK,EAAE,IAAI,EAAE,QACxO,iBAAkB,QAClB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,KACX,QAAS,EAAE,IAAI,EAAE,IAEnB,4FACE,WAAY,IAAI,MAAM,KAGxB,eACE,YAAa,OACb,WAAY,IACZ,OAAQ,EACR,cAAe,IACf,WAAY,KACZ,MAAO,KACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,WAAY,OACZ,YAAa,IACb,OAAQ,KACR,gBAAiB,OACjB,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EACT,SAAU,OACV,QAAS,EAAE,IACX,eAAgB,KAChB,MAAO,KAET,yBACE,iBAAkB,YAClB,OAAQ,EACR,WAAY,KACZ,MAAO,qBACP,OAAQ,YAEV,oCACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,uBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,2DACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,6BACE,OAAQ,QACR,YAAa,IACb,OAAQ,EAAE,IAEZ,iDACE,OAAQ,YAEV,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KACP,QAAS,KAEX,uBACE,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,QAAS,SACT,QAAS,KACT,UAAW,KACX,YAAa,IACb,iBAAkB,iBAAkB,KAAK,iBACrC,sBAAuB,iBAAkB,KAAK,iBAClD,WAAY,IACZ,QAAS,EACT,QAAS,IACT,WAAY,UAAU,IAAM,OAAO,CAAE,QAAQ,MAAM,QAErD,yBACE,UAAW,KACX,YAAa,IAEf,yBACE,gBAAiB,UAEnB,2BACE,QAAS,EAEX,gCACE,iBAAkB,QAClB,aAAc,QACd,MAAO,KAET,kCACE,MAAO,KAET,kCACE,MAAO,QAET,oCACE,KAAM,KAER,8BACE,iBAAkB,QAClB,aAAc,QACd,MAAO,KAET,gCACE,MAAO,KAET,gCACE,MAAO,KAET,kCACE,KAAM,KAER,6BACA,gCACE,iBAAkB,QAClB,aAAc,QACd,MAAO,KAET,+BACA,kCACE,MAAO,KAET,+BACA,kCACE,MAAO,KAET,iCACA,oCACE,KAAM,KAER,6BACE,iBAAkB,QAClB,aAAc,QACd,MAAO,KAET,+BACE,MAAO,KAET,+BACE,MAAO,KAET,iCACE,KAAM,KAER,6BACE,mBAAoB,OAChB,WAAY,OAChB,MAAO,KACP,UAAW,KACX,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,WAAY,OACZ,YAAa,OACb,WAAY,UACZ,WAAY,WAEd,+BACE,OAAQ,EAEV,iCACE,WAAY,KAEd,6BACE,mBAAoB,OAChB,WAAY,OAChB,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,IACnB,aAAc,IAEpB,iCACE,QAAS,MAEX,gCACE,mBAAoB,MAChB,WAAY,MAChB,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,IACnB,aAAc,IAEpB,yCACE,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,OACnB,aAAc,OAEpB,cACE,QAAS,aACT,SAAU,SAEZ,wBACE,WAAY,MAAM,IAAK,KAEzB,qCACE,UAAW,OAEb,sBACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBACtB,UAAW,EACX,SAAU,OAEZ,yCACE,OAAQ,IAAI,IAAI,IAAI,IAEtB,mCACE,iBAAkB,YAClB,cAAe,KAGjB,qBADA,sBAEE,aAAc,MACd,QAAS,GACT,QAAS,MACT,OAAQ,EACR,SAAU,SACV,MAAO,EAGT,qCADA,sCAEE,KAAM,IACN,IAAK,KAEP,qCACE,aAAc,QAAQ,YAAY,YAAY,YAC9C,aAAc,IACd,YAAa,KACb,WAAY,KAEd,sCACE,aAAc,KAAQ,YAAY,YAAY,YAC9C,aAAc,IACd,YAAa,KAGf,kCADA,mCAEE,KAAM,IACN,IAAK,EACL,UAAW,kBAEb,kCACE,aAAc,YAAY,YAAY,QAAQ,YAC9C,aAAc,IACd,YAAa,KACb,WAAY,IAEd,mCACE,aAAc,YAAY,YAAY,KAAQ,YAC9C,aAAc,IACd,YAAa,KAGf,mCADA,oCAEE,KAAM,EACN,IAAK,gBACL,UAAW,iBAEb,mCACE,aAAc,YAAY,QAAQ,YAAY,YAC9C,aAAc,IACd,YAAa,MAEf,oCACE,aAAc,YAAY,KAAQ,YAAY,YAC9C,aAAc,KACd,YAAa,MAGf,oCADA,qCAEE,KAAM,KACN,IAAK,gBACL,UAAW,iBAEb,oCACE,aAAc,YAAY,YAAY,YAAY,QAClD,aAAc,IACd,YAAa,KAEf,qCACE,aAAc,YAAY,YAAY,YAAY,KAClD,aAAc,KACd,YAAa,KAGf,yCADA,0CAEE,KAAM,KAGR,0CADA,2CAEE,KAAM,kBAER,uBACE,QAAS,KACT,eAAgB,IAChB,UAAW,EACX,wBAAyB,EACzB,WAAY,EAEd,kBACE,iBAAkB,QAClB,QAAS,KACT,eAAgB,IAChB,gBAAiB,SAEnB,0BACE,QAAS,KACT,SAAU,OAEZ,kCACE,QAAS,KAEX,wBACE,QAAS,KAEX,kCACE,QAAS,EAEX,gCACE,QAAS,EAEX,mCACA,qCACE,WAAY,MAAM,IAAK,IAAI,CAAE,QAAQ,IAAK,KAE5C,mBACE,iBAAkB,QAClB,aAAc,QACd,aAAc,MACd,aAAc,IACd,WAAY,WACZ,QAAS,aACT,OAAQ,KACR,SAAU,SACV,MAAO,KAET,sCACE,OAAQ,KACR,MAAO,KAET,iBACE,YAAa,OACb,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,OAAQ,KACR,gBAAiB,OACjB,SAAU,SAEZ,uBACE,iBAAkB,YAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,OAAQ,KACR,UAAW,MACX,MAAO,KAET,yBACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,QAClB,cAAe,IACf,WAAY,KACZ,OAAQ,KACR,KAAM,IACN,SAAU,SACV,IAAK,IACL,UAAW,iBAAiB,iBAC5B,MAAO,KAET,sBACE,SAAU,KAEZ,kBACE,QAAS,KAEX,sBACE,UAAW,kBAAkB,KAAK,YAAY,GAAG,SAAS,KAC1D,iBAAkB,qBAClB,cAAe,KACf,OAAQ,IACR,MAAO,IAET,mCACE,gBAAiB,MAEnB,mCACE,gBAAiB,MAEnB,6BACE,GAEA,KADA,IAEE,UAAW,SAEb,IACE,UAAW,UAGf,uDACE,YAAa,IAEf,iDACE,aAAc,IAEhB,oBACE,YAAa,OACb,iBAAkB,QAClB,WAAY,IAAI,MAAM,KACtB,MAAO,KACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,YAAa,IACb,OAAQ,KACR,SAAU,OACV,QAAS,EAAE,IACX,SAAU,SACV,eAAgB,UAElB,oCACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,SACjB,SAAU,OAEZ,0BACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,aAAc,KACd,SAAU,OACV,cAAe,SACf,YAAa,OAEf,4BACE,QAAS,OACT,YAAa,OAEf,+BACE,KAAM,EAAE,EAAE,KACV,YAAa,IAEf,sBACA,+BACA,+BACE,MAAO,KACP,gBAAiB,KAKnB,qEAHA,qEAIA,8EAHA,8EAIA,8EAHA,8EAIE,OAAQ,QACR,gBAAiB,UAEnB,mCACE,YAAa,SACb,WAAY,QACZ,OAAQ,YACR,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,SACjB,YAAa,KACb,aAAc,KACd,aAAc,IAEhB,uCACE,QAAS,MACT,KAAM,KAER,2CACE,aAAc,IAEhB,6CACE,YAAa,IAEf,6BACE,eAAgB,YAElB,qCACE,YAAa,IAEf,mBACE,QAAS,KAEX,iCACE,YAAa,OACb,iBAAkB,kBAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EAEP,eACE,YAAa,OACb,WAAY,IACZ,OAAQ,EACR,cAAe,IACf,WAAY,KACZ,MAAO,KACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,WAAY,OACZ,YAAa,IACb,OAAQ,KACR,gBAAiB,OACjB,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EACT,SAAU,OACV,QAAS,EACT,eAAgB,KAChB,MAAO,KAET,mBACE,QAAS,MACT,KAAM,KAER,6BACE,aAAc,IACd,cAAe,IACf,MAAO,QAET,qBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KAEd,qBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,yBACE,KAAM,KAER,sBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,0BACE,KAAM,KAER,yBACA,+BACA,wBACA,8BACE,WAAY,IACZ,OAAQ,EACR,WAAY,KACZ,MAAO,qBACP,OAAQ,YAEV,6BACA,mCACA,4BACA,kCAEE,KAAM,qBAER,wBACA,8BACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAGT,gCADA,0BAEE,UAAW,KAEb,4BACA,kCAEE,KAAM,KAER,8CACE,MAAO,KAET,kDACE,KAAM,KAER,wBACE,UAAW,KAEb,mBACE,OAAQ,KACR,MAAO,KAET,mBACE,eAAgB,OAChB,OAAQ,KACR,MAAO,KAET,uBACE,mBAAoB,QAChB,WAAY,QAChB,OAAQ,MACR,MAAO,KAET,wBACE,QAAS,EAAE,IACX,MAAO,MAET,uBACE,QAAS,MACT,UAAW,KACX,YAAa,IACb,eAAgB,QAChB,cAAe,IACf,YAAa,OAEf,uBACE,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EAAE,IACX,MAAO,KAET,6BACE,OAAQ,QACR,YAAa,IACb,OAAQ,EAAE,IAEZ,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KAET,mCACE,KAAM,qBAER,gDACE,SAAU,OACV,cAAe,SACf,YAAa,OACb,MAAO,IAET,uBACE,OAAQ,EACR,cAAe,IACf,WAAY,WACZ,QAAS,KACT,OAAQ,IAAI,EAAE,IAAI,EAClB,SAAU,OAEZ,6BACE,WAAY,EAAE,EAAE,EAAE,IAAI,QAAQ,MAEhC,6BACE,WAAY,QACZ,WAAY,KACZ,MAAO,KAET,yBACE,cAAe,EAEjB,gCACE,MAAO,KAET,oCACE,KAAM,qBAER,iCACE,OAAQ,EAEV,gEACE,MAAO,KAET,mDACE,MAAO,KAKT,0DADA,0DADA,gDADA,gDAIE,WAAY,IACZ,WAAY,KACZ,MAAO,qBAET,2BACE,iBAAkB,QAEpB,kBAEA,4BADA,2BAEE,WAAY,+MAA+M,KAAK,EAAE,IAAI,EAAE,QACxO,iBAAkB,QAClB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,KACX,QAAS,EAAE,EAEb,0DACE,OAAQ,EACR,QAAS,EACT,eAAgB,EAChB,YAAa,EACb,WAAY,OAEd,qCACE,WAAY,OAAO,IAAK,IAAI,CAAE,QAAQ,IAAK,OAAO,IAEpD,uCACE,WAAY,QAAQ,IAAK,IAAI,CAAE,OAAO,IAAK,OAAO,GAAI,CAAE,WAAW,GAAG,OAAO,IAE/E,+BACA,8DACE,WAAY,IAAI,MAAM,KACtB,WAAY,KAEd,6BACE,UAAW,OACX,WAAY,KAEd,2BACE,aAAc,EAEhB,8BACE,iBAAkB,KAGpB,mIADA,oGAEE,WAAY,IAAI,MAAM,KAExB,4CACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBAExB,sCACE,UAAW,gBAEb,yBACE,YAAa,OACb,QAAS,KACT,UAAW,KACX,OAAQ,EAAE,EACV,QAAS,EAAE,IAAI,EAAE,IAEnB,qCACE,YAAa,KAEf,iDACE,YAAa,EACb,UAAW,OAEb,2DACE,aAAc,IAAI,MAAM,KAE1B,qDACE,YAAa,IAAI,MAAM,KAEzB,kBACE,QAAS,aACT,QAAS,IACT,SAAU,SAEZ,wBACE,iBAAkB,QAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,kBACtB,MAAO,sBACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,QAAS,IAAI,IACb,eAAgB,KAElB,yBACE,SAAU,SAEZ,4CACE,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,WAAY,IAAI,MAAM,QACtB,OAAQ,EACR,KAAM,IACN,SAAU,SACV,UAAW,iBAEb,0CACE,cAAe,IAAI,MAAM,QACzB,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,KAAM,IACN,SAAU,SACV,IAAK,EACL,UAAW,iBAEb,6CACE,cAAe,IAAI,MAAM,YACzB,YAAa,IAAI,MAAM,QACvB,WAAY,IAAI,MAAM,YACtB,SAAU,SACV,MAAO,EACP,IAAK,IACL,UAAW,iBAEb,4CACE,cAAe,IAAI,MAAM,YACzB,aAAc,IAAI,MAAM,QACxB,WAAY,IAAI,MAAM,YACtB,KAAM,EACN,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,eACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,IACT,MAAO,KAET,4BACE,WAAY,EAEd,2BACE,cAAe,EAEjB,2BACE,OAAQ,EAEV,wBACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,KACT,KAAM,EACN,SAAU,SAMZ,iCACE,iBAAkB,eAClB,QAAS,GACT,OAAQ,KACR,SAAU,SACV,MAAO,KACP,QAAS,KAEX,cACE,OAAQ,QAEV,6BACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,+CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,iCACE,OAAQ,KAEV,+BACE,OAAQ","file":"skin.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n.tox {\n box-sizing: content-box;\n color: #2A3746;\n cursor: auto;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: normal;\n -webkit-tap-highlight-color: transparent;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n vertical-align: initial;\n white-space: normal;\n}\n.tox *:not(svg):not(rect) {\n box-sizing: inherit;\n color: inherit;\n cursor: inherit;\n direction: inherit;\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-tap-highlight-color: inherit;\n text-align: inherit;\n text-decoration: inherit;\n text-shadow: inherit;\n text-transform: inherit;\n vertical-align: inherit;\n white-space: inherit;\n}\n.tox *:not(svg):not(rect) {\n /* stylelint-disable-line no-duplicate-selectors */\n background: transparent;\n border: 0;\n float: none;\n height: auto;\n margin: 0;\n max-width: none;\n outline: 0;\n padding: 0;\n position: static;\n width: auto;\n}\n.tox:not([dir=rtl]) {\n direction: ltr;\n text-align: left;\n}\n.tox[dir=rtl] {\n direction: rtl;\n text-align: right;\n}\n.tox-tinymce {\n border: 1px solid #000000;\n border-radius: 0;\n box-shadow: none;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n overflow: hidden;\n position: relative;\n visibility: inherit !important;\n}\n.tox-tinymce-inline {\n border: none;\n box-shadow: none;\n}\n.tox-tinymce-inline .tox-editor-header {\n border: 1px solid #000000;\n border-radius: 0;\n box-shadow: none;\n}\n.tox-tinymce-aux {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n z-index: 1300;\n}\n.tox-tinymce *:focus,\n.tox-tinymce-aux *:focus {\n outline: none;\n}\nbutton::-moz-focus-inner {\n border: 0;\n}\n.tox .accessibility-issue__header {\n align-items: center;\n display: flex;\n margin-bottom: 4px;\n}\n.tox .accessibility-issue__description {\n align-items: stretch;\n border: 1px solid #000000;\n border-radius: 3px;\n display: flex;\n justify-content: space-between;\n}\n.tox .accessibility-issue__description > div {\n padding-bottom: 4px;\n}\n.tox .accessibility-issue__description > div > div {\n align-items: center;\n display: flex;\n margin-bottom: 4px;\n}\n.tox .accessibility-issue__description > *:last-child:not(:only-child) {\n border-color: #000000;\n border-style: solid;\n}\n.tox .accessibility-issue__repair {\n margin-top: 16px;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description {\n background-color: rgba(32, 122, 183, 0.5);\n border-color: #207ab7;\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child {\n border-color: #207ab7;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description {\n background-color: rgba(255, 165, 0, 0.5);\n border-color: rgba(255, 165, 0, 0.8);\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child {\n border-color: rgba(255, 165, 0, 0.8);\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description {\n background-color: rgba(204, 0, 0, 0.5);\n border-color: rgba(204, 0, 0, 0.8);\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child {\n border-color: rgba(204, 0, 0, 0.8);\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description {\n background-color: rgba(120, 171, 70, 0.5);\n border-color: rgba(120, 171, 70, 0.8);\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child {\n border-color: rgba(120, 171, 70, 0.8);\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue__header h1,\n.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {\n margin-top: 0;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {\n margin-left: auto;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description {\n padding: 4px 4px 4px 8px;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child {\n border-left-width: 1px;\n padding-left: 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {\n margin-right: auto;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description {\n padding: 4px 8px 4px 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child {\n border-right-width: 1px;\n padding-right: 4px;\n}\n.tox .tox-anchorbar {\n display: flex;\n flex: 0 0 auto;\n}\n.tox .tox-bar {\n display: flex;\n flex: 0 0 auto;\n}\n.tox .tox-button {\n background-color: #207ab7;\n background-image: none;\n background-position: 0 0;\n background-repeat: repeat;\n border-color: #207ab7;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #fff;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n line-height: 24px;\n margin: 0;\n outline: none;\n padding: 4px 16px;\n text-align: center;\n text-decoration: none;\n text-transform: capitalize;\n white-space: nowrap;\n}\n.tox .tox-button[disabled] {\n background-color: #207ab7;\n background-image: none;\n border-color: #207ab7;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-button:focus:not(:disabled) {\n background-color: #1c6ca1;\n background-image: none;\n border-color: #1c6ca1;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button:hover:not(:disabled) {\n background-color: #1c6ca1;\n background-image: none;\n border-color: #1c6ca1;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button:active:not(:disabled) {\n background-color: #185d8c;\n background-image: none;\n border-color: #185d8c;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--secondary {\n background-color: #3d546f;\n background-image: none;\n background-position: 0 0;\n background-repeat: repeat;\n border-color: #3d546f;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n color: #fff;\n font-size: 14px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n outline: none;\n padding: 4px 16px;\n text-decoration: none;\n text-transform: capitalize;\n}\n.tox .tox-button--secondary[disabled] {\n background-color: #3d546f;\n background-image: none;\n border-color: #3d546f;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-button--secondary:focus:not(:disabled) {\n background-color: #34485f;\n background-image: none;\n border-color: #34485f;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--secondary:hover:not(:disabled) {\n background-color: #34485f;\n background-image: none;\n border-color: #34485f;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--secondary:active:not(:disabled) {\n background-color: #2b3b4e;\n background-image: none;\n border-color: #2b3b4e;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--icon,\n.tox .tox-button.tox-button--icon,\n.tox .tox-button.tox-button--secondary.tox-button--icon {\n padding: 4px;\n}\n.tox .tox-button--icon .tox-icon svg,\n.tox .tox-button.tox-button--icon .tox-icon svg,\n.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {\n display: block;\n fill: currentColor;\n}\n.tox .tox-button-link {\n background: 0;\n border: none;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n font-weight: normal;\n line-height: 1.3;\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n.tox .tox-button-link--sm {\n font-size: 14px;\n}\n.tox .tox-button--naked {\n background-color: transparent;\n border-color: transparent;\n box-shadow: unset;\n color: #fff;\n}\n.tox .tox-button--naked[disabled] {\n background-color: #3d546f;\n border-color: #3d546f;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-button--naked:hover:not(:disabled) {\n background-color: #34485f;\n border-color: #34485f;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--naked:focus:not(:disabled) {\n background-color: #34485f;\n border-color: #34485f;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--naked:active:not(:disabled) {\n background-color: #2b3b4e;\n border-color: #2b3b4e;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--naked .tox-icon svg {\n fill: currentColor;\n}\n.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {\n color: #fff;\n}\n.tox .tox-checkbox {\n align-items: center;\n border-radius: 3px;\n cursor: pointer;\n display: flex;\n height: 36px;\n min-width: 36px;\n}\n.tox .tox-checkbox__input {\n /* Hide from view but visible to screen readers */\n height: 1px;\n overflow: hidden;\n position: absolute;\n top: auto;\n width: 1px;\n}\n.tox .tox-checkbox__icons {\n align-items: center;\n border-radius: 3px;\n box-shadow: 0 0 0 2px transparent;\n box-sizing: content-box;\n display: flex;\n height: 24px;\n justify-content: center;\n padding: calc(4px - 1px);\n width: 24px;\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: block;\n fill: rgba(255, 255, 255, 0.2);\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n display: none;\n fill: #207ab7;\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n display: none;\n fill: #207ab7;\n}\n.tox .tox-checkbox--disabled {\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: none;\n}\n.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n display: block;\n}\n.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: none;\n}\n.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n display: block;\n}\n.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {\n border-radius: 3px;\n box-shadow: inset 0 0 0 1px #207ab7;\n padding: calc(4px - 1px);\n}\n.tox:not([dir=rtl]) .tox-checkbox__label {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-checkbox__input {\n left: -10000px;\n}\n.tox:not([dir=rtl]) .tox-bar .tox-checkbox {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-checkbox__label {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-checkbox__input {\n right: -10000px;\n}\n.tox[dir=rtl] .tox-bar .tox-checkbox {\n margin-right: 4px;\n}\n.tox {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox .tox-collection--toolbar .tox-collection__group {\n display: flex;\n padding: 0;\n}\n.tox .tox-collection--grid .tox-collection__group {\n display: flex;\n flex-wrap: wrap;\n max-height: 208px;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 0;\n}\n.tox .tox-collection--list .tox-collection__group {\n border-bottom-width: 0;\n border-color: #1a1a1a;\n border-left-width: 0;\n border-right-width: 0;\n border-style: solid;\n border-top-width: 1px;\n padding: 4px 0;\n}\n.tox .tox-collection--list .tox-collection__group:first-child {\n border-top-width: 0;\n}\n.tox .tox-collection__group-heading {\n background-color: #333333;\n color: #fff;\n cursor: default;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n margin-bottom: 4px;\n margin-top: -4px;\n padding: 4px 8px;\n text-transform: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.tox .tox-collection__item {\n align-items: center;\n color: #fff;\n cursor: pointer;\n display: flex;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.tox .tox-collection--list .tox-collection__item {\n padding: 4px 8px;\n}\n.tox .tox-collection--toolbar .tox-collection__item {\n border-radius: 3px;\n padding: 4px;\n}\n.tox .tox-collection--grid .tox-collection__item {\n border-radius: 3px;\n padding: 4px;\n}\n.tox .tox-collection--list .tox-collection__item--enabled {\n background-color: #2b3b4e;\n color: #fff;\n}\n.tox .tox-collection--list .tox-collection__item--active {\n background-color: #4a5562;\n}\n.tox .tox-collection--toolbar .tox-collection__item--enabled {\n background-color: #757d87;\n color: #fff;\n}\n.tox .tox-collection--toolbar .tox-collection__item--active {\n background-color: #4a5562;\n}\n.tox .tox-collection--grid .tox-collection__item--enabled {\n background-color: #757d87;\n color: #fff;\n}\n.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n background-color: #4a5562;\n color: #fff;\n}\n.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n color: #fff;\n}\n.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n color: #fff;\n}\n.tox .tox-collection__item--state-disabled {\n background-color: transparent;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-collection__item-icon,\n.tox .tox-collection__item-checkmark {\n align-items: center;\n display: flex;\n height: 24px;\n justify-content: center;\n width: 24px;\n}\n.tox .tox-collection__item-icon svg,\n.tox .tox-collection__item-checkmark svg {\n fill: currentColor;\n}\n.tox .tox-collection--toolbar-lg .tox-collection__item-icon {\n height: 48px;\n width: 48px;\n}\n.tox .tox-collection__item-label {\n color: currentColor;\n display: inline-block;\n flex: 1;\n -ms-flex-preferred-size: auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 24px;\n text-transform: none;\n word-break: break-all;\n}\n.tox .tox-collection__item-accessory {\n color: rgba(255, 255, 255, 0.5);\n display: inline-block;\n font-size: 14px;\n height: 24px;\n line-height: 24px;\n text-transform: none;\n}\n.tox .tox-collection__item-caret {\n align-items: center;\n display: flex;\n min-height: 24px;\n}\n.tox .tox-collection__item-caret::after {\n content: '';\n font-size: 0;\n min-height: inherit;\n}\n.tox .tox-collection__item-caret svg {\n fill: #fff;\n}\n.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {\n display: none;\n}\n.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark {\n display: none;\n}\n.tox .tox-collection--horizontal {\n background-color: #2b3b4e;\n border: 1px solid #1a1a1a;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: nowrap;\n margin-bottom: 0;\n overflow-x: auto;\n padding: 0;\n}\n.tox .tox-collection--horizontal .tox-collection__group {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n margin: 0;\n padding: 0 4px;\n}\n.tox .tox-collection--horizontal .tox-collection__item {\n height: 34px;\n margin: 2px 0 3px 0;\n padding: 0 4px;\n}\n.tox .tox-collection--horizontal .tox-collection__item-label {\n white-space: nowrap;\n}\n.tox .tox-collection--horizontal .tox-collection__item-caret {\n margin-left: 4px;\n}\n.tox .tox-collection__item-container {\n display: flex;\n}\n.tox .tox-collection__item-container--row {\n align-items: center;\n flex: 1 1 auto;\n flex-direction: row;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--align-left {\n margin-right: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--align-right {\n justify-content: flex-end;\n margin-left: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top {\n align-items: flex-start;\n margin-bottom: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle {\n align-items: center;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom {\n align-items: flex-end;\n margin-top: auto;\n}\n.tox .tox-collection__item-container--column {\n -ms-grid-row-align: center;\n align-self: center;\n flex: 1 1 auto;\n flex-direction: column;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--align-left {\n align-items: flex-start;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--align-right {\n align-items: flex-end;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top {\n align-self: flex-start;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle {\n -ms-grid-row-align: center;\n align-self: center;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom {\n align-self: flex-end;\n}\n.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {\n border-right: 1px solid #000000;\n}\n.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-collection__item-accessory {\n margin-left: 16px;\n text-align: right;\n}\n.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret {\n margin-left: 16px;\n}\n.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {\n border-left: 1px solid #000000;\n}\n.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-collection__item-icon-rtl {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg {\n transform: rotateY(180deg);\n}\n.tox[dir=rtl] .tox-collection__item-accessory {\n margin-right: 16px;\n text-align: left;\n}\n.tox[dir=rtl] .tox-collection .tox-collection__item-caret {\n margin-right: 16px;\n transform: rotateY(180deg);\n}\n.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret {\n margin-right: 4px;\n}\n.tox .tox-color-picker-container {\n display: flex;\n flex-direction: row;\n height: 225px;\n margin: 0;\n}\n.tox .tox-sv-palette {\n box-sizing: border-box;\n display: flex;\n height: 100%;\n}\n.tox .tox-sv-palette-spectrum {\n height: 100%;\n}\n.tox .tox-sv-palette,\n.tox .tox-sv-palette-spectrum {\n width: 225px;\n}\n.tox .tox-sv-palette-thumb {\n background: none;\n border: 1px solid black;\n border-radius: 50%;\n box-sizing: content-box;\n height: 12px;\n position: absolute;\n width: 12px;\n}\n.tox .tox-sv-palette-inner-thumb {\n border: 1px solid white;\n border-radius: 50%;\n height: 10px;\n position: absolute;\n width: 10px;\n}\n.tox .tox-hue-slider {\n box-sizing: border-box;\n height: 100%;\n width: 25px;\n}\n.tox .tox-hue-slider-spectrum {\n background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);\n height: 100%;\n width: 100%;\n}\n.tox .tox-hue-slider,\n.tox .tox-hue-slider-spectrum {\n width: 20px;\n}\n.tox .tox-hue-slider-thumb {\n background: white;\n border: 1px solid black;\n box-sizing: content-box;\n height: 4px;\n width: 100%;\n}\n.tox .tox-rgb-form {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.tox .tox-rgb-form div {\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 5px;\n width: inherit;\n}\n.tox .tox-rgb-form input {\n width: 6em;\n}\n.tox .tox-rgb-form input.tox-invalid {\n /* Need !important to override Chrome's focus styling unfortunately */\n border: 1px solid red !important;\n}\n.tox .tox-rgb-form .tox-rgba-preview {\n border: 1px solid black;\n flex-grow: 2;\n margin-bottom: 0;\n}\n.tox:not([dir=rtl]) .tox-sv-palette {\n margin-right: 15px;\n}\n.tox:not([dir=rtl]) .tox-hue-slider {\n margin-right: 15px;\n}\n.tox:not([dir=rtl]) .tox-hue-slider-thumb {\n margin-left: -1px;\n}\n.tox:not([dir=rtl]) .tox-rgb-form label {\n margin-right: 0.5em;\n}\n.tox[dir=rtl] .tox-sv-palette {\n margin-left: 15px;\n}\n.tox[dir=rtl] .tox-hue-slider {\n margin-left: 15px;\n}\n.tox[dir=rtl] .tox-hue-slider-thumb {\n margin-right: -1px;\n}\n.tox[dir=rtl] .tox-rgb-form label {\n margin-left: 0.5em;\n}\n.tox .tox-toolbar .tox-swatches,\n.tox .tox-toolbar__primary .tox-swatches,\n.tox .tox-toolbar__overflow .tox-swatches {\n margin: 2px 0 3px 4px;\n}\n.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {\n border: 0;\n margin: -4px 0;\n}\n.tox .tox-swatches__row {\n display: flex;\n}\n.tox .tox-swatch {\n height: 30px;\n transition: transform 0.15s, box-shadow 0.15s;\n width: 30px;\n}\n.tox .tox-swatch:hover,\n.tox .tox-swatch:focus {\n box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;\n transform: scale(0.8);\n}\n.tox .tox-swatch--remove {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.tox .tox-swatch--remove svg path {\n stroke: #e74c3c;\n}\n.tox .tox-swatches__picker-btn {\n align-items: center;\n background-color: transparent;\n border: 0;\n cursor: pointer;\n display: flex;\n height: 30px;\n justify-content: center;\n outline: none;\n padding: 0;\n width: 30px;\n}\n.tox .tox-swatches__picker-btn svg {\n height: 24px;\n width: 24px;\n}\n.tox .tox-swatches__picker-btn:hover {\n background: #4a5562;\n}\n.tox:not([dir=rtl]) .tox-swatches__picker-btn {\n margin-left: auto;\n}\n.tox[dir=rtl] .tox-swatches__picker-btn {\n margin-right: auto;\n}\n.tox .tox-comment-thread {\n background: #2b3b4e;\n position: relative;\n}\n.tox .tox-comment-thread > *:not(:first-child) {\n margin-top: 8px;\n}\n.tox .tox-comment {\n background: #2b3b4e;\n border: 1px solid #000000;\n border-radius: 3px;\n box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);\n padding: 8px 8px 16px 8px;\n position: relative;\n}\n.tox .tox-comment__header {\n align-items: center;\n color: #fff;\n display: flex;\n justify-content: space-between;\n}\n.tox .tox-comment__date {\n color: rgba(255, 255, 255, 0.5);\n font-size: 12px;\n}\n.tox .tox-comment__body {\n color: #fff;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n margin-top: 8px;\n position: relative;\n text-transform: initial;\n}\n.tox .tox-comment__body textarea {\n resize: none;\n white-space: normal;\n width: 100%;\n}\n.tox .tox-comment__expander {\n padding-top: 8px;\n}\n.tox .tox-comment__expander p {\n color: rgba(255, 255, 255, 0.5);\n font-size: 14px;\n font-style: normal;\n}\n.tox .tox-comment__body p {\n margin: 0;\n}\n.tox .tox-comment__buttonspacing {\n padding-top: 16px;\n text-align: center;\n}\n.tox .tox-comment-thread__overlay::after {\n background: #2b3b4e;\n bottom: 0;\n content: \"\";\n display: flex;\n left: 0;\n opacity: 0.9;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 5;\n}\n.tox .tox-comment__reply {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-top: 8px;\n}\n.tox .tox-comment__reply > *:first-child {\n margin-bottom: 8px;\n width: 100%;\n}\n.tox .tox-comment__edit {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-top: 16px;\n}\n.tox .tox-comment__gradient::after {\n background: linear-gradient(rgba(43, 59, 78, 0), #2b3b4e);\n bottom: 0;\n content: \"\";\n display: block;\n height: 5em;\n margin-top: -40px;\n position: absolute;\n width: 100%;\n}\n.tox .tox-comment__overlay {\n background: #2b3b4e;\n bottom: 0;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n left: 0;\n opacity: 0.9;\n position: absolute;\n right: 0;\n text-align: center;\n top: 0;\n z-index: 5;\n}\n.tox .tox-comment__loading-text {\n align-items: center;\n color: #fff;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n.tox .tox-comment__loading-text > div {\n padding-bottom: 16px;\n}\n.tox .tox-comment__overlaytext {\n bottom: 0;\n flex-direction: column;\n font-size: 14px;\n left: 0;\n padding: 1em;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 10;\n}\n.tox .tox-comment__overlaytext p {\n background-color: #2b3b4e;\n box-shadow: 0 0 8px 8px #2b3b4e;\n color: #fff;\n text-align: center;\n}\n.tox .tox-comment__overlaytext div:nth-of-type(2) {\n font-size: 0.8em;\n}\n.tox .tox-comment__busy-spinner {\n align-items: center;\n background-color: #2b3b4e;\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 20;\n}\n.tox .tox-comment__scroll {\n display: flex;\n flex-direction: column;\n flex-shrink: 1;\n overflow: auto;\n}\n.tox .tox-conversations {\n margin: 8px;\n}\n.tox:not([dir=rtl]) .tox-comment__edit {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child,\n.tox:not([dir=rtl]) .tox-comment__edit > *:last-child,\n.tox:not([dir=rtl]) .tox-comment__reply > *:last-child {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-comment__edit {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child,\n.tox[dir=rtl] .tox-comment__edit > *:last-child,\n.tox[dir=rtl] .tox-comment__reply > *:last-child {\n margin-right: 8px;\n}\n.tox .tox-user {\n align-items: center;\n display: flex;\n}\n.tox .tox-user__avatar svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-user__name {\n color: rgba(255, 255, 255, 0.5);\n font-size: 12px;\n font-style: normal;\n font-weight: bold;\n text-transform: uppercase;\n}\n.tox:not([dir=rtl]) .tox-user__avatar svg {\n margin-right: 8px;\n}\n.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-user__avatar svg {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-user__avatar + .tox-user__name {\n margin-right: 8px;\n}\n.tox .tox-dialog-wrap {\n align-items: center;\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n z-index: 1100;\n}\n.tox .tox-dialog-wrap__backdrop {\n background-color: rgba(34, 47, 62, 0.75);\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 1;\n}\n.tox .tox-dialog-wrap__backdrop--opaque {\n background-color: #222f3e;\n}\n.tox .tox-dialog {\n background-color: #2b3b4e;\n border-color: #000000;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: 0 16px 16px -10px rgba(42, 55, 70, 0.15), 0 0 40px 1px rgba(42, 55, 70, 0.15);\n display: flex;\n flex-direction: column;\n max-height: 100%;\n max-width: 480px;\n overflow: hidden;\n position: relative;\n width: 95vw;\n z-index: 2;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog {\n align-self: flex-start;\n margin: 8px auto;\n width: calc(100vw - 16px);\n }\n}\n.tox .tox-dialog-inline {\n z-index: 1100;\n}\n.tox .tox-dialog__header {\n align-items: center;\n background-color: #2b3b4e;\n border-bottom: none;\n color: #fff;\n display: flex;\n font-size: 16px;\n justify-content: space-between;\n padding: 8px 16px 0 16px;\n position: relative;\n}\n.tox .tox-dialog__header .tox-button {\n z-index: 1;\n}\n.tox .tox-dialog__draghandle {\n cursor: grab;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tox .tox-dialog__draghandle:active {\n cursor: grabbing;\n}\n.tox .tox-dialog__dismiss {\n margin-left: auto;\n}\n.tox .tox-dialog__title {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 20px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n margin: 0;\n text-transform: none;\n}\n.tox .tox-dialog__body {\n color: #fff;\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n min-width: 0;\n text-align: left;\n text-transform: none;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog__body {\n flex-direction: column;\n }\n}\n.tox .tox-dialog__body-nav {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 16px 16px;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {\n flex-direction: row;\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n padding-bottom: 0;\n }\n}\n.tox .tox-dialog__body-nav-item {\n border-bottom: 2px solid transparent;\n color: rgba(255, 255, 255, 0.5);\n display: inline-block;\n font-size: 14px;\n line-height: 1.3;\n margin-bottom: 8px;\n text-decoration: none;\n white-space: nowrap;\n}\n.tox .tox-dialog__body-nav-item:focus {\n background-color: rgba(32, 122, 183, 0.1);\n}\n.tox .tox-dialog__body-nav-item--active {\n border-bottom: 2px solid #207ab7;\n color: #207ab7;\n}\n.tox .tox-dialog__body-content {\n box-sizing: border-box;\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n max-height: 650px;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n padding: 16px 16px;\n}\n.tox .tox-dialog__body-content > * {\n margin-bottom: 0;\n margin-top: 16px;\n}\n.tox .tox-dialog__body-content > *:first-child {\n margin-top: 0;\n}\n.tox .tox-dialog__body-content > *:last-child {\n margin-bottom: 0;\n}\n.tox .tox-dialog__body-content > *:only-child {\n margin-bottom: 0;\n margin-top: 0;\n}\n.tox .tox-dialog__body-content a {\n color: #207ab7;\n cursor: pointer;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content a:hover,\n.tox .tox-dialog__body-content a:focus {\n color: #185d8c;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content a:active {\n color: #185d8c;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content ul {\n display: block;\n list-style-type: disc;\n margin-bottom: 16px;\n -webkit-margin-end: 0;\n margin-inline-end: 0;\n -webkit-margin-start: 0;\n margin-inline-start: 0;\n -webkit-padding-start: 2.5rem;\n padding-inline-start: 2.5rem;\n}\n.tox .tox-dialog__body-content .tox-form__group h1 {\n color: #fff;\n font-size: 20px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n margin-bottom: 16px;\n margin-top: 2rem;\n text-transform: none;\n}\n.tox .tox-dialog__body-content .tox-form__group h2 {\n color: #fff;\n font-size: 16px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n margin-bottom: 16px;\n margin-top: 2rem;\n text-transform: none;\n}\n.tox .tox-dialog__body-content .tox-form__group p {\n margin-bottom: 16px;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:first-child,\n.tox .tox-dialog__body-content .tox-form__group h2:first-child,\n.tox .tox-dialog__body-content .tox-form__group p:first-child {\n margin-top: 0;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:last-child,\n.tox .tox-dialog__body-content .tox-form__group h2:last-child,\n.tox .tox-dialog__body-content .tox-form__group p:last-child {\n margin-bottom: 0;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:only-child,\n.tox .tox-dialog__body-content .tox-form__group h2:only-child,\n.tox .tox-dialog__body-content .tox-form__group p:only-child {\n margin-bottom: 0;\n margin-top: 0;\n}\n.tox .tox-dialog--width-lg {\n height: 650px;\n max-width: 1200px;\n}\n.tox .tox-dialog--width-md {\n max-width: 800px;\n}\n.tox .tox-dialog--width-md .tox-dialog__body-content {\n overflow: auto;\n}\n.tox .tox-dialog__body-content--centered {\n text-align: center;\n}\n.tox .tox-dialog__footer {\n align-items: center;\n background-color: #2b3b4e;\n border-top: 1px solid #000000;\n display: flex;\n justify-content: space-between;\n padding: 8px 16px;\n}\n.tox .tox-dialog__footer-start,\n.tox .tox-dialog__footer-end {\n display: flex;\n}\n.tox .tox-dialog__busy-spinner {\n align-items: center;\n background-color: rgba(34, 47, 62, 0.75);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 3;\n}\n.tox .tox-dialog__table {\n border-collapse: collapse;\n width: 100%;\n}\n.tox .tox-dialog__table thead th {\n font-weight: bold;\n padding-bottom: 8px;\n}\n.tox .tox-dialog__table tbody tr {\n border-bottom: 1px solid #000000;\n}\n.tox .tox-dialog__table tbody tr:last-child {\n border-bottom: none;\n}\n.tox .tox-dialog__table td {\n padding-bottom: 8px;\n padding-top: 8px;\n}\n.tox .tox-dialog__popups {\n position: absolute;\n width: 100%;\n z-index: 1100;\n}\n.tox .tox-dialog__body-iframe {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-iframe .tox-navobj {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n}\n.tox .tox-dialog-dock-fadeout {\n opacity: 0;\n visibility: hidden;\n}\n.tox .tox-dialog-dock-fadein {\n opacity: 1;\n visibility: visible;\n}\n.tox .tox-dialog-dock-transition {\n transition: visibility 0s linear 0.3s, opacity 0.3s ease;\n}\n.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {\n transition-delay: 0s;\n}\n.tox.tox-platform-ie {\n /* IE11 CSS styles go here */\n}\n.tox.tox-platform-ie .tox-dialog-wrap {\n position: -ms-device-fixed;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav {\n margin-right: 0;\n }\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) {\n margin-left: 8px;\n }\n}\n.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *,\n.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-dialog__body {\n text-align: right;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav {\n margin-left: 0;\n }\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) {\n margin-right: 8px;\n }\n}\n.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *,\n.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * {\n margin-right: 8px;\n}\nbody.tox-dialog__disable-scroll {\n overflow: hidden;\n}\n.tox .tox-dropzone-container {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dropzone {\n align-items: center;\n background: #fff;\n border: 2px dashed #000000;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n justify-content: center;\n min-height: 100px;\n padding: 10px;\n}\n.tox .tox-dropzone p {\n color: rgba(255, 255, 255, 0.5);\n margin: 0 0 16px 0;\n}\n.tox .tox-edit-area {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n overflow: hidden;\n position: relative;\n}\n.tox .tox-edit-area__iframe {\n background-color: #fff;\n border: 0;\n box-sizing: border-box;\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n position: absolute;\n width: 100%;\n}\n.tox.tox-inline-edit-area {\n border: 1px dotted #000000;\n}\n.tox .tox-editor-container {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n overflow: hidden;\n}\n.tox .tox-editor-header {\n z-index: 1;\n}\n.tox:not(.tox-tinymce-inline) .tox-editor-header {\n box-shadow: none;\n transition: box-shadow 0.5s;\n}\n.tox.tox-tinymce--toolbar-bottom .tox-editor-header,\n.tox.tox-tinymce-inline .tox-editor-header {\n margin-bottom: -1px;\n}\n.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {\n box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);\n}\n.tox-editor-dock-fadeout {\n opacity: 0;\n visibility: hidden;\n}\n.tox-editor-dock-fadein {\n opacity: 1;\n visibility: visible;\n}\n.tox-editor-dock-transition {\n transition: visibility 0s linear 0.25s, opacity 0.25s ease;\n}\n.tox-editor-dock-transition.tox-editor-dock-fadein {\n transition-delay: 0s;\n}\n.tox .tox-control-wrap {\n flex: 1;\n position: relative;\n}\n.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,\n.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,\n.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {\n display: none;\n}\n.tox .tox-control-wrap svg {\n display: block;\n}\n.tox .tox-control-wrap__status-icon-wrap {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-control-wrap__status-icon-invalid svg {\n fill: #c00;\n}\n.tox .tox-control-wrap__status-icon-unknown svg {\n fill: orange;\n}\n.tox .tox-control-wrap__status-icon-valid svg {\n fill: green;\n}\n.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,\n.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,\n.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield {\n padding-right: 32px;\n}\n.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap {\n right: 4px;\n}\n.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,\n.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,\n.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield {\n padding-left: 32px;\n}\n.tox[dir=rtl] .tox-control-wrap__status-icon-wrap {\n left: 4px;\n}\n.tox .tox-autocompleter {\n max-width: 25em;\n}\n.tox .tox-autocompleter .tox-menu {\n max-width: 25em;\n}\n.tox .tox-autocompleter .tox-autocompleter-highlight {\n font-weight: bold;\n}\n.tox .tox-color-input {\n display: flex;\n position: relative;\n z-index: 1;\n}\n.tox .tox-color-input .tox-textfield {\n z-index: -1;\n}\n.tox .tox-color-input span {\n border-color: rgba(42, 55, 70, 0.2);\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n height: 24px;\n position: absolute;\n top: 6px;\n width: 24px;\n}\n.tox .tox-color-input span:hover:not([aria-disabled=true]),\n.tox .tox-color-input span:focus:not([aria-disabled=true]) {\n border-color: #207ab7;\n cursor: pointer;\n}\n.tox .tox-color-input span::before {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%);\n background-position: 0 0, 0 6px, 6px -6px, -6px 0;\n background-size: 12px 12px;\n border: 1px solid #2b3b4e;\n border-radius: 3px;\n box-sizing: border-box;\n content: '';\n height: 24px;\n left: -1px;\n position: absolute;\n top: -1px;\n width: 24px;\n z-index: -1;\n}\n.tox .tox-color-input span[aria-disabled=true] {\n cursor: not-allowed;\n}\n.tox:not([dir=rtl]) .tox-color-input {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox:not([dir=rtl]) .tox-color-input .tox-textfield {\n padding-left: 36px;\n}\n.tox:not([dir=rtl]) .tox-color-input span {\n left: 6px;\n}\n.tox[dir=\"rtl\"] .tox-color-input {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=\"rtl\"] .tox-color-input .tox-textfield {\n padding-right: 36px;\n}\n.tox[dir=\"rtl\"] .tox-color-input span {\n right: 6px;\n}\n.tox .tox-label,\n.tox .tox-toolbar-label {\n color: rgba(255, 255, 255, 0.5);\n display: block;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n padding: 0 8px 0 0;\n text-transform: none;\n white-space: nowrap;\n}\n.tox .tox-toolbar-label {\n padding: 0 8px;\n}\n.tox[dir=rtl] .tox-label {\n padding: 0 0 0 8px;\n}\n.tox .tox-form {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group {\n box-sizing: border-box;\n margin-bottom: 4px;\n}\n.tox .tox-form-group--maximize {\n flex: 1;\n}\n.tox .tox-form__group--error {\n color: #c00;\n}\n.tox .tox-form__group--collection {\n display: flex;\n}\n.tox .tox-form__grid {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.tox .tox-form__grid--2col > .tox-form__group {\n width: calc(50% - (8px / 2));\n}\n.tox .tox-form__grid--3col > .tox-form__group {\n width: calc(100% / 3 - (8px / 2));\n}\n.tox .tox-form__grid--4col > .tox-form__group {\n width: calc(25% - (8px / 2));\n}\n.tox .tox-form__controls-h-stack {\n align-items: center;\n display: flex;\n}\n.tox .tox-form__group--inline {\n align-items: center;\n display: flex;\n}\n.tox .tox-form__group--stretched {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-textarea {\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-navobj {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n}\n.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) {\n margin-right: 4px;\n}\n.tox .tox-lock.tox-locked .tox-lock-icon__unlock,\n.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {\n display: none;\n}\n.tox .tox-textfield,\n.tox .tox-toolbar-textfield,\n.tox .tox-listboxfield .tox-listbox--select,\n.tox .tox-textarea {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: #2b3b4e;\n border-color: #000000;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #fff;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n line-height: 24px;\n margin: 0;\n min-height: 34px;\n outline: none;\n padding: 5px 4.75px;\n resize: none;\n width: 100%;\n}\n.tox .tox-textfield[disabled],\n.tox .tox-textarea[disabled] {\n background-color: #222f3e;\n color: rgba(255, 255, 255, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-textfield:focus,\n.tox .tox-listboxfield .tox-listbox--select:focus,\n.tox .tox-textarea:focus {\n background-color: #2b3b4e;\n border-color: #207ab7;\n box-shadow: none;\n outline: none;\n}\n.tox .tox-toolbar-textfield {\n border-width: 0;\n margin-bottom: 3px;\n margin-top: 2px;\n max-width: 250px;\n}\n.tox .tox-naked-btn {\n background-color: transparent;\n border: 0;\n border-color: transparent;\n box-shadow: unset;\n color: #207ab7;\n cursor: pointer;\n display: block;\n margin: 0;\n padding: 0;\n}\n.tox .tox-naked-btn svg {\n display: block;\n fill: #fff;\n}\n.tox:not([dir=rtl]) .tox-toolbar-textfield + * {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-toolbar-textfield + * {\n margin-right: 4px;\n}\n.tox .tox-listboxfield {\n cursor: pointer;\n position: relative;\n}\n.tox .tox-listboxfield .tox-listbox--select[disabled] {\n background-color: #19232e;\n color: rgba(255, 255, 255, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-listbox__select-label {\n cursor: default;\n flex: 1;\n margin: 0 4px;\n}\n.tox .tox-listbox__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n}\n.tox .tox-listbox__select-chevron svg {\n fill: #fff;\n}\n.tox .tox-listboxfield .tox-listbox--select {\n align-items: center;\n display: flex;\n}\n.tox:not([dir=rtl]) .tox-listboxfield svg {\n right: 8px;\n}\n.tox[dir=rtl] .tox-listboxfield svg {\n left: 8px;\n}\n.tox .tox-selectfield {\n cursor: pointer;\n position: relative;\n}\n.tox .tox-selectfield select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: #2b3b4e;\n border-color: #000000;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #fff;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n line-height: 24px;\n margin: 0;\n min-height: 34px;\n outline: none;\n padding: 5px 4.75px;\n resize: none;\n width: 100%;\n}\n.tox .tox-selectfield select[disabled] {\n background-color: #19232e;\n color: rgba(255, 255, 255, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-selectfield select::-ms-expand {\n display: none;\n}\n.tox .tox-selectfield select:focus {\n background-color: #2b3b4e;\n border-color: #207ab7;\n box-shadow: none;\n outline: none;\n}\n.tox .tox-selectfield svg {\n pointer-events: none;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox:not([dir=rtl]) .tox-selectfield select[size=\"0\"],\n.tox:not([dir=rtl]) .tox-selectfield select[size=\"1\"] {\n padding-right: 24px;\n}\n.tox:not([dir=rtl]) .tox-selectfield svg {\n right: 8px;\n}\n.tox[dir=rtl] .tox-selectfield select[size=\"0\"],\n.tox[dir=rtl] .tox-selectfield select[size=\"1\"] {\n padding-left: 24px;\n}\n.tox[dir=rtl] .tox-selectfield svg {\n left: 8px;\n}\n.tox .tox-textarea {\n -webkit-appearance: textarea;\n -moz-appearance: textarea;\n appearance: textarea;\n white-space: pre-wrap;\n}\n.tox-fullscreen {\n border: 0;\n height: 100%;\n left: 0;\n margin: 0;\n overflow: hidden;\n -ms-scroll-chaining: none;\n overscroll-behavior: none;\n padding: 0;\n position: fixed;\n top: 0;\n touch-action: pinch-zoom;\n width: 100%;\n}\n.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {\n display: none;\n}\n.tox.tox-tinymce.tox-fullscreen {\n z-index: 1200;\n}\n.tox-shadowhost.tox-fullscreen {\n z-index: 1200;\n}\n.tox-fullscreen .tox.tox-tinymce-aux,\n.tox-fullscreen ~ .tox.tox-tinymce-aux {\n z-index: 1201;\n}\n.tox .tox-help__more-link {\n list-style: none;\n margin-top: 1em;\n}\n.tox .tox-image-tools {\n width: 100%;\n}\n.tox .tox-image-tools__toolbar {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.tox .tox-image-tools__image {\n background-color: #666;\n height: 380px;\n overflow: auto;\n position: relative;\n width: 100%;\n}\n.tox .tox-image-tools__image,\n.tox .tox-image-tools__image + .tox-image-tools__toolbar {\n margin-top: 8px;\n}\n.tox .tox-image-tools__image-bg {\n background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);\n}\n.tox .tox-image-tools__toolbar > .tox-spacer {\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-croprect-block {\n background: black;\n filter: alpha(opacity=50);\n opacity: 0.5;\n position: absolute;\n zoom: 1;\n}\n.tox .tox-croprect-handle {\n border: 2px solid white;\n height: 20px;\n left: 0;\n position: absolute;\n top: 0;\n width: 20px;\n}\n.tox .tox-croprect-handle-move {\n border: 0;\n cursor: move;\n position: absolute;\n}\n.tox .tox-croprect-handle-nw {\n border-width: 2px 0 0 2px;\n cursor: nw-resize;\n left: 100px;\n margin: -2px 0 0 -2px;\n top: 100px;\n}\n.tox .tox-croprect-handle-ne {\n border-width: 2px 2px 0 0;\n cursor: ne-resize;\n left: 200px;\n margin: -2px 0 0 -20px;\n top: 100px;\n}\n.tox .tox-croprect-handle-sw {\n border-width: 0 0 2px 2px;\n cursor: sw-resize;\n left: 100px;\n margin: -20px 2px 0 -2px;\n top: 200px;\n}\n.tox .tox-croprect-handle-se {\n border-width: 0 2px 2px 0;\n cursor: se-resize;\n left: 200px;\n margin: -20px 0 0 -20px;\n top: 200px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider {\n margin-left: 32px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button {\n margin-left: 32px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider {\n margin-right: 32px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button {\n margin-right: 32px;\n}\n.tox .tox-insert-table-picker {\n display: flex;\n flex-wrap: wrap;\n width: 170px;\n}\n.tox .tox-insert-table-picker > div {\n border-color: #000000;\n border-style: solid;\n border-width: 0 1px 1px 0;\n box-sizing: border-box;\n height: 17px;\n width: 17px;\n}\n.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {\n margin: -4px 0;\n}\n.tox .tox-insert-table-picker .tox-insert-table-picker__selected {\n background-color: rgba(32, 122, 183, 0.5);\n border-color: rgba(32, 122, 183, 0.5);\n}\n.tox .tox-insert-table-picker__label {\n color: #fff;\n display: block;\n font-size: 14px;\n padding: 4px;\n text-align: center;\n width: 100%;\n}\n.tox:not([dir=rtl]) {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) {\n border-right: 0;\n}\n.tox[dir=rtl] {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) {\n border-right: 0;\n}\n.tox {\n /* stylelint-disable */\n /* stylelint-enable */\n}\n.tox .tox-menu {\n background-color: #2b3b4e;\n border: 1px solid #000000;\n border-radius: 3px;\n box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);\n display: inline-block;\n overflow: hidden;\n vertical-align: top;\n z-index: 1150;\n}\n.tox .tox-menu.tox-collection.tox-collection--list {\n padding: 0;\n}\n.tox .tox-menu.tox-collection.tox-collection--toolbar {\n padding: 4px;\n}\n.tox .tox-menu.tox-collection.tox-collection--grid {\n padding: 4px;\n}\n.tox .tox-menu__label h1,\n.tox .tox-menu__label h2,\n.tox .tox-menu__label h3,\n.tox .tox-menu__label h4,\n.tox .tox-menu__label h5,\n.tox .tox-menu__label h6,\n.tox .tox-menu__label p,\n.tox .tox-menu__label blockquote,\n.tox .tox-menu__label code {\n margin: 0;\n}\n.tox .tox-menubar {\n background: url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E\") left 0 top 0 #222f3e;\n background-color: #222f3e;\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: wrap;\n padding: 0 4px 0 4px;\n}\n.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {\n border-top: 1px solid #000000;\n}\n/* Deprecated. Remove in next major release */\n.tox .tox-mbtn {\n align-items: center;\n background: transparent;\n border: 0;\n border-radius: 3px;\n box-shadow: none;\n color: #fff;\n display: flex;\n flex: 0 0 auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n height: 34px;\n justify-content: center;\n margin: 2px 0 3px 0;\n outline: none;\n overflow: hidden;\n padding: 0 4px;\n text-transform: none;\n width: auto;\n}\n.tox .tox-mbtn[disabled] {\n background-color: transparent;\n border: 0;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-mbtn:focus:not(:disabled) {\n background: #4a5562;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-mbtn--active {\n background: #757d87;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {\n background: #4a5562;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-mbtn__select-label {\n cursor: default;\n font-weight: normal;\n margin: 0 4px;\n}\n.tox .tox-mbtn[disabled] .tox-mbtn__select-label {\n cursor: not-allowed;\n}\n.tox .tox-mbtn__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n display: none;\n}\n.tox .tox-notification {\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n display: -ms-grid;\n display: grid;\n font-size: 14px;\n font-weight: normal;\n -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);\n grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);\n margin-top: 4px;\n opacity: 0;\n padding: 4px;\n transition: transform 100ms ease-in, opacity 150ms ease-in;\n}\n.tox .tox-notification p {\n font-size: 14px;\n font-weight: normal;\n}\n.tox .tox-notification a {\n text-decoration: underline;\n}\n.tox .tox-notification--in {\n opacity: 1;\n}\n.tox .tox-notification--success {\n background-color: #e4eeda;\n border-color: #d7e6c8;\n color: #fff;\n}\n.tox .tox-notification--success p {\n color: #fff;\n}\n.tox .tox-notification--success a {\n color: #547831;\n}\n.tox .tox-notification--success svg {\n fill: #fff;\n}\n.tox .tox-notification--error {\n background-color: #f8dede;\n border-color: #f2bfbf;\n color: #fff;\n}\n.tox .tox-notification--error p {\n color: #fff;\n}\n.tox .tox-notification--error a {\n color: #c00;\n}\n.tox .tox-notification--error svg {\n fill: #fff;\n}\n.tox .tox-notification--warn,\n.tox .tox-notification--warning {\n background-color: #fffaea;\n border-color: #ffe89d;\n color: #fff;\n}\n.tox .tox-notification--warn p,\n.tox .tox-notification--warning p {\n color: #fff;\n}\n.tox .tox-notification--warn a,\n.tox .tox-notification--warning a {\n color: #fff;\n}\n.tox .tox-notification--warn svg,\n.tox .tox-notification--warning svg {\n fill: #fff;\n}\n.tox .tox-notification--info {\n background-color: #d9edf7;\n border-color: #779ecb;\n color: #fff;\n}\n.tox .tox-notification--info p {\n color: #fff;\n}\n.tox .tox-notification--info a {\n color: #fff;\n}\n.tox .tox-notification--info svg {\n fill: #fff;\n}\n.tox .tox-notification__body {\n -ms-grid-row-align: center;\n align-self: center;\n color: #fff;\n font-size: 14px;\n -ms-grid-column-span: 1;\n grid-column-end: 3;\n -ms-grid-column: 2;\n grid-column-start: 2;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n text-align: center;\n white-space: normal;\n word-break: break-all;\n word-break: break-word;\n}\n.tox .tox-notification__body > * {\n margin: 0;\n}\n.tox .tox-notification__body > * + * {\n margin-top: 1rem;\n}\n.tox .tox-notification__icon {\n -ms-grid-row-align: center;\n align-self: center;\n -ms-grid-column-span: 1;\n grid-column-end: 2;\n -ms-grid-column: 1;\n grid-column-start: 1;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n -ms-grid-column-align: end;\n justify-self: end;\n}\n.tox .tox-notification__icon svg {\n display: block;\n}\n.tox .tox-notification__dismiss {\n -ms-grid-row-align: start;\n align-self: start;\n -ms-grid-column-span: 1;\n grid-column-end: 4;\n -ms-grid-column: 3;\n grid-column-start: 3;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n -ms-grid-column-align: end;\n justify-self: end;\n}\n.tox .tox-notification .tox-progress-bar {\n -ms-grid-column-span: 3;\n grid-column-end: 4;\n -ms-grid-column: 1;\n grid-column-start: 1;\n -ms-grid-row-span: 1;\n grid-row-end: 3;\n -ms-grid-row: 2;\n grid-row-start: 2;\n -ms-grid-column-align: center;\n justify-self: center;\n}\n.tox .tox-pop {\n display: inline-block;\n position: relative;\n}\n.tox .tox-pop--resizing {\n transition: width 0.1s ease;\n}\n.tox .tox-pop--resizing .tox-toolbar {\n flex-wrap: nowrap;\n}\n.tox .tox-pop__dialog {\n background-color: #222f3e;\n border: 1px solid #000000;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n min-width: 0;\n overflow: hidden;\n}\n.tox .tox-pop__dialog > *:not(.tox-toolbar) {\n margin: 4px 4px 4px 8px;\n}\n.tox .tox-pop__dialog .tox-toolbar {\n background-color: transparent;\n margin-bottom: -1px;\n}\n.tox .tox-pop::before,\n.tox .tox-pop::after {\n border-style: solid;\n content: '';\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n}\n.tox .tox-pop.tox-pop--bottom::before,\n.tox .tox-pop.tox-pop--bottom::after {\n left: 50%;\n top: 100%;\n}\n.tox .tox-pop.tox-pop--bottom::after {\n border-color: #222f3e transparent transparent transparent;\n border-width: 8px;\n margin-left: -8px;\n margin-top: -1px;\n}\n.tox .tox-pop.tox-pop--bottom::before {\n border-color: #000000 transparent transparent transparent;\n border-width: 9px;\n margin-left: -9px;\n}\n.tox .tox-pop.tox-pop--top::before,\n.tox .tox-pop.tox-pop--top::after {\n left: 50%;\n top: 0;\n transform: translateY(-100%);\n}\n.tox .tox-pop.tox-pop--top::after {\n border-color: transparent transparent #222f3e transparent;\n border-width: 8px;\n margin-left: -8px;\n margin-top: 1px;\n}\n.tox .tox-pop.tox-pop--top::before {\n border-color: transparent transparent #000000 transparent;\n border-width: 9px;\n margin-left: -9px;\n}\n.tox .tox-pop.tox-pop--left::before,\n.tox .tox-pop.tox-pop--left::after {\n left: 0;\n top: calc(50% - 1px);\n transform: translateY(-50%);\n}\n.tox .tox-pop.tox-pop--left::after {\n border-color: transparent #222f3e transparent transparent;\n border-width: 8px;\n margin-left: -15px;\n}\n.tox .tox-pop.tox-pop--left::before {\n border-color: transparent #000000 transparent transparent;\n border-width: 10px;\n margin-left: -19px;\n}\n.tox .tox-pop.tox-pop--right::before,\n.tox .tox-pop.tox-pop--right::after {\n left: 100%;\n top: calc(50% + 1px);\n transform: translateY(-50%);\n}\n.tox .tox-pop.tox-pop--right::after {\n border-color: transparent transparent transparent #222f3e;\n border-width: 8px;\n margin-left: -1px;\n}\n.tox .tox-pop.tox-pop--right::before {\n border-color: transparent transparent transparent #000000;\n border-width: 10px;\n margin-left: -1px;\n}\n.tox .tox-pop.tox-pop--align-left::before,\n.tox .tox-pop.tox-pop--align-left::after {\n left: 20px;\n}\n.tox .tox-pop.tox-pop--align-right::before,\n.tox .tox-pop.tox-pop--align-right::after {\n left: calc(100% - 20px);\n}\n.tox .tox-sidebar-wrap {\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n -ms-flex-preferred-size: 0;\n min-height: 0;\n}\n.tox .tox-sidebar {\n background-color: #222f3e;\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n}\n.tox .tox-sidebar__slider {\n display: flex;\n overflow: hidden;\n}\n.tox .tox-sidebar__pane-container {\n display: flex;\n}\n.tox .tox-sidebar__pane {\n display: flex;\n}\n.tox .tox-sidebar--sliding-closed {\n opacity: 0;\n}\n.tox .tox-sidebar--sliding-open {\n opacity: 1;\n}\n.tox .tox-sidebar--sliding-growing,\n.tox .tox-sidebar--sliding-shrinking {\n transition: width 0.5s ease, opacity 0.5s ease;\n}\n.tox .tox-selector {\n background-color: #4099ff;\n border-color: #4099ff;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n display: inline-block;\n height: 10px;\n position: absolute;\n width: 10px;\n}\n.tox.tox-platform-touch .tox-selector {\n height: 12px;\n width: 12px;\n}\n.tox .tox-slider {\n align-items: center;\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 24px;\n justify-content: center;\n position: relative;\n}\n.tox .tox-slider__rail {\n background-color: transparent;\n border: 1px solid #000000;\n border-radius: 3px;\n height: 10px;\n min-width: 120px;\n width: 100%;\n}\n.tox .tox-slider__handle {\n background-color: #207ab7;\n border: 2px solid #185d8c;\n border-radius: 3px;\n box-shadow: none;\n height: 24px;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n width: 14px;\n}\n.tox .tox-source-code {\n overflow: auto;\n}\n.tox .tox-spinner {\n display: flex;\n}\n.tox .tox-spinner > div {\n animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;\n background-color: rgba(255, 255, 255, 0.5);\n border-radius: 100%;\n height: 8px;\n width: 8px;\n}\n.tox .tox-spinner > div:nth-child(1) {\n animation-delay: -0.32s;\n}\n.tox .tox-spinner > div:nth-child(2) {\n animation-delay: -0.16s;\n}\n@keyframes tam-bouncing-dots {\n 0%,\n 80%,\n 100% {\n transform: scale(0);\n }\n 40% {\n transform: scale(1);\n }\n}\n.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-spinner > div:not(:first-child) {\n margin-right: 4px;\n}\n.tox .tox-statusbar {\n align-items: center;\n background-color: #222f3e;\n border-top: 1px solid #000000;\n color: #fff;\n display: flex;\n flex: 0 0 auto;\n font-size: 12px;\n font-weight: normal;\n height: 18px;\n overflow: hidden;\n padding: 0 8px;\n position: relative;\n text-transform: uppercase;\n}\n.tox .tox-statusbar__text-container {\n display: flex;\n flex: 1 1 auto;\n justify-content: flex-end;\n overflow: hidden;\n}\n.tox .tox-statusbar__path {\n display: flex;\n flex: 1 1 auto;\n margin-right: auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.tox .tox-statusbar__path > * {\n display: inline;\n white-space: nowrap;\n}\n.tox .tox-statusbar__wordcount {\n flex: 0 0 auto;\n margin-left: 1ch;\n}\n.tox .tox-statusbar a,\n.tox .tox-statusbar__path-item,\n.tox .tox-statusbar__wordcount {\n color: #fff;\n text-decoration: none;\n}\n.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) {\n cursor: pointer;\n text-decoration: underline;\n}\n.tox .tox-statusbar__resize-handle {\n align-items: flex-end;\n align-self: stretch;\n cursor: nwse-resize;\n display: flex;\n flex: 0 0 auto;\n justify-content: flex-end;\n margin-left: auto;\n margin-right: -8px;\n padding-left: 1ch;\n}\n.tox .tox-statusbar__resize-handle svg {\n display: block;\n fill: #fff;\n}\n.tox:not([dir=rtl]) .tox-statusbar__path > * {\n margin-right: 4px;\n}\n.tox:not([dir=rtl]) .tox-statusbar__branding {\n margin-left: 1ch;\n}\n.tox[dir=rtl] .tox-statusbar {\n flex-direction: row-reverse;\n}\n.tox[dir=rtl] .tox-statusbar__path > * {\n margin-left: 4px;\n}\n.tox .tox-throbber {\n z-index: 1400;\n}\n.tox .tox-throbber__busy-spinner {\n align-items: center;\n background-color: rgba(34, 47, 62, 0.6);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n.tox .tox-tbtn {\n align-items: center;\n background: transparent;\n border: 0;\n border-radius: 3px;\n box-shadow: none;\n color: #fff;\n display: flex;\n flex: 0 0 auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n height: 34px;\n justify-content: center;\n margin: 2px 0 3px 0;\n outline: none;\n overflow: hidden;\n padding: 0;\n text-transform: none;\n width: 34px;\n}\n.tox .tox-tbtn svg {\n display: block;\n fill: #fff;\n}\n.tox .tox-tbtn.tox-tbtn-more {\n padding-left: 5px;\n padding-right: 5px;\n width: inherit;\n}\n.tox .tox-tbtn:focus {\n background: #4a5562;\n border: 0;\n box-shadow: none;\n}\n.tox .tox-tbtn:hover {\n background: #4a5562;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-tbtn:hover svg {\n fill: #fff;\n}\n.tox .tox-tbtn:active {\n background: #757d87;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-tbtn:active svg {\n fill: #fff;\n}\n.tox .tox-tbtn--disabled,\n.tox .tox-tbtn--disabled:hover,\n.tox .tox-tbtn:disabled,\n.tox .tox-tbtn:disabled:hover {\n background: transparent;\n border: 0;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-tbtn--disabled svg,\n.tox .tox-tbtn--disabled:hover svg,\n.tox .tox-tbtn:disabled svg,\n.tox .tox-tbtn:disabled:hover svg {\n /* stylelint-disable-line no-descending-specificity */\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-tbtn--enabled,\n.tox .tox-tbtn--enabled:hover {\n background: #757d87;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-tbtn--enabled > *,\n.tox .tox-tbtn--enabled:hover > * {\n transform: none;\n}\n.tox .tox-tbtn--enabled svg,\n.tox .tox-tbtn--enabled:hover svg {\n /* stylelint-disable-line no-descending-specificity */\n fill: #fff;\n}\n.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {\n color: #fff;\n}\n.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {\n fill: #fff;\n}\n.tox .tox-tbtn:active > * {\n transform: none;\n}\n.tox .tox-tbtn--md {\n height: 51px;\n width: 51px;\n}\n.tox .tox-tbtn--lg {\n flex-direction: column;\n height: 68px;\n width: 68px;\n}\n.tox .tox-tbtn--return {\n -ms-grid-row-align: stretch;\n align-self: stretch;\n height: unset;\n width: 16px;\n}\n.tox .tox-tbtn--labeled {\n padding: 0 4px;\n width: unset;\n}\n.tox .tox-tbtn__vlabel {\n display: block;\n font-size: 10px;\n font-weight: normal;\n letter-spacing: -0.025em;\n margin-bottom: 4px;\n white-space: nowrap;\n}\n.tox .tox-tbtn--select {\n margin: 2px 0 3px 0;\n padding: 0 4px;\n width: auto;\n}\n.tox .tox-tbtn__select-label {\n cursor: default;\n font-weight: normal;\n margin: 0 4px;\n}\n.tox .tox-tbtn__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n}\n.tox .tox-tbtn__select-chevron svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 7em;\n}\n.tox .tox-split-button {\n border: 0;\n border-radius: 3px;\n box-sizing: border-box;\n display: flex;\n margin: 2px 0 3px 0;\n overflow: hidden;\n}\n.tox .tox-split-button:hover {\n box-shadow: 0 0 0 1px #4a5562 inset;\n}\n.tox .tox-split-button:focus {\n background: #4a5562;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-split-button > * {\n border-radius: 0;\n}\n.tox .tox-split-button__chevron {\n width: 16px;\n}\n.tox .tox-split-button__chevron svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-split-button .tox-tbtn {\n margin: 0;\n}\n.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {\n width: 30px;\n}\n.tox.tox-platform-touch .tox-split-button__chevron {\n width: 20px;\n}\n.tox .tox-split-button.tox-tbtn--disabled:hover,\n.tox .tox-split-button.tox-tbtn--disabled:focus,\n.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,\n.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {\n background: transparent;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-toolbar-overlord {\n background-color: #222f3e;\n}\n.tox .tox-toolbar,\n.tox .tox-toolbar__primary,\n.tox .tox-toolbar__overflow {\n background: url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E\") left 0 top 0 #222f3e;\n background-color: #222f3e;\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: wrap;\n padding: 0 0;\n}\n.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {\n height: 0;\n opacity: 0;\n padding-bottom: 0;\n padding-top: 0;\n visibility: hidden;\n}\n.tox .tox-toolbar__overflow--growing {\n transition: height 0.3s ease, opacity 0.2s linear 0.1s;\n}\n.tox .tox-toolbar__overflow--shrinking {\n transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;\n}\n.tox .tox-menubar + .tox-toolbar,\n.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {\n border-top: 1px solid #000000;\n margin-top: -1px;\n}\n.tox .tox-toolbar--scrolling {\n flex-wrap: nowrap;\n overflow-x: auto;\n}\n.tox .tox-pop .tox-toolbar {\n border-width: 0;\n}\n.tox .tox-toolbar--no-divider {\n background-image: none;\n}\n.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,\n.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {\n border-top: 1px solid #000000;\n}\n.tox.tox-tinymce-aux .tox-toolbar__overflow {\n background-color: #222f3e;\n border: 1px solid #000000;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.tox[dir=rtl] .tox-tbtn__icon-rtl svg {\n transform: rotateY(180deg);\n}\n.tox .tox-toolbar__group {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n margin: 0 0;\n padding: 0 4px 0 4px;\n}\n.tox .tox-toolbar__group--pull-right {\n margin-left: auto;\n}\n.tox .tox-toolbar--scrolling .tox-toolbar__group {\n flex-shrink: 0;\n flex-wrap: nowrap;\n}\n.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) {\n border-right: 1px solid #000000;\n}\n.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) {\n border-left: 1px solid #000000;\n}\n.tox .tox-tooltip {\n display: inline-block;\n padding: 8px;\n position: relative;\n}\n.tox .tox-tooltip__body {\n background-color: #3d546f;\n border-radius: 3px;\n box-shadow: 0 2px 4px rgba(42, 55, 70, 0.3);\n color: rgba(255, 255, 255, 0.75);\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n padding: 4px 8px;\n text-transform: none;\n}\n.tox .tox-tooltip__arrow {\n position: absolute;\n}\n.tox .tox-tooltip--down .tox-tooltip__arrow {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-top: 8px solid #3d546f;\n bottom: 0;\n left: 50%;\n position: absolute;\n transform: translateX(-50%);\n}\n.tox .tox-tooltip--up .tox-tooltip__arrow {\n border-bottom: 8px solid #3d546f;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n left: 50%;\n position: absolute;\n top: 0;\n transform: translateX(-50%);\n}\n.tox .tox-tooltip--right .tox-tooltip__arrow {\n border-bottom: 8px solid transparent;\n border-left: 8px solid #3d546f;\n border-top: 8px solid transparent;\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-tooltip--left .tox-tooltip__arrow {\n border-bottom: 8px solid transparent;\n border-right: 8px solid #3d546f;\n border-top: 8px solid transparent;\n left: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-well {\n border: 1px solid #000000;\n border-radius: 3px;\n padding: 8px;\n width: 100%;\n}\n.tox .tox-well > *:first-child {\n margin-top: 0;\n}\n.tox .tox-well > *:last-child {\n margin-bottom: 0;\n}\n.tox .tox-well > *:only-child {\n margin: 0;\n}\n.tox .tox-custom-editor {\n border: 1px solid #000000;\n border-radius: 3px;\n display: flex;\n flex: 1;\n position: relative;\n}\n/* stylelint-disable */\n.tox {\n /* stylelint-enable */\n}\n.tox .tox-dialog-loading::before {\n background-color: rgba(0, 0, 0, 0.5);\n content: \"\";\n height: 100%;\n position: absolute;\n width: 100%;\n z-index: 1000;\n}\n.tox .tox-tab {\n cursor: pointer;\n}\n.tox .tox-dialog__content-js {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-content .tox-collection {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-image-tools-edit-panel {\n height: 60px;\n}\n.tox .tox-image-tools__sidebar {\n height: 60px;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["ui/dark/skin.css"],"names":[],"mappings":";;;;;;AAMA,KACE,WAAY,YACZ,MAAO,QACP,OAAQ,KACR,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,OACb,4BAA6B,YAC7B,gBAAiB,KACjB,YAAa,KACb,eAAgB,KAChB,eAAgB,QAChB,YAAa,OAEf,yBACE,WAAY,QACZ,MAAO,QACP,OAAQ,QACR,UAAW,QACX,YAAa,QACb,UAAW,QACX,WAAY,QACZ,YAAa,QACb,YAAa,QACb,4BAA6B,QAC7B,WAAY,QACZ,gBAAiB,QACjB,YAAa,QACb,eAAgB,QAChB,eAAgB,QAChB,YAAa,QAEf,yBAEE,WAAY,IACZ,OAAQ,EACR,MAAO,KACP,OAAQ,KACR,OAAQ,EACR,UAAW,KACX,QAAS,EACT,QAAS,EACT,SAAU,OACV,MAAO,KAET,oBACE,UAAW,IACX,WAAY,KAEd,cACE,UAAW,IACX,WAAY,MAEd,aACE,OAAQ,IAAI,MAAM,KAClB,cAAe,EACf,WAAY,KACZ,WAAY,WACZ,QAAS,KACT,eAAgB,OAChB,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,SAAU,OACV,SAAU,SACV,WAAY,kBAEd,oBACE,OAAQ,KACR,WAAY,KAEd,uCACE,OAAQ,IAAI,MAAM,KAClB,cAAe,EACf,WAAY,KAEd,iBACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,QAAS,KAEX,oBACA,wBACE,QAAS,EAEX,yBACE,OAAQ,EAEV,kCACE,YAAa,OACb,QAAS,KACT,cAAe,IAEjB,uCACE,YAAa,QACb,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,KACT,gBAAiB,cAEnB,2CACE,eAAgB,IAElB,+CACE,YAAa,OACb,QAAS,KACT,cAAe,IAEjB,oEACE,aAAc,KACd,aAAc,MAEhB,kCACE,WAAY,KAEd,4FACE,iBAAkB,oBAClB,aAAc,QACd,MAAO,KAET,wGACE,aAAc,QAEhB,8EACE,MAAO,KAET,wEACE,KAAM,KAER,sEACE,MAAO,KAET,4FACE,iBAAkB,mBAClB,aAAc,mBACd,MAAO,KAET,wGACE,aAAc,mBAEhB,8EACE,MAAO,KAET,wEACE,KAAM,KAER,sEACE,MAAO,KAET,6FACE,iBAAkB,iBAClB,aAAc,iBACd,MAAO,KAET,yGACE,aAAc,iBAEhB,+EACE,MAAO,KAET,yEACE,KAAM,KAER,uEACE,MAAO,KAET,+FACE,iBAAkB,oBAClB,aAAc,oBACd,MAAO,KAET,2GACE,aAAc,oBAEhB,iFACE,MAAO,KAET,2EACE,KAAM,KAER,yEACE,MAAO,KAET,+DACA,qFACE,WAAY,EAEd,uFACE,YAAa,IAEf,8FACE,YAAa,KAEf,gFACE,QAAS,IAAI,IAAI,IAAI,IAEvB,4FACE,kBAAmB,IACnB,aAAc,IAEhB,iFACE,aAAc,IAEhB,wFACE,aAAc,KAEhB,0EACE,QAAS,IAAI,IAAI,IAAI,IAEvB,sFACE,mBAAoB,IACpB,cAAe,IAEjB,oBACE,QAAS,KACT,KAAM,EAAE,EAAE,KAEZ,cACE,QAAS,KACT,KAAM,EAAE,EAAE,KAEZ,iBACE,iBAAkB,QAClB,iBAAkB,KAClB,oBAAqB,EAAE,EACvB,kBAAmB,OACnB,aAAc,QACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,KACP,OAAQ,QACR,QAAS,aACT,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,YAAa,KACb,OAAQ,EACR,QAAS,EACT,QAAS,IAAI,KACb,WAAY,OACZ,gBAAiB,KACjB,eAAgB,WAChB,YAAa,OAEf,2BACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,qBACP,OAAQ,YAEV,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,uCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,4BACE,iBAAkB,QAClB,iBAAkB,KAClB,oBAAqB,EAAE,EACvB,kBAAmB,OACnB,aAAc,QACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,MAAO,KACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,QAAS,EACT,QAAS,IAAI,KACb,gBAAiB,KACjB,eAAgB,WAElB,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,qBAET,iDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,iDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,kDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,uBACA,kCACA,wDACE,QAAS,IAEX,qCACA,gDACA,sEACE,QAAS,MACT,KAAM,aAER,sBACE,WAAY,EACZ,OAAQ,KACR,WAAY,WACZ,OAAQ,QACR,QAAS,aACT,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,IACb,YAAa,IACb,OAAQ,EACR,QAAS,EACT,YAAa,OAEf,0BACE,UAAW,KAEb,wBACE,iBAAkB,YAClB,aAAc,YACd,WAAY,MACZ,MAAO,KAET,kCACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,qBAET,6CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,6CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,8CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,sCACE,KAAM,aAER,8DACE,MAAO,KAET,mBACE,YAAa,OACb,cAAe,IACf,OAAQ,QACR,QAAS,KACT,OAAQ,KACR,UAAW,KAEb,0BAEE,OAAQ,IACR,SAAU,OACV,SAAU,SACV,IAAK,KACL,MAAO,IAET,0BACE,YAAa,OACb,cAAe,IACf,WAAY,EAAE,EAAE,EAAE,IAAI,YACtB,WAAY,YACZ,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,QAAS,gBACT,MAAO,KAET,4DACE,QAAS,MACT,KAAM,qBAER,gEACE,QAAS,KACT,KAAM,QAER,0DACE,QAAS,KACT,KAAM,QAER,6BACE,MAAO,qBACP,OAAQ,YAEV,kFACE,KAAM,qBAER,oFACE,KAAM,qBAER,wFACE,KAAM,qBAER,8FACE,QAAS,KAEX,4FACE,QAAS,MAEX,oGACE,QAAS,KAEX,wGACE,QAAS,MAEX,0DACE,cAAe,IACf,WAAY,MAAM,EAAE,EAAE,EAAE,IAAI,QAC5B,QAAS,gBAEX,yCACE,YAAa,IAEf,yCACE,KAAM,SAER,2CACE,YAAa,IAEf,mCACE,aAAc,IAEhB,mCACE,MAAO,SAET,qCACE,aAAc,IAKhB,qDACE,QAAS,KACT,QAAS,EAEX,kDACE,QAAS,KACT,UAAW,KACX,WAAY,MACZ,WAAY,OACZ,WAAY,KACZ,QAAS,EAEX,kDACE,oBAAqB,EACrB,aAAc,QACd,kBAAmB,EACnB,mBAAoB,EACpB,aAAc,MACd,iBAAkB,IAClB,QAAS,IAAI,EAEf,8DACE,iBAAkB,EAEpB,oCACE,iBAAkB,KAClB,MAAO,KACP,OAAQ,QACR,UAAW,KACX,WAAY,OACZ,YAAa,IACb,cAAe,IACf,WAAY,KACZ,QAAS,IAAI,IACb,eAAgB,KAChB,sBAAuB,KACvB,oBAAqB,KAClB,iBAAkB,KACjB,gBAAiB,KACb,YAAa,KAEvB,2BACE,YAAa,OACb,MAAO,KACP,OAAQ,QACR,QAAS,KACT,sBAAuB,KACvB,oBAAqB,KAClB,iBAAkB,KACjB,gBAAiB,KACb,YAAa,KAEvB,iDACE,QAAS,IAAI,IAEf,oDACE,cAAe,IACf,QAAS,IAEX,iDACE,cAAe,IACf,QAAS,IAEX,0DACE,iBAAkB,QAClB,MAAO,KAET,yDACE,iBAAkB,QAEpB,6DACE,iBAAkB,QAClB,MAAO,KAET,4DACE,iBAAkB,QAEpB,0DACE,iBAAkB,QAClB,MAAO,KAET,oGACE,iBAAkB,QAClB,MAAO,KAET,oGACE,MAAO,KAET,uGACE,MAAO,KAET,2CACE,iBAAkB,YAClB,MAAO,qBACP,OAAQ,YAGV,qCADA,gCAEE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,MAAO,KAGT,yCADA,oCAEE,KAAM,aAER,4DACE,OAAQ,KACR,MAAO,KAET,iCACE,MAAO,aACP,QAAS,aACT,KAAM,EACN,wBAAyB,KACzB,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,KACb,eAAgB,KAChB,WAAY,UAEd,qCACE,MAAO,qBACP,QAAS,aACT,UAAW,KACX,OAAQ,KACR,YAAa,KACb,eAAgB,KAElB,iCACE,YAAa,OACb,QAAS,KACT,WAAY,KAEd,wCACE,QAAS,GACT,UAAW,EACX,WAAY,QAEd,qCACE,KAAM,KAER,yHACE,QAAS,KAEX,qJACE,QAAS,KAEX,iCACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,QAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBACtB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,OACX,cAAe,EACf,WAAY,KACZ,QAAS,EAEX,wDACE,YAAa,OACb,QAAS,KACT,UAAW,OACX,OAAQ,EACR,QAAS,EAAE,IAEb,uDACE,OAAQ,KACR,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EAAE,IAEb,6DACE,YAAa,OAEf,6DACE,YAAa,IAEf,qCACE,QAAS,KAEX,0CACE,YAAa,OACb,KAAM,EAAE,EAAE,KACV,eAAgB,IAElB,qFACE,aAAc,KAEhB,sFACE,gBAAiB,SACjB,YAAa,KAEf,qFACE,YAAa,WACb,cAAe,KAEjB,wFACE,YAAa,OAEf,wFACE,YAAa,SACb,WAAY,KAEd,6CACE,mBAAoB,OAChB,WAAY,OAChB,KAAM,EAAE,EAAE,KACV,eAAgB,OAElB,wFACE,YAAa,WAEf,yFACE,YAAa,SAEf,wFACE,WAAY,WAEd,2FACE,mBAAoB,OAChB,WAAY,OAElB,2FACE,WAAY,SAEd,0FACE,aAAc,IAAI,MAAM,KAE1B,mFACE,YAAa,IAEf,wGACE,YAAa,IAEf,oDACE,YAAa,KACb,WAAY,MAEd,gEACE,YAAa,KAEf,oFACE,YAAa,IAAI,MAAM,KAEzB,6EACE,aAAc,IAEhB,kGACE,aAAc,IAKhB,4EACE,UAAW,gBAEb,8CACE,aAAc,KACd,WAAY,KAEd,0DACE,aAAc,KACd,UAAW,gBAEb,sEACE,aAAc,IAEhB,iCACE,QAAS,KACT,eAAgB,IAChB,OAAQ,MACR,OAAQ,EAEV,qBACE,WAAY,WACZ,QAAS,KACT,OAAQ,KAEV,8BACE,OAAQ,KAEV,qBACA,8BACE,MAAO,MAET,2BACE,WAAY,IACZ,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,YACZ,OAAQ,KACR,SAAU,SACV,MAAO,KAET,iCACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,OAAQ,KACR,SAAU,SACV,MAAO,KAET,qBACE,WAAY,WACZ,OAAQ,KACR,MAAO,KAET,8BACE,WAAY,4GACZ,OAAQ,KACR,MAAO,KAET,qBACA,8BACE,MAAO,KAET,2BACE,WAAY,KACZ,OAAQ,IAAI,MAAM,KAClB,WAAY,YACZ,OAAQ,IACR,MAAO,KAET,mBACE,QAAS,KACT,eAAgB,OAChB,gBAAiB,cAEnB,uBACE,YAAa,OACb,QAAS,KACT,gBAAiB,cACjB,cAAe,IACf,MAAO,QAET,yBACE,MAAO,IAET,qCAEE,OAAQ,IAAI,MAAM,cAEpB,qCACE,OAAQ,IAAI,MAAM,KAClB,UAAW,EACX,cAAe,EAEjB,oCACE,aAAc,KAEhB,oCACE,aAAc,KAEhB,0CACE,YAAa,KAEf,wCACE,aAAc,KAEhB,8BACE,YAAa,KAEf,8BACE,YAAa,KAEf,oCACE,aAAc,KAEhB,kCACE,YAAa,KAEf,gCAEA,0CADA,yCAEE,OAAQ,IAAI,EAAE,IAAI,IAEpB,qEACE,OAAQ,EACR,OAAQ,KAAK,EAEf,wBACE,QAAS,KAEX,iBACE,OAAQ,KACR,WAAY,UAAU,IAAK,CAAE,WAAW,KACxC,MAAO,KAGT,uBADA,uBAEE,WAAY,EAAE,EAAE,EAAE,IAAI,qBAAyB,MAC/C,UAAW,UAEb,yBACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,kCACE,OAAQ,QAEV,+BACE,YAAa,OACb,iBAAkB,YAClB,OAAQ,EACR,OAAQ,QACR,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,QAAS,EACT,QAAS,EACT,MAAO,KAET,mCACE,OAAQ,KACR,MAAO,KAET,qCACE,WAAY,QAEd,8CACE,YAAa,KAEf,wCACE,aAAc,KAEhB,yBACE,WAAY,QACZ,SAAU,SAEZ,4CACE,WAAY,IAEd,kBACE,WAAY,QACZ,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,EAAE,kBACxB,QAAS,IAAI,IAAI,KAAK,IACtB,SAAU,SAEZ,0BACE,YAAa,OACb,MAAO,KACP,QAAS,KACT,gBAAiB,cAEnB,wBACE,MAAO,qBACP,UAAW,KAEb,wBACE,MAAO,KACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,WAAY,IACZ,SAAU,SACV,eAAgB,QAElB,iCACE,OAAQ,KACR,YAAa,OACb,MAAO,KAET,4BACE,YAAa,IAEf,8BACE,MAAO,qBACP,UAAW,KACX,WAAY,OAEd,0BACE,OAAQ,EAEV,iCACE,YAAa,KACb,WAAY,OAEd,yCACE,WAAY,QACZ,OAAQ,EACR,QAAS,GACT,QAAS,KACT,KAAM,EACN,QAAS,GACT,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,yBACE,QAAS,KACT,YAAa,EACb,UAAW,KACX,gBAAiB,SACjB,WAAY,IAEd,sCACE,cAAe,IACf,MAAO,KAET,wBACE,QAAS,KACT,UAAW,KACX,gBAAiB,SACjB,WAAY,KAEd,mCACE,WAAY,0CACZ,OAAQ,EACR,QAAS,GACT,QAAS,MACT,OAAQ,IACR,WAAY,MACZ,SAAU,SACV,MAAO,KAET,2BACE,WAAY,QACZ,OAAQ,EACR,QAAS,KACT,eAAgB,OAChB,UAAW,EACX,KAAM,EACN,QAAS,GACT,SAAU,SACV,MAAO,EACP,WAAY,OACZ,IAAK,EACL,QAAS,EAEX,gCACE,YAAa,OACb,MAAO,KACP,QAAS,KACT,eAAgB,OAChB,SAAU,SAEZ,oCACE,eAAgB,KAElB,+BACE,OAAQ,EACR,eAAgB,OAChB,UAAW,KACX,KAAM,EACN,QAAS,IACT,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,GAEX,iCACE,iBAAkB,QAClB,WAAY,EAAE,EAAE,IAAI,IAAI,QACxB,MAAO,KACP,WAAY,OAEd,kDACE,UAAW,KAEb,gCACE,YAAa,OACb,iBAAkB,QAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,GAEX,0BACE,QAAS,KACT,eAAgB,OAChB,YAAa,EACb,SAAU,KAEZ,wBACE,OAAQ,IAEV,uCACE,YAAa,IAEf,4DACA,mDACA,oDACE,YAAa,IAEf,iCACE,aAAc,IAEhB,sDACA,6CACA,8CACE,aAAc,IAEhB,eACE,YAAa,OACb,QAAS,KAEX,2BACE,KAAM,qBAER,qBACE,MAAO,qBACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,UAElB,0CACE,aAAc,IAEhB,sDACE,YAAa,IAEf,oCACE,YAAa,IAEf,gDACE,aAAc,IAEhB,sBACE,YAAa,OACb,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,MACV,MAAO,EACP,IAAK,EACL,QAAS,KAEX,gCACE,iBAAkB,mBAClB,OAAQ,EACR,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,wCACE,iBAAkB,QAEpB,iBACE,iBAAkB,QAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,EAAE,KAAK,KAAK,MAAM,kBAAsB,CAAE,EAAE,EAAE,KAAK,IAAI,mBACnE,QAAS,KACT,eAAgB,OAChB,WAAY,KACZ,UAAW,MACX,SAAU,OACV,SAAU,SACV,MAAO,KACP,QAAS,EAEX,yCACE,8CACE,WAAY,WACZ,OAAQ,IAAI,KACZ,MAAO,oBAGX,wBACE,QAAS,KAEX,yBACE,YAAa,OACb,iBAAkB,QAClB,cAAe,KACf,MAAO,KACP,QAAS,KACT,UAAW,KACX,gBAAiB,cACjB,QAAS,IAAI,KAAK,EAAE,KACpB,SAAU,SAEZ,qCACE,QAAS,EAEX,6BACE,OAAQ,KACR,OAAQ,KACR,KAAM,EACN,SAAU,SACV,IAAK,EACL,MAAO,KAET,oCACE,OAAQ,SAEV,0BACE,YAAa,KAEf,wBACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,OAAQ,EACR,eAAgB,KAElB,uBACE,MAAO,KACP,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,UAAW,EACX,WAAY,KACZ,eAAgB,KAElB,yCACE,oDACE,eAAgB,QAGpB,2BACE,YAAa,WACb,QAAS,KACT,eAAgB,OAChB,QAAS,KAAK,KAEhB,yCACE,wDACE,eAAgB,IAChB,2BAA4B,MAC5B,WAAY,KACZ,eAAgB,GAGpB,gCACE,cAAe,IAAI,MAAM,YACzB,MAAO,qBACP,QAAS,aACT,UAAW,KACX,YAAa,IACb,cAAe,IACf,gBAAiB,KACjB,YAAa,OAEf,sCACE,iBAAkB,oBAEpB,wCACE,cAAe,IAAI,MAAM,QACzB,MAAO,QAET,+BACE,WAAY,WACZ,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KACzB,WAAY,MACZ,SAAU,KACV,2BAA4B,MAC5B,QAAS,KAAK,KAEhB,iCACE,cAAe,EACf,WAAY,KAEd,4CACE,WAAY,EAEd,2CACE,cAAe,EAEjB,2CACE,cAAe,EACf,WAAY,EAEd,iCACE,MAAO,QACP,OAAQ,QACR,gBAAiB,KAGnB,uCADA,uCAEE,MAAO,QACP,gBAAiB,KAEnB,wCACE,MAAO,QACP,gBAAiB,KAEnB,mCACE,KAAM,KAER,kCACE,QAAS,MACT,gBAAiB,KACjB,cAAe,KACf,mBAAoB,EACZ,kBAAmB,EAC3B,qBAAsB,EACd,oBAAqB,EAC7B,sBAAuB,OACf,qBAAsB,OAEhC,mDACE,MAAO,KACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,cAAe,KACf,WAAY,KACZ,eAAgB,KAElB,mDACE,MAAO,KACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,cAAe,KACf,WAAY,KACZ,eAAgB,KAElB,kDACE,cAAe,KAEjB,+DACA,+DACA,8DACE,WAAY,EAEd,8DACA,8DACA,6DACE,cAAe,EAEjB,8DACA,8DACA,6DACE,cAAe,EACf,WAAY,EAEd,2BACE,OAAQ,MACR,UAAW,OAEb,2BACE,UAAW,MAEb,qDACE,SAAU,KAEZ,yCACE,WAAY,OAEd,yBACE,YAAa,OACb,iBAAkB,QAClB,WAAY,IAAI,MAAM,KACtB,QAAS,KACT,gBAAiB,cACjB,QAAS,IAAI,KAGf,6BADA,+BAEE,QAAS,KAEX,+BACE,YAAa,OACb,iBAAkB,mBAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,wBACE,gBAAiB,SACjB,MAAO,KAET,iCACE,YAAa,IACb,eAAgB,IAElB,iCACE,cAAe,IAAI,MAAM,KAE3B,4CACE,cAAe,KAEjB,2BACE,eAAgB,IAChB,YAAa,IAEf,yBACE,SAAU,SACV,MAAO,KACP,QAAS,KAEX,8BACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,0CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,wDACE,KAAM,EACN,wBAAyB,KACzB,OAAQ,KAEV,8BACE,QAAS,EACT,WAAY,OAEd,6BACE,QAAS,EACT,WAAY,QAEd,iCACE,WAAY,WAAW,GAAG,OAAO,GAAI,CAAE,QAAQ,IAAK,KAEtD,wDACE,iBAAkB,GAKpB,sCACE,SAAU,iBAEZ,yCACE,uEACE,aAAc,GAGlB,yCACE,8FACE,YAAa,KAIjB,kEADA,oEAEE,YAAa,IAEf,gCACE,WAAY,MAEd,yCACE,iEACE,YAAa,GAGjB,yCACE,wFACE,aAAc,KAIlB,4DADA,8DAEE,aAAc,IAEhB,gCACE,SAAU,OAEZ,6BACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,mBACE,YAAa,OACb,WAAY,KACZ,OAAQ,IAAI,OAAO,KACnB,WAAY,WACZ,QAAS,KACT,eAAgB,OAChB,UAAW,EACX,gBAAiB,OACjB,WAAY,MACZ,QAAS,KAEX,qBACE,MAAO,qBACP,OAAQ,EAAE,EAAE,KAAK,EAEnB,oBACE,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,SAAU,OACV,SAAU,SAEZ,4BACE,iBAAkB,KAClB,OAAQ,EACR,WAAY,WACZ,KAAM,EACN,wBAAyB,KACzB,OAAQ,KACR,SAAU,SACV,MAAO,KAET,0BACE,OAAQ,IAAI,OAAO,KAErB,2BACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,eAAgB,OAChB,SAAU,OAEZ,wBACE,QAAS,EAEX,iDACE,WAAY,KACZ,WAAY,WAAW,IAEzB,oDACA,2CACE,cAAe,KAEjB,uDACE,WAAY,EAAE,IAAI,IAAI,KAAK,gBAE7B,yBACE,QAAS,EACT,WAAY,OAEd,wBACE,QAAS,EACT,WAAY,QAEd,4BACE,WAAY,WAAW,GAAG,OAAO,IAAK,CAAE,QAAQ,KAAM,KAExD,mDACE,iBAAkB,GAEpB,uBACE,KAAM,EACN,SAAU,SAEZ,qGACA,qGACA,iGACE,QAAS,KAEX,2BACE,QAAS,MAEX,yCACE,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,gDACE,KAAM,KAER,gDACE,KAAM,OAER,8CACE,KAAM,MAER,qEACA,qEACA,mEACE,cAAe,KAEjB,wDACE,MAAO,IAET,+DACA,+DACA,6DACE,aAAc,KAEhB,kDACE,KAAM,IAER,wBACE,UAAW,KAEb,kCACE,UAAW,KAEb,qDACE,YAAa,IAEf,sBACE,QAAS,KACT,SAAU,SACV,QAAS,EAEX,qCACE,QAAS,GAEX,2BACE,aAAc,kBACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,OAAQ,KACR,SAAU,SACV,IAAK,IACL,MAAO,KAGT,2DADA,2DAEE,aAAc,QACd,OAAQ,QAEV,mCACE,iBAAkB,gEAAsE,CAAE,iEAAuE,CAAE,gEAAsE,CAAE,kEAC3O,oBAAqB,EAAE,CAAC,CAAE,EAAE,GAAG,CAAE,IAAI,IAAI,CAAE,KAAK,EAChD,gBAAiB,KAAK,KACtB,OAAQ,IAAI,MAAM,QAClB,cAAe,IACf,WAAY,WACZ,QAAS,GACT,OAAQ,KACR,KAAM,KACN,SAAU,SACV,IAAK,KACL,MAAO,KACP,QAAS,GAEX,+CACE,OAAQ,YAKV,oDACE,aAAc,KAEhB,0CACE,KAAM,IAKR,8CACE,cAAe,KAEjB,oCACE,MAAO,IAET,gBACA,wBACE,MAAO,qBACP,QAAS,MACT,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,QAAS,EAAE,IAAI,EAAE,EACjB,eAAgB,KAChB,YAAa,OAEf,wBACE,QAAS,EAAE,IAEb,yBACE,QAAS,EAAE,EAAE,EAAE,IAEjB,eACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,sBACE,WAAY,WACZ,cAAe,IAEjB,+BACE,KAAM,EAER,6BACE,MAAO,KAET,kCACE,QAAS,KAEX,qBACE,QAAS,KACT,eAAgB,IAChB,UAAW,KACX,gBAAiB,cAEnB,4CACE,MAAO,sBAET,4CACE,MAAO,2BAET,4CACE,MAAO,sBAET,iCACE,YAAa,OACb,QAAS,KAEX,8BACE,YAAa,OACb,QAAS,KAEX,iCACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,+CACE,KAAM,EACN,wBAAyB,KAE3B,6CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,2DACE,KAAM,EACN,wBAAyB,KACzB,OAAQ,KAEV,mEACE,YAAa,IAEf,6DACE,aAAc,IAEhB,iDACA,qDACE,QAAS,KAIX,4CACA,mBAHA,oBACA,4BAGE,mBAAoB,KACjB,gBAAiB,KACZ,WAAY,KACpB,iBAAkB,QAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,KACP,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,KACb,OAAQ,EACR,WAAY,KACZ,QAAS,EACT,QAAS,IAAI,OACb,OAAQ,KACR,MAAO,KAGT,6BADA,8BAEE,iBAAkB,QAClB,MAAO,sBACP,OAAQ,YAGV,kDACA,yBAFA,0BAGE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,QAAS,EAEX,4BACE,aAAc,EACd,cAAe,IACf,WAAY,IACZ,UAAW,MAEb,oBACE,iBAAkB,YAClB,OAAQ,EACR,aAAc,YACd,WAAY,MACZ,MAAO,QACP,OAAQ,QACR,QAAS,MACT,OAAQ,EACR,QAAS,EAEX,wBACE,QAAS,MACT,KAAM,KAER,6CACE,YAAa,IAEf,uCACE,aAAc,IAEhB,uBACE,OAAQ,QACR,SAAU,SAEZ,sDACE,iBAAkB,QAClB,MAAO,sBACP,OAAQ,YAEV,gCACE,OAAQ,QACR,KAAM,EACN,OAAQ,EAAE,IAEZ,kCACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KAET,sCACE,KAAM,KAER,4CACE,YAAa,OACb,QAAS,KAEX,0CACE,MAAO,IAET,oCACE,KAAM,IAER,sBACE,OAAQ,QACR,SAAU,SAEZ,6BACE,mBAAoB,KACjB,gBAAiB,KACZ,WAAY,KACpB,iBAAkB,QAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,KACP,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,KACb,OAAQ,EACR,WAAY,KACZ,QAAS,EACT,QAAS,IAAI,OACb,OAAQ,KACR,MAAO,KAET,uCACE,iBAAkB,QAClB,MAAO,sBACP,OAAQ,YAEV,yCACE,QAAS,KAEX,mCACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,QAAS,EAEX,0BACE,eAAgB,KAChB,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,sDACA,sDACE,cAAe,KAEjB,yCACE,MAAO,IAET,gDACA,gDACE,aAAc,KAEhB,mCACE,KAAM,IAER,mBACE,mBAAoB,SACjB,gBAAiB,SACZ,WAAY,SACpB,YAAa,SAEf,gBACE,OAAQ,EACR,OAAQ,KACR,KAAM,EACN,OAAQ,EACR,SAAU,OACV,oBAAqB,KACjB,oBAAqB,KACzB,QAAS,EACT,SAAU,MACV,IAAK,EACL,aAAc,WACd,MAAO,KAET,8DACE,QAAS,KAEX,gCACE,QAAS,KAEX,+BACE,QAAS,KAEX,qCACA,qCACE,QAAS,KAEX,0BACE,WAAY,KACZ,WAAY,IAEd,sBACE,MAAO,KAET,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,6BACE,iBAAkB,KAClB,OAAQ,MACR,SAAU,KACV,SAAU,SACV,MAAO,KAET,6BACA,uDACE,WAAY,IAEd,gCACE,WAAY,wGAEd,2CACE,KAAM,EACN,wBAAyB,KAE3B,yBACE,WAAY,KAEZ,QAAS,GACT,SAAU,SACV,KAAM,EAER,0BACE,OAAQ,IAAI,MAAM,KAClB,OAAQ,KACR,KAAM,EACN,SAAU,SACV,IAAK,EACL,MAAO,KAET,+BACE,OAAQ,EACR,OAAQ,KACR,SAAU,SAEZ,6BACE,aAAc,IAAI,EAAE,EAAE,IACtB,OAAQ,UACR,KAAM,MACN,OAAQ,KAAK,EAAE,EAAE,KACjB,IAAK,MAEP,6BACE,aAAc,IAAI,IAAI,EAAE,EACxB,OAAQ,UACR,KAAM,MACN,OAAQ,KAAK,EAAE,EAAE,MACjB,IAAK,MAEP,6BACE,aAAc,EAAE,EAAE,IAAI,IACtB,OAAQ,UACR,KAAM,MACN,OAAQ,MAAM,IAAI,EAAE,KACpB,IAAK,MAEP,6BACE,aAAc,EAAE,IAAI,IAAI,EACxB,OAAQ,UACR,KAAM,MACN,OAAQ,MAAM,EAAE,EAAE,MAClB,IAAK,MAEP,8EACE,YAAa,IAEf,sEACE,YAAa,KAEf,sEACE,YAAa,KAEf,wEACE,aAAc,IAEhB,gEACE,aAAc,KAEhB,gEACE,aAAc,KAEhB,8BACE,QAAS,KACT,UAAW,KACX,MAAO,MAET,kCACE,aAAc,KACd,aAAc,MACd,aAAc,EAAE,IAAI,IAAI,EACxB,WAAY,WACZ,OAAQ,KACR,MAAO,KAET,2EACE,OAAQ,KAAK,EAEf,iEACE,iBAAkB,oBAClB,aAAc,oBAEhB,qCACE,MAAO,KACP,QAAS,MACT,UAAW,KACX,QAAS,IACT,WAAY,OACZ,MAAO,KAKT,gEACE,aAAc,EAKhB,4DACE,aAAc,EAMhB,eACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,EAAE,kBACxB,QAAS,aACT,SAAU,OACV,eAAgB,IAChB,QAAS,KAEX,mDACE,QAAS,EAEX,sDACE,QAAS,IAEX,mDACE,QAAS,IASX,iCACA,2BARA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,wBAGE,OAAQ,EAEV,kBACE,WAAY,+MAA+M,KAAK,EAAE,IAAI,EAAE,QACxO,iBAAkB,QAClB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,KACX,QAAS,EAAE,IAAI,EAAE,IAEnB,4FACE,WAAY,IAAI,MAAM,KAGxB,eACE,YAAa,OACb,WAAY,IACZ,OAAQ,EACR,cAAe,IACf,WAAY,KACZ,MAAO,KACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,WAAY,OACZ,YAAa,IACb,OAAQ,KACR,gBAAiB,OACjB,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EACT,SAAU,OACV,QAAS,EAAE,IACX,eAAgB,KAChB,MAAO,KAET,yBACE,iBAAkB,YAClB,OAAQ,EACR,WAAY,KACZ,MAAO,qBACP,OAAQ,YAEV,oCACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,uBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,2DACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,6BACE,OAAQ,QACR,YAAa,IACb,OAAQ,EAAE,IAEZ,iDACE,OAAQ,YAEV,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KACP,QAAS,KAEX,uBACE,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,QAAS,SACT,QAAS,KACT,UAAW,KACX,YAAa,IACb,iBAAkB,iBAAkB,KAAK,iBACrC,sBAAuB,iBAAkB,KAAK,iBAClD,WAAY,IACZ,QAAS,EACT,QAAS,IACT,WAAY,UAAU,IAAM,OAAO,CAAE,QAAQ,MAAM,QAErD,yBACE,UAAW,KACX,YAAa,IAEf,yBACE,gBAAiB,UAEnB,2BACE,QAAS,EAEX,gCACE,iBAAkB,QAClB,aAAc,QACd,MAAO,KAET,kCACE,MAAO,KAET,kCACE,MAAO,QAET,oCACE,KAAM,KAER,8BACE,iBAAkB,QAClB,aAAc,QACd,MAAO,KAET,gCACE,MAAO,KAET,gCACE,MAAO,KAET,kCACE,KAAM,KAER,6BACA,gCACE,iBAAkB,QAClB,aAAc,QACd,MAAO,KAET,+BACA,kCACE,MAAO,KAET,+BACA,kCACE,MAAO,KAET,iCACA,oCACE,KAAM,KAER,6BACE,iBAAkB,QAClB,aAAc,QACd,MAAO,KAET,+BACE,MAAO,KAET,+BACE,MAAO,KAET,iCACE,KAAM,KAER,6BACE,mBAAoB,OAChB,WAAY,OAChB,MAAO,KACP,UAAW,KACX,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,WAAY,OACZ,YAAa,OACb,WAAY,UACZ,WAAY,WAEd,+BACE,OAAQ,EAEV,iCACE,WAAY,KAEd,6BACE,mBAAoB,OAChB,WAAY,OAChB,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,IACnB,aAAc,IAEpB,iCACE,QAAS,MAEX,gCACE,mBAAoB,MAChB,WAAY,MAChB,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,IACnB,aAAc,IAEpB,yCACE,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,OACnB,aAAc,OAEpB,cACE,QAAS,aACT,SAAU,SAEZ,wBACE,WAAY,MAAM,IAAK,KAEzB,qCACE,UAAW,OAEb,sBACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBACtB,UAAW,EACX,SAAU,OAEZ,yCACE,OAAQ,IAAI,IAAI,IAAI,IAEtB,mCACE,iBAAkB,YAClB,cAAe,KAGjB,qBADA,sBAEE,aAAc,MACd,QAAS,GACT,QAAS,MACT,OAAQ,EACR,SAAU,SACV,MAAO,EAGT,qCADA,sCAEE,KAAM,IACN,IAAK,KAEP,qCACE,aAAc,QAAQ,YAAY,YAAY,YAC9C,aAAc,IACd,YAAa,KACb,WAAY,KAEd,sCACE,aAAc,KAAQ,YAAY,YAAY,YAC9C,aAAc,IACd,YAAa,KAGf,kCADA,mCAEE,KAAM,IACN,IAAK,EACL,UAAW,kBAEb,kCACE,aAAc,YAAY,YAAY,QAAQ,YAC9C,aAAc,IACd,YAAa,KACb,WAAY,IAEd,mCACE,aAAc,YAAY,YAAY,KAAQ,YAC9C,aAAc,IACd,YAAa,KAGf,mCADA,oCAEE,KAAM,EACN,IAAK,gBACL,UAAW,iBAEb,mCACE,aAAc,YAAY,QAAQ,YAAY,YAC9C,aAAc,IACd,YAAa,MAEf,oCACE,aAAc,YAAY,KAAQ,YAAY,YAC9C,aAAc,KACd,YAAa,MAGf,oCADA,qCAEE,KAAM,KACN,IAAK,gBACL,UAAW,iBAEb,oCACE,aAAc,YAAY,YAAY,YAAY,QAClD,aAAc,IACd,YAAa,KAEf,qCACE,aAAc,YAAY,YAAY,YAAY,KAClD,aAAc,KACd,YAAa,KAGf,yCADA,0CAEE,KAAM,KAGR,0CADA,2CAEE,KAAM,kBAER,uBACE,QAAS,KACT,eAAgB,IAChB,UAAW,EACX,wBAAyB,EACzB,WAAY,EAEd,kBACE,iBAAkB,QAClB,QAAS,KACT,eAAgB,IAChB,gBAAiB,SAEnB,0BACE,QAAS,KACT,SAAU,OAEZ,kCACE,QAAS,KAEX,wBACE,QAAS,KAEX,kCACE,QAAS,EAEX,gCACE,QAAS,EAEX,mCACA,qCACE,WAAY,MAAM,IAAK,IAAI,CAAE,QAAQ,IAAK,KAE5C,mBACE,iBAAkB,QAClB,aAAc,QACd,aAAc,MACd,aAAc,IACd,WAAY,WACZ,QAAS,aACT,OAAQ,KACR,SAAU,SACV,MAAO,KAET,sCACE,OAAQ,KACR,MAAO,KAET,iBACE,YAAa,OACb,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,OAAQ,KACR,gBAAiB,OACjB,SAAU,SAEZ,uBACE,iBAAkB,YAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,OAAQ,KACR,UAAW,MACX,MAAO,KAET,yBACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,QAClB,cAAe,IACf,WAAY,KACZ,OAAQ,KACR,KAAM,IACN,SAAU,SACV,IAAK,IACL,UAAW,iBAAiB,iBAC5B,MAAO,KAET,sBACE,SAAU,KAEZ,kBACE,QAAS,KAEX,sBACE,UAAW,kBAAkB,KAAK,YAAY,GAAG,SAAS,KAC1D,iBAAkB,qBAClB,cAAe,KACf,OAAQ,IACR,MAAO,IAET,mCACE,gBAAiB,MAEnB,mCACE,gBAAiB,MAEnB,6BACE,GAEA,KADA,IAEE,UAAW,SAEb,IACE,UAAW,UAGf,uDACE,YAAa,IAEf,iDACE,aAAc,IAEhB,oBACE,YAAa,OACb,iBAAkB,QAClB,WAAY,IAAI,MAAM,KACtB,MAAO,KACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,YAAa,IACb,OAAQ,KACR,SAAU,OACV,QAAS,EAAE,IACX,SAAU,SACV,eAAgB,UAElB,oCACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,SACjB,SAAU,OAEZ,0BACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,aAAc,KACd,SAAU,OACV,cAAe,SACf,YAAa,OAEf,4BACE,QAAS,OACT,YAAa,OAEf,+BACE,KAAM,EAAE,EAAE,KACV,YAAa,IAEf,sBACA,+BACA,+BACE,MAAO,KACP,gBAAiB,KAKnB,qEAHA,qEAIA,8EAHA,8EAIA,8EAHA,8EAIE,OAAQ,QACR,gBAAiB,UAEnB,mCACE,YAAa,SACb,WAAY,QACZ,OAAQ,YACR,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,SACjB,YAAa,KACb,aAAc,KACd,aAAc,IAEhB,uCACE,QAAS,MACT,KAAM,KAER,2CACE,aAAc,IAEhB,6CACE,YAAa,IAEf,6BACE,eAAgB,YAElB,qCACE,YAAa,IAEf,mBACE,QAAS,KAEX,iCACE,YAAa,OACb,iBAAkB,kBAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EAEP,eACE,YAAa,OACb,WAAY,IACZ,OAAQ,EACR,cAAe,IACf,WAAY,KACZ,MAAO,KACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,WAAY,OACZ,YAAa,IACb,OAAQ,KACR,gBAAiB,OACjB,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EACT,SAAU,OACV,QAAS,EACT,eAAgB,KAChB,MAAO,KAET,mBACE,QAAS,MACT,KAAM,KAER,6BACE,aAAc,IACd,cAAe,IACf,MAAO,QAET,qBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KAEd,qBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,yBACE,KAAM,KAER,sBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAET,0BACE,KAAM,KAER,yBACA,+BACA,wBACA,8BACE,WAAY,IACZ,OAAQ,EACR,WAAY,KACZ,MAAO,qBACP,OAAQ,YAEV,6BACA,mCACA,4BACA,kCAEE,KAAM,qBAER,wBACA,8BACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,KAGT,gCADA,0BAEE,UAAW,KAEb,4BACA,kCAEE,KAAM,KAER,8CACE,MAAO,KAET,kDACE,KAAM,KAER,wBACE,UAAW,KAEb,mBACE,OAAQ,KACR,MAAO,KAET,mBACE,eAAgB,OAChB,OAAQ,KACR,MAAO,KAET,uBACE,mBAAoB,QAChB,WAAY,QAChB,OAAQ,MACR,MAAO,KAET,wBACE,QAAS,EAAE,IACX,MAAO,MAET,uBACE,QAAS,MACT,UAAW,KACX,YAAa,IACb,eAAgB,QAChB,cAAe,IACf,YAAa,OAEf,uBACE,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EAAE,IACX,MAAO,KAET,6BACE,OAAQ,QACR,YAAa,IACb,OAAQ,EAAE,IAEZ,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KAET,mCACE,KAAM,qBAER,gDACE,SAAU,OACV,cAAe,SACf,YAAa,OACb,MAAO,IAET,uBACE,OAAQ,EACR,cAAe,IACf,WAAY,WACZ,QAAS,KACT,OAAQ,IAAI,EAAE,IAAI,EAClB,SAAU,OAEZ,6BACE,WAAY,EAAE,EAAE,EAAE,IAAI,QAAQ,MAEhC,6BACE,WAAY,QACZ,WAAY,KACZ,MAAO,KAET,yBACE,cAAe,EAEjB,gCACE,MAAO,KAET,oCACE,KAAM,qBAER,iCACE,OAAQ,EAEV,gEACE,MAAO,KAET,mDACE,MAAO,KAKT,0DADA,0DADA,gDADA,gDAIE,WAAY,IACZ,WAAY,KACZ,MAAO,qBAET,2BACE,iBAAkB,QAEpB,kBAEA,4BADA,2BAEE,WAAY,+MAA+M,KAAK,EAAE,IAAI,EAAE,QACxO,iBAAkB,QAClB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,KACX,QAAS,EAAE,EAEb,0DACE,OAAQ,EACR,QAAS,EACT,eAAgB,EAChB,YAAa,EACb,WAAY,OAEd,qCACE,WAAY,OAAO,IAAK,IAAI,CAAE,QAAQ,IAAK,OAAO,IAEpD,uCACE,WAAY,QAAQ,IAAK,IAAI,CAAE,OAAO,IAAK,OAAO,GAAI,CAAE,WAAW,GAAG,OAAO,IAE/E,+BACA,8DACE,WAAY,IAAI,MAAM,KACtB,WAAY,KAEd,6BACE,UAAW,OACX,WAAY,KAEd,2BACE,aAAc,EAEhB,8BACE,iBAAkB,KAGpB,mIADA,oGAEE,WAAY,IAAI,MAAM,KAExB,4CACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBAExB,sCACE,UAAW,gBAEb,yBACE,YAAa,OACb,QAAS,KACT,UAAW,KACX,OAAQ,EAAE,EACV,QAAS,EAAE,IAAI,EAAE,IAEnB,qCACE,YAAa,KAEf,iDACE,YAAa,EACb,UAAW,OAEb,2DACE,aAAc,IAAI,MAAM,KAE1B,qDACE,YAAa,IAAI,MAAM,KAEzB,kBACE,QAAS,aACT,QAAS,IACT,SAAU,SAEZ,wBACE,iBAAkB,QAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,kBACtB,MAAO,sBACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,QAAS,IAAI,IACb,eAAgB,KAElB,yBACE,SAAU,SAEZ,4CACE,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,WAAY,IAAI,MAAM,QACtB,OAAQ,EACR,KAAM,IACN,SAAU,SACV,UAAW,iBAEb,0CACE,cAAe,IAAI,MAAM,QACzB,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,KAAM,IACN,SAAU,SACV,IAAK,EACL,UAAW,iBAEb,6CACE,cAAe,IAAI,MAAM,YACzB,YAAa,IAAI,MAAM,QACvB,WAAY,IAAI,MAAM,YACtB,SAAU,SACV,MAAO,EACP,IAAK,IACL,UAAW,iBAEb,4CACE,cAAe,IAAI,MAAM,YACzB,aAAc,IAAI,MAAM,QACxB,WAAY,IAAI,MAAM,YACtB,KAAM,EACN,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,eACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,IACT,MAAO,KAET,4BACE,WAAY,EAEd,2BACE,cAAe,EAEjB,2BACE,OAAQ,EAEV,wBACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,KACT,KAAM,EACN,SAAU,SAMZ,iCACE,iBAAkB,eAClB,QAAS,GACT,OAAQ,KACR,SAAU,SACV,MAAO,KACP,QAAS,KAEX,cACE,OAAQ,QAEV,6BACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,+CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,iCACE,OAAQ,KAEV,+BACE,OAAQ","file":"skin.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n.tox {\n box-sizing: content-box;\n color: #2A3746;\n cursor: auto;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: normal;\n -webkit-tap-highlight-color: transparent;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n vertical-align: initial;\n white-space: normal;\n}\n.tox *:not(svg):not(rect) {\n box-sizing: inherit;\n color: inherit;\n cursor: inherit;\n direction: inherit;\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-tap-highlight-color: inherit;\n text-align: inherit;\n text-decoration: inherit;\n text-shadow: inherit;\n text-transform: inherit;\n vertical-align: inherit;\n white-space: inherit;\n}\n.tox *:not(svg):not(rect) {\n /* stylelint-disable-line no-duplicate-selectors */\n background: transparent;\n border: 0;\n float: none;\n height: auto;\n margin: 0;\n max-width: none;\n outline: 0;\n padding: 0;\n position: static;\n width: auto;\n}\n.tox:not([dir=rtl]) {\n direction: ltr;\n text-align: left;\n}\n.tox[dir=rtl] {\n direction: rtl;\n text-align: right;\n}\n.tox-tinymce {\n border: 1px solid #000000;\n border-radius: 0;\n box-shadow: none;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n overflow: hidden;\n position: relative;\n visibility: inherit !important;\n}\n.tox-tinymce-inline {\n border: none;\n box-shadow: none;\n}\n.tox-tinymce-inline .tox-editor-header {\n border: 1px solid #000000;\n border-radius: 0;\n box-shadow: none;\n}\n.tox-tinymce-aux {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n z-index: 1300;\n}\n.tox-tinymce *:focus,\n.tox-tinymce-aux *:focus {\n outline: none;\n}\nbutton::-moz-focus-inner {\n border: 0;\n}\n.tox .accessibility-issue__header {\n align-items: center;\n display: flex;\n margin-bottom: 4px;\n}\n.tox .accessibility-issue__description {\n align-items: stretch;\n border: 1px solid #000000;\n border-radius: 3px;\n display: flex;\n justify-content: space-between;\n}\n.tox .accessibility-issue__description > div {\n padding-bottom: 4px;\n}\n.tox .accessibility-issue__description > div > div {\n align-items: center;\n display: flex;\n margin-bottom: 4px;\n}\n.tox .accessibility-issue__description > *:last-child:not(:only-child) {\n border-color: #000000;\n border-style: solid;\n}\n.tox .accessibility-issue__repair {\n margin-top: 16px;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description {\n background-color: rgba(32, 122, 183, 0.5);\n border-color: #207ab7;\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child {\n border-color: #207ab7;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description {\n background-color: rgba(255, 165, 0, 0.5);\n border-color: rgba(255, 165, 0, 0.8);\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child {\n border-color: rgba(255, 165, 0, 0.8);\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description {\n background-color: rgba(204, 0, 0, 0.5);\n border-color: rgba(204, 0, 0, 0.8);\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child {\n border-color: rgba(204, 0, 0, 0.8);\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description {\n background-color: rgba(120, 171, 70, 0.5);\n border-color: rgba(120, 171, 70, 0.8);\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child {\n border-color: rgba(120, 171, 70, 0.8);\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon {\n color: #fff;\n}\n.tox .tox-dialog__body-content .accessibility-issue__header h1,\n.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {\n margin-top: 0;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {\n margin-left: auto;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description {\n padding: 4px 4px 4px 8px;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child {\n border-left-width: 1px;\n padding-left: 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {\n margin-right: auto;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description {\n padding: 4px 8px 4px 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child {\n border-right-width: 1px;\n padding-right: 4px;\n}\n.tox .tox-anchorbar {\n display: flex;\n flex: 0 0 auto;\n}\n.tox .tox-bar {\n display: flex;\n flex: 0 0 auto;\n}\n.tox .tox-button {\n background-color: #207ab7;\n background-image: none;\n background-position: 0 0;\n background-repeat: repeat;\n border-color: #207ab7;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #fff;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n line-height: 24px;\n margin: 0;\n outline: none;\n padding: 4px 16px;\n text-align: center;\n text-decoration: none;\n text-transform: capitalize;\n white-space: nowrap;\n}\n.tox .tox-button[disabled] {\n background-color: #207ab7;\n background-image: none;\n border-color: #207ab7;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-button:focus:not(:disabled) {\n background-color: #1c6ca1;\n background-image: none;\n border-color: #1c6ca1;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button:hover:not(:disabled) {\n background-color: #1c6ca1;\n background-image: none;\n border-color: #1c6ca1;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button:active:not(:disabled) {\n background-color: #185d8c;\n background-image: none;\n border-color: #185d8c;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--secondary {\n background-color: #3d546f;\n background-image: none;\n background-position: 0 0;\n background-repeat: repeat;\n border-color: #3d546f;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n color: #fff;\n font-size: 14px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n outline: none;\n padding: 4px 16px;\n text-decoration: none;\n text-transform: capitalize;\n}\n.tox .tox-button--secondary[disabled] {\n background-color: #3d546f;\n background-image: none;\n border-color: #3d546f;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-button--secondary:focus:not(:disabled) {\n background-color: #34485f;\n background-image: none;\n border-color: #34485f;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--secondary:hover:not(:disabled) {\n background-color: #34485f;\n background-image: none;\n border-color: #34485f;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--secondary:active:not(:disabled) {\n background-color: #2b3b4e;\n background-image: none;\n border-color: #2b3b4e;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--icon,\n.tox .tox-button.tox-button--icon,\n.tox .tox-button.tox-button--secondary.tox-button--icon {\n padding: 4px;\n}\n.tox .tox-button--icon .tox-icon svg,\n.tox .tox-button.tox-button--icon .tox-icon svg,\n.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {\n display: block;\n fill: currentColor;\n}\n.tox .tox-button-link {\n background: 0;\n border: none;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n font-weight: normal;\n line-height: 1.3;\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n.tox .tox-button-link--sm {\n font-size: 14px;\n}\n.tox .tox-button--naked {\n background-color: transparent;\n border-color: transparent;\n box-shadow: unset;\n color: #fff;\n}\n.tox .tox-button--naked[disabled] {\n background-color: #3d546f;\n border-color: #3d546f;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-button--naked:hover:not(:disabled) {\n background-color: #34485f;\n border-color: #34485f;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--naked:focus:not(:disabled) {\n background-color: #34485f;\n border-color: #34485f;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--naked:active:not(:disabled) {\n background-color: #2b3b4e;\n border-color: #2b3b4e;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--naked .tox-icon svg {\n fill: currentColor;\n}\n.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {\n color: #fff;\n}\n.tox .tox-checkbox {\n align-items: center;\n border-radius: 3px;\n cursor: pointer;\n display: flex;\n height: 36px;\n min-width: 36px;\n}\n.tox .tox-checkbox__input {\n /* Hide from view but visible to screen readers */\n height: 1px;\n overflow: hidden;\n position: absolute;\n top: auto;\n width: 1px;\n}\n.tox .tox-checkbox__icons {\n align-items: center;\n border-radius: 3px;\n box-shadow: 0 0 0 2px transparent;\n box-sizing: content-box;\n display: flex;\n height: 24px;\n justify-content: center;\n padding: calc(4px - 1px);\n width: 24px;\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: block;\n fill: rgba(255, 255, 255, 0.2);\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n display: none;\n fill: #207ab7;\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n display: none;\n fill: #207ab7;\n}\n.tox .tox-checkbox--disabled {\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: none;\n}\n.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n display: block;\n}\n.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: none;\n}\n.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n display: block;\n}\n.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {\n border-radius: 3px;\n box-shadow: inset 0 0 0 1px #207ab7;\n padding: calc(4px - 1px);\n}\n.tox:not([dir=rtl]) .tox-checkbox__label {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-checkbox__input {\n left: -10000px;\n}\n.tox:not([dir=rtl]) .tox-bar .tox-checkbox {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-checkbox__label {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-checkbox__input {\n right: -10000px;\n}\n.tox[dir=rtl] .tox-bar .tox-checkbox {\n margin-right: 4px;\n}\n.tox {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox .tox-collection--toolbar .tox-collection__group {\n display: flex;\n padding: 0;\n}\n.tox .tox-collection--grid .tox-collection__group {\n display: flex;\n flex-wrap: wrap;\n max-height: 208px;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 0;\n}\n.tox .tox-collection--list .tox-collection__group {\n border-bottom-width: 0;\n border-color: #1a1a1a;\n border-left-width: 0;\n border-right-width: 0;\n border-style: solid;\n border-top-width: 1px;\n padding: 4px 0;\n}\n.tox .tox-collection--list .tox-collection__group:first-child {\n border-top-width: 0;\n}\n.tox .tox-collection__group-heading {\n background-color: #333333;\n color: #fff;\n cursor: default;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n margin-bottom: 4px;\n margin-top: -4px;\n padding: 4px 8px;\n text-transform: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.tox .tox-collection__item {\n align-items: center;\n color: #fff;\n cursor: pointer;\n display: flex;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.tox .tox-collection--list .tox-collection__item {\n padding: 4px 8px;\n}\n.tox .tox-collection--toolbar .tox-collection__item {\n border-radius: 3px;\n padding: 4px;\n}\n.tox .tox-collection--grid .tox-collection__item {\n border-radius: 3px;\n padding: 4px;\n}\n.tox .tox-collection--list .tox-collection__item--enabled {\n background-color: #2b3b4e;\n color: #fff;\n}\n.tox .tox-collection--list .tox-collection__item--active {\n background-color: #4a5562;\n}\n.tox .tox-collection--toolbar .tox-collection__item--enabled {\n background-color: #757d87;\n color: #fff;\n}\n.tox .tox-collection--toolbar .tox-collection__item--active {\n background-color: #4a5562;\n}\n.tox .tox-collection--grid .tox-collection__item--enabled {\n background-color: #757d87;\n color: #fff;\n}\n.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n background-color: #4a5562;\n color: #fff;\n}\n.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n color: #fff;\n}\n.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n color: #fff;\n}\n.tox .tox-collection__item--state-disabled {\n background-color: transparent;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-collection__item-icon,\n.tox .tox-collection__item-checkmark {\n align-items: center;\n display: flex;\n height: 24px;\n justify-content: center;\n width: 24px;\n}\n.tox .tox-collection__item-icon svg,\n.tox .tox-collection__item-checkmark svg {\n fill: currentColor;\n}\n.tox .tox-collection--toolbar-lg .tox-collection__item-icon {\n height: 48px;\n width: 48px;\n}\n.tox .tox-collection__item-label {\n color: currentColor;\n display: inline-block;\n flex: 1;\n -ms-flex-preferred-size: auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 24px;\n text-transform: none;\n word-break: break-all;\n}\n.tox .tox-collection__item-accessory {\n color: rgba(255, 255, 255, 0.5);\n display: inline-block;\n font-size: 14px;\n height: 24px;\n line-height: 24px;\n text-transform: none;\n}\n.tox .tox-collection__item-caret {\n align-items: center;\n display: flex;\n min-height: 24px;\n}\n.tox .tox-collection__item-caret::after {\n content: '';\n font-size: 0;\n min-height: inherit;\n}\n.tox .tox-collection__item-caret svg {\n fill: #fff;\n}\n.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {\n display: none;\n}\n.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark {\n display: none;\n}\n.tox .tox-collection--horizontal {\n background-color: #2b3b4e;\n border: 1px solid #1a1a1a;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: nowrap;\n margin-bottom: 0;\n overflow-x: auto;\n padding: 0;\n}\n.tox .tox-collection--horizontal .tox-collection__group {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n margin: 0;\n padding: 0 4px;\n}\n.tox .tox-collection--horizontal .tox-collection__item {\n height: 34px;\n margin: 2px 0 3px 0;\n padding: 0 4px;\n}\n.tox .tox-collection--horizontal .tox-collection__item-label {\n white-space: nowrap;\n}\n.tox .tox-collection--horizontal .tox-collection__item-caret {\n margin-left: 4px;\n}\n.tox .tox-collection__item-container {\n display: flex;\n}\n.tox .tox-collection__item-container--row {\n align-items: center;\n flex: 1 1 auto;\n flex-direction: row;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--align-left {\n margin-right: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--align-right {\n justify-content: flex-end;\n margin-left: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top {\n align-items: flex-start;\n margin-bottom: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle {\n align-items: center;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom {\n align-items: flex-end;\n margin-top: auto;\n}\n.tox .tox-collection__item-container--column {\n -ms-grid-row-align: center;\n align-self: center;\n flex: 1 1 auto;\n flex-direction: column;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--align-left {\n align-items: flex-start;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--align-right {\n align-items: flex-end;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top {\n align-self: flex-start;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle {\n -ms-grid-row-align: center;\n align-self: center;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom {\n align-self: flex-end;\n}\n.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {\n border-right: 1px solid #000000;\n}\n.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-collection__item-accessory {\n margin-left: 16px;\n text-align: right;\n}\n.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret {\n margin-left: 16px;\n}\n.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {\n border-left: 1px solid #000000;\n}\n.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-collection__item-icon-rtl {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg {\n transform: rotateY(180deg);\n}\n.tox[dir=rtl] .tox-collection__item-accessory {\n margin-right: 16px;\n text-align: left;\n}\n.tox[dir=rtl] .tox-collection .tox-collection__item-caret {\n margin-right: 16px;\n transform: rotateY(180deg);\n}\n.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret {\n margin-right: 4px;\n}\n.tox .tox-color-picker-container {\n display: flex;\n flex-direction: row;\n height: 225px;\n margin: 0;\n}\n.tox .tox-sv-palette {\n box-sizing: border-box;\n display: flex;\n height: 100%;\n}\n.tox .tox-sv-palette-spectrum {\n height: 100%;\n}\n.tox .tox-sv-palette,\n.tox .tox-sv-palette-spectrum {\n width: 225px;\n}\n.tox .tox-sv-palette-thumb {\n background: none;\n border: 1px solid black;\n border-radius: 50%;\n box-sizing: content-box;\n height: 12px;\n position: absolute;\n width: 12px;\n}\n.tox .tox-sv-palette-inner-thumb {\n border: 1px solid white;\n border-radius: 50%;\n height: 10px;\n position: absolute;\n width: 10px;\n}\n.tox .tox-hue-slider {\n box-sizing: border-box;\n height: 100%;\n width: 25px;\n}\n.tox .tox-hue-slider-spectrum {\n background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);\n height: 100%;\n width: 100%;\n}\n.tox .tox-hue-slider,\n.tox .tox-hue-slider-spectrum {\n width: 20px;\n}\n.tox .tox-hue-slider-thumb {\n background: white;\n border: 1px solid black;\n box-sizing: content-box;\n height: 4px;\n width: 100%;\n}\n.tox .tox-rgb-form {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.tox .tox-rgb-form div {\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 5px;\n width: inherit;\n}\n.tox .tox-rgb-form input {\n width: 6em;\n}\n.tox .tox-rgb-form input.tox-invalid {\n /* Need !important to override Chrome's focus styling unfortunately */\n border: 1px solid red !important;\n}\n.tox .tox-rgb-form .tox-rgba-preview {\n border: 1px solid black;\n flex-grow: 2;\n margin-bottom: 0;\n}\n.tox:not([dir=rtl]) .tox-sv-palette {\n margin-right: 15px;\n}\n.tox:not([dir=rtl]) .tox-hue-slider {\n margin-right: 15px;\n}\n.tox:not([dir=rtl]) .tox-hue-slider-thumb {\n margin-left: -1px;\n}\n.tox:not([dir=rtl]) .tox-rgb-form label {\n margin-right: 0.5em;\n}\n.tox[dir=rtl] .tox-sv-palette {\n margin-left: 15px;\n}\n.tox[dir=rtl] .tox-hue-slider {\n margin-left: 15px;\n}\n.tox[dir=rtl] .tox-hue-slider-thumb {\n margin-right: -1px;\n}\n.tox[dir=rtl] .tox-rgb-form label {\n margin-left: 0.5em;\n}\n.tox .tox-toolbar .tox-swatches,\n.tox .tox-toolbar__primary .tox-swatches,\n.tox .tox-toolbar__overflow .tox-swatches {\n margin: 2px 0 3px 4px;\n}\n.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {\n border: 0;\n margin: -4px 0;\n}\n.tox .tox-swatches__row {\n display: flex;\n}\n.tox .tox-swatch {\n height: 30px;\n transition: transform 0.15s, box-shadow 0.15s;\n width: 30px;\n}\n.tox .tox-swatch:hover,\n.tox .tox-swatch:focus {\n box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;\n transform: scale(0.8);\n}\n.tox .tox-swatch--remove {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.tox .tox-swatch--remove svg path {\n stroke: #e74c3c;\n}\n.tox .tox-swatches__picker-btn {\n align-items: center;\n background-color: transparent;\n border: 0;\n cursor: pointer;\n display: flex;\n height: 30px;\n justify-content: center;\n outline: none;\n padding: 0;\n width: 30px;\n}\n.tox .tox-swatches__picker-btn svg {\n height: 24px;\n width: 24px;\n}\n.tox .tox-swatches__picker-btn:hover {\n background: #4a5562;\n}\n.tox:not([dir=rtl]) .tox-swatches__picker-btn {\n margin-left: auto;\n}\n.tox[dir=rtl] .tox-swatches__picker-btn {\n margin-right: auto;\n}\n.tox .tox-comment-thread {\n background: #2b3b4e;\n position: relative;\n}\n.tox .tox-comment-thread > *:not(:first-child) {\n margin-top: 8px;\n}\n.tox .tox-comment {\n background: #2b3b4e;\n border: 1px solid #000000;\n border-radius: 3px;\n box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);\n padding: 8px 8px 16px 8px;\n position: relative;\n}\n.tox .tox-comment__header {\n align-items: center;\n color: #fff;\n display: flex;\n justify-content: space-between;\n}\n.tox .tox-comment__date {\n color: rgba(255, 255, 255, 0.5);\n font-size: 12px;\n}\n.tox .tox-comment__body {\n color: #fff;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n margin-top: 8px;\n position: relative;\n text-transform: initial;\n}\n.tox .tox-comment__body textarea {\n resize: none;\n white-space: normal;\n width: 100%;\n}\n.tox .tox-comment__expander {\n padding-top: 8px;\n}\n.tox .tox-comment__expander p {\n color: rgba(255, 255, 255, 0.5);\n font-size: 14px;\n font-style: normal;\n}\n.tox .tox-comment__body p {\n margin: 0;\n}\n.tox .tox-comment__buttonspacing {\n padding-top: 16px;\n text-align: center;\n}\n.tox .tox-comment-thread__overlay::after {\n background: #2b3b4e;\n bottom: 0;\n content: \"\";\n display: flex;\n left: 0;\n opacity: 0.9;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 5;\n}\n.tox .tox-comment__reply {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-top: 8px;\n}\n.tox .tox-comment__reply > *:first-child {\n margin-bottom: 8px;\n width: 100%;\n}\n.tox .tox-comment__edit {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-top: 16px;\n}\n.tox .tox-comment__gradient::after {\n background: linear-gradient(rgba(43, 59, 78, 0), #2b3b4e);\n bottom: 0;\n content: \"\";\n display: block;\n height: 5em;\n margin-top: -40px;\n position: absolute;\n width: 100%;\n}\n.tox .tox-comment__overlay {\n background: #2b3b4e;\n bottom: 0;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n left: 0;\n opacity: 0.9;\n position: absolute;\n right: 0;\n text-align: center;\n top: 0;\n z-index: 5;\n}\n.tox .tox-comment__loading-text {\n align-items: center;\n color: #fff;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n.tox .tox-comment__loading-text > div {\n padding-bottom: 16px;\n}\n.tox .tox-comment__overlaytext {\n bottom: 0;\n flex-direction: column;\n font-size: 14px;\n left: 0;\n padding: 1em;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 10;\n}\n.tox .tox-comment__overlaytext p {\n background-color: #2b3b4e;\n box-shadow: 0 0 8px 8px #2b3b4e;\n color: #fff;\n text-align: center;\n}\n.tox .tox-comment__overlaytext div:nth-of-type(2) {\n font-size: 0.8em;\n}\n.tox .tox-comment__busy-spinner {\n align-items: center;\n background-color: #2b3b4e;\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 20;\n}\n.tox .tox-comment__scroll {\n display: flex;\n flex-direction: column;\n flex-shrink: 1;\n overflow: auto;\n}\n.tox .tox-conversations {\n margin: 8px;\n}\n.tox:not([dir=rtl]) .tox-comment__edit {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child,\n.tox:not([dir=rtl]) .tox-comment__edit > *:last-child,\n.tox:not([dir=rtl]) .tox-comment__reply > *:last-child {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-comment__edit {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child,\n.tox[dir=rtl] .tox-comment__edit > *:last-child,\n.tox[dir=rtl] .tox-comment__reply > *:last-child {\n margin-right: 8px;\n}\n.tox .tox-user {\n align-items: center;\n display: flex;\n}\n.tox .tox-user__avatar svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-user__name {\n color: rgba(255, 255, 255, 0.5);\n font-size: 12px;\n font-style: normal;\n font-weight: bold;\n text-transform: uppercase;\n}\n.tox:not([dir=rtl]) .tox-user__avatar svg {\n margin-right: 8px;\n}\n.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-user__avatar svg {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-user__avatar + .tox-user__name {\n margin-right: 8px;\n}\n.tox .tox-dialog-wrap {\n align-items: center;\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n z-index: 1100;\n}\n.tox .tox-dialog-wrap__backdrop {\n background-color: rgba(34, 47, 62, 0.75);\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 1;\n}\n.tox .tox-dialog-wrap__backdrop--opaque {\n background-color: #222f3e;\n}\n.tox .tox-dialog {\n background-color: #2b3b4e;\n border-color: #000000;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: 0 16px 16px -10px rgba(42, 55, 70, 0.15), 0 0 40px 1px rgba(42, 55, 70, 0.15);\n display: flex;\n flex-direction: column;\n max-height: 100%;\n max-width: 480px;\n overflow: hidden;\n position: relative;\n width: 95vw;\n z-index: 2;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog {\n align-self: flex-start;\n margin: 8px auto;\n width: calc(100vw - 16px);\n }\n}\n.tox .tox-dialog-inline {\n z-index: 1100;\n}\n.tox .tox-dialog__header {\n align-items: center;\n background-color: #2b3b4e;\n border-bottom: none;\n color: #fff;\n display: flex;\n font-size: 16px;\n justify-content: space-between;\n padding: 8px 16px 0 16px;\n position: relative;\n}\n.tox .tox-dialog__header .tox-button {\n z-index: 1;\n}\n.tox .tox-dialog__draghandle {\n cursor: grab;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tox .tox-dialog__draghandle:active {\n cursor: grabbing;\n}\n.tox .tox-dialog__dismiss {\n margin-left: auto;\n}\n.tox .tox-dialog__title {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 20px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n margin: 0;\n text-transform: none;\n}\n.tox .tox-dialog__body {\n color: #fff;\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n min-width: 0;\n text-align: left;\n text-transform: none;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog__body {\n flex-direction: column;\n }\n}\n.tox .tox-dialog__body-nav {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 16px 16px;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {\n flex-direction: row;\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n padding-bottom: 0;\n }\n}\n.tox .tox-dialog__body-nav-item {\n border-bottom: 2px solid transparent;\n color: rgba(255, 255, 255, 0.5);\n display: inline-block;\n font-size: 14px;\n line-height: 1.3;\n margin-bottom: 8px;\n text-decoration: none;\n white-space: nowrap;\n}\n.tox .tox-dialog__body-nav-item:focus {\n background-color: rgba(32, 122, 183, 0.1);\n}\n.tox .tox-dialog__body-nav-item--active {\n border-bottom: 2px solid #207ab7;\n color: #207ab7;\n}\n.tox .tox-dialog__body-content {\n box-sizing: border-box;\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n max-height: 650px;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n padding: 16px 16px;\n}\n.tox .tox-dialog__body-content > * {\n margin-bottom: 0;\n margin-top: 16px;\n}\n.tox .tox-dialog__body-content > *:first-child {\n margin-top: 0;\n}\n.tox .tox-dialog__body-content > *:last-child {\n margin-bottom: 0;\n}\n.tox .tox-dialog__body-content > *:only-child {\n margin-bottom: 0;\n margin-top: 0;\n}\n.tox .tox-dialog__body-content a {\n color: #207ab7;\n cursor: pointer;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content a:hover,\n.tox .tox-dialog__body-content a:focus {\n color: #185d8c;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content a:active {\n color: #185d8c;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content svg {\n fill: #fff;\n}\n.tox .tox-dialog__body-content ul {\n display: block;\n list-style-type: disc;\n margin-bottom: 16px;\n -webkit-margin-end: 0;\n margin-inline-end: 0;\n -webkit-margin-start: 0;\n margin-inline-start: 0;\n -webkit-padding-start: 2.5rem;\n padding-inline-start: 2.5rem;\n}\n.tox .tox-dialog__body-content .tox-form__group h1 {\n color: #fff;\n font-size: 20px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n margin-bottom: 16px;\n margin-top: 2rem;\n text-transform: none;\n}\n.tox .tox-dialog__body-content .tox-form__group h2 {\n color: #fff;\n font-size: 16px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n margin-bottom: 16px;\n margin-top: 2rem;\n text-transform: none;\n}\n.tox .tox-dialog__body-content .tox-form__group p {\n margin-bottom: 16px;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:first-child,\n.tox .tox-dialog__body-content .tox-form__group h2:first-child,\n.tox .tox-dialog__body-content .tox-form__group p:first-child {\n margin-top: 0;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:last-child,\n.tox .tox-dialog__body-content .tox-form__group h2:last-child,\n.tox .tox-dialog__body-content .tox-form__group p:last-child {\n margin-bottom: 0;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:only-child,\n.tox .tox-dialog__body-content .tox-form__group h2:only-child,\n.tox .tox-dialog__body-content .tox-form__group p:only-child {\n margin-bottom: 0;\n margin-top: 0;\n}\n.tox .tox-dialog--width-lg {\n height: 650px;\n max-width: 1200px;\n}\n.tox .tox-dialog--width-md {\n max-width: 800px;\n}\n.tox .tox-dialog--width-md .tox-dialog__body-content {\n overflow: auto;\n}\n.tox .tox-dialog__body-content--centered {\n text-align: center;\n}\n.tox .tox-dialog__footer {\n align-items: center;\n background-color: #2b3b4e;\n border-top: 1px solid #000000;\n display: flex;\n justify-content: space-between;\n padding: 8px 16px;\n}\n.tox .tox-dialog__footer-start,\n.tox .tox-dialog__footer-end {\n display: flex;\n}\n.tox .tox-dialog__busy-spinner {\n align-items: center;\n background-color: rgba(34, 47, 62, 0.75);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 3;\n}\n.tox .tox-dialog__table {\n border-collapse: collapse;\n width: 100%;\n}\n.tox .tox-dialog__table thead th {\n font-weight: bold;\n padding-bottom: 8px;\n}\n.tox .tox-dialog__table tbody tr {\n border-bottom: 1px solid #000000;\n}\n.tox .tox-dialog__table tbody tr:last-child {\n border-bottom: none;\n}\n.tox .tox-dialog__table td {\n padding-bottom: 8px;\n padding-top: 8px;\n}\n.tox .tox-dialog__popups {\n position: absolute;\n width: 100%;\n z-index: 1100;\n}\n.tox .tox-dialog__body-iframe {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-iframe .tox-navobj {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n}\n.tox .tox-dialog-dock-fadeout {\n opacity: 0;\n visibility: hidden;\n}\n.tox .tox-dialog-dock-fadein {\n opacity: 1;\n visibility: visible;\n}\n.tox .tox-dialog-dock-transition {\n transition: visibility 0s linear 0.3s, opacity 0.3s ease;\n}\n.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {\n transition-delay: 0s;\n}\n.tox.tox-platform-ie {\n /* IE11 CSS styles go here */\n}\n.tox.tox-platform-ie .tox-dialog-wrap {\n position: -ms-device-fixed;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav {\n margin-right: 0;\n }\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) {\n margin-left: 8px;\n }\n}\n.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *,\n.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-dialog__body {\n text-align: right;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav {\n margin-left: 0;\n }\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) {\n margin-right: 8px;\n }\n}\n.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *,\n.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * {\n margin-right: 8px;\n}\nbody.tox-dialog__disable-scroll {\n overflow: hidden;\n}\n.tox .tox-dropzone-container {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dropzone {\n align-items: center;\n background: #fff;\n border: 2px dashed #000000;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n justify-content: center;\n min-height: 100px;\n padding: 10px;\n}\n.tox .tox-dropzone p {\n color: rgba(255, 255, 255, 0.5);\n margin: 0 0 16px 0;\n}\n.tox .tox-edit-area {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n overflow: hidden;\n position: relative;\n}\n.tox .tox-edit-area__iframe {\n background-color: #fff;\n border: 0;\n box-sizing: border-box;\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n position: absolute;\n width: 100%;\n}\n.tox.tox-inline-edit-area {\n border: 1px dotted #000000;\n}\n.tox .tox-editor-container {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n overflow: hidden;\n}\n.tox .tox-editor-header {\n z-index: 1;\n}\n.tox:not(.tox-tinymce-inline) .tox-editor-header {\n box-shadow: none;\n transition: box-shadow 0.5s;\n}\n.tox.tox-tinymce--toolbar-bottom .tox-editor-header,\n.tox.tox-tinymce-inline .tox-editor-header {\n margin-bottom: -1px;\n}\n.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {\n box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);\n}\n.tox-editor-dock-fadeout {\n opacity: 0;\n visibility: hidden;\n}\n.tox-editor-dock-fadein {\n opacity: 1;\n visibility: visible;\n}\n.tox-editor-dock-transition {\n transition: visibility 0s linear 0.25s, opacity 0.25s ease;\n}\n.tox-editor-dock-transition.tox-editor-dock-fadein {\n transition-delay: 0s;\n}\n.tox .tox-control-wrap {\n flex: 1;\n position: relative;\n}\n.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,\n.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,\n.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {\n display: none;\n}\n.tox .tox-control-wrap svg {\n display: block;\n}\n.tox .tox-control-wrap__status-icon-wrap {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-control-wrap__status-icon-invalid svg {\n fill: #c00;\n}\n.tox .tox-control-wrap__status-icon-unknown svg {\n fill: orange;\n}\n.tox .tox-control-wrap__status-icon-valid svg {\n fill: green;\n}\n.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,\n.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,\n.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield {\n padding-right: 32px;\n}\n.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap {\n right: 4px;\n}\n.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,\n.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,\n.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield {\n padding-left: 32px;\n}\n.tox[dir=rtl] .tox-control-wrap__status-icon-wrap {\n left: 4px;\n}\n.tox .tox-autocompleter {\n max-width: 25em;\n}\n.tox .tox-autocompleter .tox-menu {\n max-width: 25em;\n}\n.tox .tox-autocompleter .tox-autocompleter-highlight {\n font-weight: bold;\n}\n.tox .tox-color-input {\n display: flex;\n position: relative;\n z-index: 1;\n}\n.tox .tox-color-input .tox-textfield {\n z-index: -1;\n}\n.tox .tox-color-input span {\n border-color: rgba(42, 55, 70, 0.2);\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n height: 24px;\n position: absolute;\n top: 6px;\n width: 24px;\n}\n.tox .tox-color-input span:hover:not([aria-disabled=true]),\n.tox .tox-color-input span:focus:not([aria-disabled=true]) {\n border-color: #207ab7;\n cursor: pointer;\n}\n.tox .tox-color-input span::before {\n background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%);\n background-position: 0 0, 0 6px, 6px -6px, -6px 0;\n background-size: 12px 12px;\n border: 1px solid #2b3b4e;\n border-radius: 3px;\n box-sizing: border-box;\n content: '';\n height: 24px;\n left: -1px;\n position: absolute;\n top: -1px;\n width: 24px;\n z-index: -1;\n}\n.tox .tox-color-input span[aria-disabled=true] {\n cursor: not-allowed;\n}\n.tox:not([dir=rtl]) .tox-color-input {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox:not([dir=rtl]) .tox-color-input .tox-textfield {\n padding-left: 36px;\n}\n.tox:not([dir=rtl]) .tox-color-input span {\n left: 6px;\n}\n.tox[dir=\"rtl\"] .tox-color-input {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=\"rtl\"] .tox-color-input .tox-textfield {\n padding-right: 36px;\n}\n.tox[dir=\"rtl\"] .tox-color-input span {\n right: 6px;\n}\n.tox .tox-label,\n.tox .tox-toolbar-label {\n color: rgba(255, 255, 255, 0.5);\n display: block;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n padding: 0 8px 0 0;\n text-transform: none;\n white-space: nowrap;\n}\n.tox .tox-toolbar-label {\n padding: 0 8px;\n}\n.tox[dir=rtl] .tox-label {\n padding: 0 0 0 8px;\n}\n.tox .tox-form {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group {\n box-sizing: border-box;\n margin-bottom: 4px;\n}\n.tox .tox-form-group--maximize {\n flex: 1;\n}\n.tox .tox-form__group--error {\n color: #c00;\n}\n.tox .tox-form__group--collection {\n display: flex;\n}\n.tox .tox-form__grid {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.tox .tox-form__grid--2col > .tox-form__group {\n width: calc(50% - (8px / 2));\n}\n.tox .tox-form__grid--3col > .tox-form__group {\n width: calc(100% / 3 - (8px / 2));\n}\n.tox .tox-form__grid--4col > .tox-form__group {\n width: calc(25% - (8px / 2));\n}\n.tox .tox-form__controls-h-stack {\n align-items: center;\n display: flex;\n}\n.tox .tox-form__group--inline {\n align-items: center;\n display: flex;\n}\n.tox .tox-form__group--stretched {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-textarea {\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-navobj {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n}\n.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) {\n margin-right: 4px;\n}\n.tox .tox-lock.tox-locked .tox-lock-icon__unlock,\n.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {\n display: none;\n}\n.tox .tox-textfield,\n.tox .tox-toolbar-textfield,\n.tox .tox-listboxfield .tox-listbox--select,\n.tox .tox-textarea {\n -webkit-aplaytpance: none;\n -moz-aplaytpance: none;\n aplaytpance: none;\n background-color: #2b3b4e;\n border-color: #000000;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #fff;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n line-height: 24px;\n margin: 0;\n min-height: 34px;\n outline: none;\n padding: 5px 4.75px;\n resize: none;\n width: 100%;\n}\n.tox .tox-textfield[disabled],\n.tox .tox-textarea[disabled] {\n background-color: #222f3e;\n color: rgba(255, 255, 255, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-textfield:focus,\n.tox .tox-listboxfield .tox-listbox--select:focus,\n.tox .tox-textarea:focus {\n background-color: #2b3b4e;\n border-color: #207ab7;\n box-shadow: none;\n outline: none;\n}\n.tox .tox-toolbar-textfield {\n border-width: 0;\n margin-bottom: 3px;\n margin-top: 2px;\n max-width: 250px;\n}\n.tox .tox-naked-btn {\n background-color: transparent;\n border: 0;\n border-color: transparent;\n box-shadow: unset;\n color: #207ab7;\n cursor: pointer;\n display: block;\n margin: 0;\n padding: 0;\n}\n.tox .tox-naked-btn svg {\n display: block;\n fill: #fff;\n}\n.tox:not([dir=rtl]) .tox-toolbar-textfield + * {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-toolbar-textfield + * {\n margin-right: 4px;\n}\n.tox .tox-listboxfield {\n cursor: pointer;\n position: relative;\n}\n.tox .tox-listboxfield .tox-listbox--select[disabled] {\n background-color: #19232e;\n color: rgba(255, 255, 255, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-listbox__select-label {\n cursor: default;\n flex: 1;\n margin: 0 4px;\n}\n.tox .tox-listbox__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n}\n.tox .tox-listbox__select-chevron svg {\n fill: #fff;\n}\n.tox .tox-listboxfield .tox-listbox--select {\n align-items: center;\n display: flex;\n}\n.tox:not([dir=rtl]) .tox-listboxfield svg {\n right: 8px;\n}\n.tox[dir=rtl] .tox-listboxfield svg {\n left: 8px;\n}\n.tox .tox-selectfield {\n cursor: pointer;\n position: relative;\n}\n.tox .tox-selectfield select {\n -webkit-aplaytpance: none;\n -moz-aplaytpance: none;\n aplaytpance: none;\n background-color: #2b3b4e;\n border-color: #000000;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #fff;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n line-height: 24px;\n margin: 0;\n min-height: 34px;\n outline: none;\n padding: 5px 4.75px;\n resize: none;\n width: 100%;\n}\n.tox .tox-selectfield select[disabled] {\n background-color: #19232e;\n color: rgba(255, 255, 255, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-selectfield select::-ms-expand {\n display: none;\n}\n.tox .tox-selectfield select:focus {\n background-color: #2b3b4e;\n border-color: #207ab7;\n box-shadow: none;\n outline: none;\n}\n.tox .tox-selectfield svg {\n pointer-events: none;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox:not([dir=rtl]) .tox-selectfield select[size=\"0\"],\n.tox:not([dir=rtl]) .tox-selectfield select[size=\"1\"] {\n padding-right: 24px;\n}\n.tox:not([dir=rtl]) .tox-selectfield svg {\n right: 8px;\n}\n.tox[dir=rtl] .tox-selectfield select[size=\"0\"],\n.tox[dir=rtl] .tox-selectfield select[size=\"1\"] {\n padding-left: 24px;\n}\n.tox[dir=rtl] .tox-selectfield svg {\n left: 8px;\n}\n.tox .tox-textarea {\n -webkit-aplaytpance: textarea;\n -moz-aplaytpance: textarea;\n aplaytpance: textarea;\n white-space: pre-wrap;\n}\n.tox-fullscreen {\n border: 0;\n height: 100%;\n left: 0;\n margin: 0;\n overflow: hidden;\n -ms-scroll-chaining: none;\n overscroll-behavior: none;\n padding: 0;\n position: fixed;\n top: 0;\n touch-action: pinch-zoom;\n width: 100%;\n}\n.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {\n display: none;\n}\n.tox.tox-tinymce.tox-fullscreen {\n z-index: 1200;\n}\n.tox-shadowhost.tox-fullscreen {\n z-index: 1200;\n}\n.tox-fullscreen .tox.tox-tinymce-aux,\n.tox-fullscreen ~ .tox.tox-tinymce-aux {\n z-index: 1201;\n}\n.tox .tox-help__more-link {\n list-style: none;\n margin-top: 1em;\n}\n.tox .tox-image-tools {\n width: 100%;\n}\n.tox .tox-image-tools__toolbar {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.tox .tox-image-tools__image {\n background-color: #666;\n height: 380px;\n overflow: auto;\n position: relative;\n width: 100%;\n}\n.tox .tox-image-tools__image,\n.tox .tox-image-tools__image + .tox-image-tools__toolbar {\n margin-top: 8px;\n}\n.tox .tox-image-tools__image-bg {\n background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);\n}\n.tox .tox-image-tools__toolbar > .tox-spacer {\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-croprect-block {\n background: black;\n filter: alpha(opacity=50);\n opacity: 0.5;\n position: absolute;\n zoom: 1;\n}\n.tox .tox-croprect-handle {\n border: 2px solid white;\n height: 20px;\n left: 0;\n position: absolute;\n top: 0;\n width: 20px;\n}\n.tox .tox-croprect-handle-move {\n border: 0;\n cursor: move;\n position: absolute;\n}\n.tox .tox-croprect-handle-nw {\n border-width: 2px 0 0 2px;\n cursor: nw-resize;\n left: 100px;\n margin: -2px 0 0 -2px;\n top: 100px;\n}\n.tox .tox-croprect-handle-ne {\n border-width: 2px 2px 0 0;\n cursor: ne-resize;\n left: 200px;\n margin: -2px 0 0 -20px;\n top: 100px;\n}\n.tox .tox-croprect-handle-sw {\n border-width: 0 0 2px 2px;\n cursor: sw-resize;\n left: 100px;\n margin: -20px 2px 0 -2px;\n top: 200px;\n}\n.tox .tox-croprect-handle-se {\n border-width: 0 2px 2px 0;\n cursor: se-resize;\n left: 200px;\n margin: -20px 0 0 -20px;\n top: 200px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider {\n margin-left: 32px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button {\n margin-left: 32px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider {\n margin-right: 32px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button {\n margin-right: 32px;\n}\n.tox .tox-insert-table-picker {\n display: flex;\n flex-wrap: wrap;\n width: 170px;\n}\n.tox .tox-insert-table-picker > div {\n border-color: #000000;\n border-style: solid;\n border-width: 0 1px 1px 0;\n box-sizing: border-box;\n height: 17px;\n width: 17px;\n}\n.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {\n margin: -4px 0;\n}\n.tox .tox-insert-table-picker .tox-insert-table-picker__selected {\n background-color: rgba(32, 122, 183, 0.5);\n border-color: rgba(32, 122, 183, 0.5);\n}\n.tox .tox-insert-table-picker__label {\n color: #fff;\n display: block;\n font-size: 14px;\n padding: 4px;\n text-align: center;\n width: 100%;\n}\n.tox:not([dir=rtl]) {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) {\n border-right: 0;\n}\n.tox[dir=rtl] {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) {\n border-right: 0;\n}\n.tox {\n /* stylelint-disable */\n /* stylelint-enable */\n}\n.tox .tox-menu {\n background-color: #2b3b4e;\n border: 1px solid #000000;\n border-radius: 3px;\n box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);\n display: inline-block;\n overflow: hidden;\n vertical-align: top;\n z-index: 1150;\n}\n.tox .tox-menu.tox-collection.tox-collection--list {\n padding: 0;\n}\n.tox .tox-menu.tox-collection.tox-collection--toolbar {\n padding: 4px;\n}\n.tox .tox-menu.tox-collection.tox-collection--grid {\n padding: 4px;\n}\n.tox .tox-menu__label h1,\n.tox .tox-menu__label h2,\n.tox .tox-menu__label h3,\n.tox .tox-menu__label h4,\n.tox .tox-menu__label h5,\n.tox .tox-menu__label h6,\n.tox .tox-menu__label p,\n.tox .tox-menu__label blockquote,\n.tox .tox-menu__label code {\n margin: 0;\n}\n.tox .tox-menubar {\n background: url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E\") left 0 top 0 #222f3e;\n background-color: #222f3e;\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: wrap;\n padding: 0 4px 0 4px;\n}\n.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {\n border-top: 1px solid #000000;\n}\n/* Deprecated. Remove in next major release */\n.tox .tox-mbtn {\n align-items: center;\n background: transparent;\n border: 0;\n border-radius: 3px;\n box-shadow: none;\n color: #fff;\n display: flex;\n flex: 0 0 auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n height: 34px;\n justify-content: center;\n margin: 2px 0 3px 0;\n outline: none;\n overflow: hidden;\n padding: 0 4px;\n text-transform: none;\n width: auto;\n}\n.tox .tox-mbtn[disabled] {\n background-color: transparent;\n border: 0;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-mbtn:focus:not(:disabled) {\n background: #4a5562;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-mbtn--active {\n background: #757d87;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {\n background: #4a5562;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-mbtn__select-label {\n cursor: default;\n font-weight: normal;\n margin: 0 4px;\n}\n.tox .tox-mbtn[disabled] .tox-mbtn__select-label {\n cursor: not-allowed;\n}\n.tox .tox-mbtn__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n display: none;\n}\n.tox .tox-notification {\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n display: -ms-grid;\n display: grid;\n font-size: 14px;\n font-weight: normal;\n -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);\n grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);\n margin-top: 4px;\n opacity: 0;\n padding: 4px;\n transition: transform 100ms ease-in, opacity 150ms ease-in;\n}\n.tox .tox-notification p {\n font-size: 14px;\n font-weight: normal;\n}\n.tox .tox-notification a {\n text-decoration: underline;\n}\n.tox .tox-notification--in {\n opacity: 1;\n}\n.tox .tox-notification--success {\n background-color: #e4eeda;\n border-color: #d7e6c8;\n color: #fff;\n}\n.tox .tox-notification--success p {\n color: #fff;\n}\n.tox .tox-notification--success a {\n color: #547831;\n}\n.tox .tox-notification--success svg {\n fill: #fff;\n}\n.tox .tox-notification--error {\n background-color: #f8dede;\n border-color: #f2bfbf;\n color: #fff;\n}\n.tox .tox-notification--error p {\n color: #fff;\n}\n.tox .tox-notification--error a {\n color: #c00;\n}\n.tox .tox-notification--error svg {\n fill: #fff;\n}\n.tox .tox-notification--warn,\n.tox .tox-notification--warning {\n background-color: #fffaea;\n border-color: #ffe89d;\n color: #fff;\n}\n.tox .tox-notification--warn p,\n.tox .tox-notification--warning p {\n color: #fff;\n}\n.tox .tox-notification--warn a,\n.tox .tox-notification--warning a {\n color: #fff;\n}\n.tox .tox-notification--warn svg,\n.tox .tox-notification--warning svg {\n fill: #fff;\n}\n.tox .tox-notification--info {\n background-color: #d9edf7;\n border-color: #779ecb;\n color: #fff;\n}\n.tox .tox-notification--info p {\n color: #fff;\n}\n.tox .tox-notification--info a {\n color: #fff;\n}\n.tox .tox-notification--info svg {\n fill: #fff;\n}\n.tox .tox-notification__body {\n -ms-grid-row-align: center;\n align-self: center;\n color: #fff;\n font-size: 14px;\n -ms-grid-column-span: 1;\n grid-column-end: 3;\n -ms-grid-column: 2;\n grid-column-start: 2;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n text-align: center;\n white-space: normal;\n word-break: break-all;\n word-break: break-word;\n}\n.tox .tox-notification__body > * {\n margin: 0;\n}\n.tox .tox-notification__body > * + * {\n margin-top: 1rem;\n}\n.tox .tox-notification__icon {\n -ms-grid-row-align: center;\n align-self: center;\n -ms-grid-column-span: 1;\n grid-column-end: 2;\n -ms-grid-column: 1;\n grid-column-start: 1;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n -ms-grid-column-align: end;\n justify-self: end;\n}\n.tox .tox-notification__icon svg {\n display: block;\n}\n.tox .tox-notification__dismiss {\n -ms-grid-row-align: start;\n align-self: start;\n -ms-grid-column-span: 1;\n grid-column-end: 4;\n -ms-grid-column: 3;\n grid-column-start: 3;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n -ms-grid-column-align: end;\n justify-self: end;\n}\n.tox .tox-notification .tox-progress-bar {\n -ms-grid-column-span: 3;\n grid-column-end: 4;\n -ms-grid-column: 1;\n grid-column-start: 1;\n -ms-grid-row-span: 1;\n grid-row-end: 3;\n -ms-grid-row: 2;\n grid-row-start: 2;\n -ms-grid-column-align: center;\n justify-self: center;\n}\n.tox .tox-pop {\n display: inline-block;\n position: relative;\n}\n.tox .tox-pop--resizing {\n transition: width 0.1s ease;\n}\n.tox .tox-pop--resizing .tox-toolbar {\n flex-wrap: nowrap;\n}\n.tox .tox-pop__dialog {\n background-color: #222f3e;\n border: 1px solid #000000;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n min-width: 0;\n overflow: hidden;\n}\n.tox .tox-pop__dialog > *:not(.tox-toolbar) {\n margin: 4px 4px 4px 8px;\n}\n.tox .tox-pop__dialog .tox-toolbar {\n background-color: transparent;\n margin-bottom: -1px;\n}\n.tox .tox-pop::before,\n.tox .tox-pop::after {\n border-style: solid;\n content: '';\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n}\n.tox .tox-pop.tox-pop--bottom::before,\n.tox .tox-pop.tox-pop--bottom::after {\n left: 50%;\n top: 100%;\n}\n.tox .tox-pop.tox-pop--bottom::after {\n border-color: #222f3e transparent transparent transparent;\n border-width: 8px;\n margin-left: -8px;\n margin-top: -1px;\n}\n.tox .tox-pop.tox-pop--bottom::before {\n border-color: #000000 transparent transparent transparent;\n border-width: 9px;\n margin-left: -9px;\n}\n.tox .tox-pop.tox-pop--top::before,\n.tox .tox-pop.tox-pop--top::after {\n left: 50%;\n top: 0;\n transform: translateY(-100%);\n}\n.tox .tox-pop.tox-pop--top::after {\n border-color: transparent transparent #222f3e transparent;\n border-width: 8px;\n margin-left: -8px;\n margin-top: 1px;\n}\n.tox .tox-pop.tox-pop--top::before {\n border-color: transparent transparent #000000 transparent;\n border-width: 9px;\n margin-left: -9px;\n}\n.tox .tox-pop.tox-pop--left::before,\n.tox .tox-pop.tox-pop--left::after {\n left: 0;\n top: calc(50% - 1px);\n transform: translateY(-50%);\n}\n.tox .tox-pop.tox-pop--left::after {\n border-color: transparent #222f3e transparent transparent;\n border-width: 8px;\n margin-left: -15px;\n}\n.tox .tox-pop.tox-pop--left::before {\n border-color: transparent #000000 transparent transparent;\n border-width: 10px;\n margin-left: -19px;\n}\n.tox .tox-pop.tox-pop--right::before,\n.tox .tox-pop.tox-pop--right::after {\n left: 100%;\n top: calc(50% + 1px);\n transform: translateY(-50%);\n}\n.tox .tox-pop.tox-pop--right::after {\n border-color: transparent transparent transparent #222f3e;\n border-width: 8px;\n margin-left: -1px;\n}\n.tox .tox-pop.tox-pop--right::before {\n border-color: transparent transparent transparent #000000;\n border-width: 10px;\n margin-left: -1px;\n}\n.tox .tox-pop.tox-pop--align-left::before,\n.tox .tox-pop.tox-pop--align-left::after {\n left: 20px;\n}\n.tox .tox-pop.tox-pop--align-right::before,\n.tox .tox-pop.tox-pop--align-right::after {\n left: calc(100% - 20px);\n}\n.tox .tox-sidebar-wrap {\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n -ms-flex-preferred-size: 0;\n min-height: 0;\n}\n.tox .tox-sidebar {\n background-color: #222f3e;\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n}\n.tox .tox-sidebar__slider {\n display: flex;\n overflow: hidden;\n}\n.tox .tox-sidebar__pane-container {\n display: flex;\n}\n.tox .tox-sidebar__pane {\n display: flex;\n}\n.tox .tox-sidebar--sliding-closed {\n opacity: 0;\n}\n.tox .tox-sidebar--sliding-open {\n opacity: 1;\n}\n.tox .tox-sidebar--sliding-growing,\n.tox .tox-sidebar--sliding-shrinking {\n transition: width 0.5s ease, opacity 0.5s ease;\n}\n.tox .tox-selector {\n background-color: #4099ff;\n border-color: #4099ff;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n display: inline-block;\n height: 10px;\n position: absolute;\n width: 10px;\n}\n.tox.tox-platform-touch .tox-selector {\n height: 12px;\n width: 12px;\n}\n.tox .tox-slider {\n align-items: center;\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 24px;\n justify-content: center;\n position: relative;\n}\n.tox .tox-slider__rail {\n background-color: transparent;\n border: 1px solid #000000;\n border-radius: 3px;\n height: 10px;\n min-width: 120px;\n width: 100%;\n}\n.tox .tox-slider__handle {\n background-color: #207ab7;\n border: 2px solid #185d8c;\n border-radius: 3px;\n box-shadow: none;\n height: 24px;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n width: 14px;\n}\n.tox .tox-source-code {\n overflow: auto;\n}\n.tox .tox-spinner {\n display: flex;\n}\n.tox .tox-spinner > div {\n animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;\n background-color: rgba(255, 255, 255, 0.5);\n border-radius: 100%;\n height: 8px;\n width: 8px;\n}\n.tox .tox-spinner > div:nth-child(1) {\n animation-delay: -0.32s;\n}\n.tox .tox-spinner > div:nth-child(2) {\n animation-delay: -0.16s;\n}\n@keyframes tam-bouncing-dots {\n 0%,\n 80%,\n 100% {\n transform: scale(0);\n }\n 40% {\n transform: scale(1);\n }\n}\n.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-spinner > div:not(:first-child) {\n margin-right: 4px;\n}\n.tox .tox-statusbar {\n align-items: center;\n background-color: #222f3e;\n border-top: 1px solid #000000;\n color: #fff;\n display: flex;\n flex: 0 0 auto;\n font-size: 12px;\n font-weight: normal;\n height: 18px;\n overflow: hidden;\n padding: 0 8px;\n position: relative;\n text-transform: uppercase;\n}\n.tox .tox-statusbar__text-container {\n display: flex;\n flex: 1 1 auto;\n justify-content: flex-end;\n overflow: hidden;\n}\n.tox .tox-statusbar__path {\n display: flex;\n flex: 1 1 auto;\n margin-right: auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.tox .tox-statusbar__path > * {\n display: inline;\n white-space: nowrap;\n}\n.tox .tox-statusbar__wordcount {\n flex: 0 0 auto;\n margin-left: 1ch;\n}\n.tox .tox-statusbar a,\n.tox .tox-statusbar__path-item,\n.tox .tox-statusbar__wordcount {\n color: #fff;\n text-decoration: none;\n}\n.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) {\n cursor: pointer;\n text-decoration: underline;\n}\n.tox .tox-statusbar__resize-handle {\n align-items: flex-end;\n align-self: stretch;\n cursor: nwse-resize;\n display: flex;\n flex: 0 0 auto;\n justify-content: flex-end;\n margin-left: auto;\n margin-right: -8px;\n padding-left: 1ch;\n}\n.tox .tox-statusbar__resize-handle svg {\n display: block;\n fill: #fff;\n}\n.tox:not([dir=rtl]) .tox-statusbar__path > * {\n margin-right: 4px;\n}\n.tox:not([dir=rtl]) .tox-statusbar__branding {\n margin-left: 1ch;\n}\n.tox[dir=rtl] .tox-statusbar {\n flex-direction: row-reverse;\n}\n.tox[dir=rtl] .tox-statusbar__path > * {\n margin-left: 4px;\n}\n.tox .tox-throbber {\n z-index: 1400;\n}\n.tox .tox-throbber__busy-spinner {\n align-items: center;\n background-color: rgba(34, 47, 62, 0.6);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n.tox .tox-tbtn {\n align-items: center;\n background: transparent;\n border: 0;\n border-radius: 3px;\n box-shadow: none;\n color: #fff;\n display: flex;\n flex: 0 0 auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n height: 34px;\n justify-content: center;\n margin: 2px 0 3px 0;\n outline: none;\n overflow: hidden;\n padding: 0;\n text-transform: none;\n width: 34px;\n}\n.tox .tox-tbtn svg {\n display: block;\n fill: #fff;\n}\n.tox .tox-tbtn.tox-tbtn-more {\n padding-left: 5px;\n padding-right: 5px;\n width: inherit;\n}\n.tox .tox-tbtn:focus {\n background: #4a5562;\n border: 0;\n box-shadow: none;\n}\n.tox .tox-tbtn:hover {\n background: #4a5562;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-tbtn:hover svg {\n fill: #fff;\n}\n.tox .tox-tbtn:active {\n background: #757d87;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-tbtn:active svg {\n fill: #fff;\n}\n.tox .tox-tbtn--disabled,\n.tox .tox-tbtn--disabled:hover,\n.tox .tox-tbtn:disabled,\n.tox .tox-tbtn:disabled:hover {\n background: transparent;\n border: 0;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-tbtn--disabled svg,\n.tox .tox-tbtn--disabled:hover svg,\n.tox .tox-tbtn:disabled svg,\n.tox .tox-tbtn:disabled:hover svg {\n /* stylelint-disable-line no-descending-specificity */\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-tbtn--enabled,\n.tox .tox-tbtn--enabled:hover {\n background: #757d87;\n border: 0;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-tbtn--enabled > *,\n.tox .tox-tbtn--enabled:hover > * {\n transform: none;\n}\n.tox .tox-tbtn--enabled svg,\n.tox .tox-tbtn--enabled:hover svg {\n /* stylelint-disable-line no-descending-specificity */\n fill: #fff;\n}\n.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {\n color: #fff;\n}\n.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {\n fill: #fff;\n}\n.tox .tox-tbtn:active > * {\n transform: none;\n}\n.tox .tox-tbtn--md {\n height: 51px;\n width: 51px;\n}\n.tox .tox-tbtn--lg {\n flex-direction: column;\n height: 68px;\n width: 68px;\n}\n.tox .tox-tbtn--return {\n -ms-grid-row-align: stretch;\n align-self: stretch;\n height: unset;\n width: 16px;\n}\n.tox .tox-tbtn--labeled {\n padding: 0 4px;\n width: unset;\n}\n.tox .tox-tbtn__vlabel {\n display: block;\n font-size: 10px;\n font-weight: normal;\n letter-spacing: -0.025em;\n margin-bottom: 4px;\n white-space: nowrap;\n}\n.tox .tox-tbtn--select {\n margin: 2px 0 3px 0;\n padding: 0 4px;\n width: auto;\n}\n.tox .tox-tbtn__select-label {\n cursor: default;\n font-weight: normal;\n margin: 0 4px;\n}\n.tox .tox-tbtn__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n}\n.tox .tox-tbtn__select-chevron svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 7em;\n}\n.tox .tox-split-button {\n border: 0;\n border-radius: 3px;\n box-sizing: border-box;\n display: flex;\n margin: 2px 0 3px 0;\n overflow: hidden;\n}\n.tox .tox-split-button:hover {\n box-shadow: 0 0 0 1px #4a5562 inset;\n}\n.tox .tox-split-button:focus {\n background: #4a5562;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-split-button > * {\n border-radius: 0;\n}\n.tox .tox-split-button__chevron {\n width: 16px;\n}\n.tox .tox-split-button__chevron svg {\n fill: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-split-button .tox-tbtn {\n margin: 0;\n}\n.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {\n width: 30px;\n}\n.tox.tox-platform-touch .tox-split-button__chevron {\n width: 20px;\n}\n.tox .tox-split-button.tox-tbtn--disabled:hover,\n.tox .tox-split-button.tox-tbtn--disabled:focus,\n.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,\n.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {\n background: transparent;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n}\n.tox .tox-toolbar-overlord {\n background-color: #222f3e;\n}\n.tox .tox-toolbar,\n.tox .tox-toolbar__primary,\n.tox .tox-toolbar__overflow {\n background: url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E\") left 0 top 0 #222f3e;\n background-color: #222f3e;\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: wrap;\n padding: 0 0;\n}\n.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {\n height: 0;\n opacity: 0;\n padding-bottom: 0;\n padding-top: 0;\n visibility: hidden;\n}\n.tox .tox-toolbar__overflow--growing {\n transition: height 0.3s ease, opacity 0.2s linear 0.1s;\n}\n.tox .tox-toolbar__overflow--shrinking {\n transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;\n}\n.tox .tox-menubar + .tox-toolbar,\n.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {\n border-top: 1px solid #000000;\n margin-top: -1px;\n}\n.tox .tox-toolbar--scrolling {\n flex-wrap: nowrap;\n overflow-x: auto;\n}\n.tox .tox-pop .tox-toolbar {\n border-width: 0;\n}\n.tox .tox-toolbar--no-divider {\n background-image: none;\n}\n.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,\n.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {\n border-top: 1px solid #000000;\n}\n.tox.tox-tinymce-aux .tox-toolbar__overflow {\n background-color: #222f3e;\n border: 1px solid #000000;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.tox[dir=rtl] .tox-tbtn__icon-rtl svg {\n transform: rotateY(180deg);\n}\n.tox .tox-toolbar__group {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n margin: 0 0;\n padding: 0 4px 0 4px;\n}\n.tox .tox-toolbar__group--pull-right {\n margin-left: auto;\n}\n.tox .tox-toolbar--scrolling .tox-toolbar__group {\n flex-shrink: 0;\n flex-wrap: nowrap;\n}\n.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) {\n border-right: 1px solid #000000;\n}\n.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) {\n border-left: 1px solid #000000;\n}\n.tox .tox-tooltip {\n display: inline-block;\n padding: 8px;\n position: relative;\n}\n.tox .tox-tooltip__body {\n background-color: #3d546f;\n border-radius: 3px;\n box-shadow: 0 2px 4px rgba(42, 55, 70, 0.3);\n color: rgba(255, 255, 255, 0.75);\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n padding: 4px 8px;\n text-transform: none;\n}\n.tox .tox-tooltip__arrow {\n position: absolute;\n}\n.tox .tox-tooltip--down .tox-tooltip__arrow {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-top: 8px solid #3d546f;\n bottom: 0;\n left: 50%;\n position: absolute;\n transform: translateX(-50%);\n}\n.tox .tox-tooltip--up .tox-tooltip__arrow {\n border-bottom: 8px solid #3d546f;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n left: 50%;\n position: absolute;\n top: 0;\n transform: translateX(-50%);\n}\n.tox .tox-tooltip--right .tox-tooltip__arrow {\n border-bottom: 8px solid transparent;\n border-left: 8px solid #3d546f;\n border-top: 8px solid transparent;\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-tooltip--left .tox-tooltip__arrow {\n border-bottom: 8px solid transparent;\n border-right: 8px solid #3d546f;\n border-top: 8px solid transparent;\n left: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-well {\n border: 1px solid #000000;\n border-radius: 3px;\n padding: 8px;\n width: 100%;\n}\n.tox .tox-well > *:first-child {\n margin-top: 0;\n}\n.tox .tox-well > *:last-child {\n margin-bottom: 0;\n}\n.tox .tox-well > *:only-child {\n margin: 0;\n}\n.tox .tox-custom-editor {\n border: 1px solid #000000;\n border-radius: 3px;\n display: flex;\n flex: 1;\n position: relative;\n}\n/* stylelint-disable */\n.tox {\n /* stylelint-enable */\n}\n.tox .tox-dialog-loading::before {\n background-color: rgba(0, 0, 0, 0.5);\n content: \"\";\n height: 100%;\n position: absolute;\n width: 100%;\n z-index: 1000;\n}\n.tox .tox-tab {\n cursor: pointer;\n}\n.tox .tox-dialog__content-js {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-content .tox-collection {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-image-tools-edit-panel {\n height: 60px;\n}\n.tox .tox-image-tools__sidebar {\n height: 60px;\n}\n"]} \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.css b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.css index 875721a27d02e628613cdd68138539c28dc15afd..0a0e082ef2d9fcbacd555f5427408d0cdedc718a 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.css +++ b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.css @@ -282,7 +282,7 @@ flex: 1; padding-bottom: 0.4em; padding-top: 0.4em; - /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ + /* Make any buttons aplaytping on the left and right display in the centre (e.g. color edges) */ /* For widgets like the colour picker, use the whole height */ } .tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { @@ -630,7 +630,7 @@ width: 100%; } .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { - /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ + /* Note, on the iPod touch in landscape, this isn't visible when the navbar aplaytps */ background-color: #207ab7; border-radius: 50%; bottom: 1em; diff --git a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.min.css.map b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.min.css.map index bd4e3c31e88f54ca0c4a0b238fb1d25d4d4b0e6f..051500dbfcde31be928155e073f91bd04a53f90f 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.min.css.map +++ b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide-dark/skin.mobile.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["ui/dark/skin.mobile.css"],"names":[],"mappings":";;;;;;AAOA,gCACE,IAAK,QACL,QAAS,MAEX,kCACE,OAAQ,EACR,WAAY,QACZ,OAAQ,QACR,MAAO,KACP,YAAa,EACb,OAAQ,EACR,QAAS,EACT,QAAS,EACT,4BAA6B,YAE7B,YAAa,KACb,YAAa,OAEf,wCACE,QAAS,QAEX,mCACE,QAAS,QAEX,2CACE,QAAS,QAEX,sCACE,QAAS,QAEX,0CACE,QAAS,QAEX,wCACE,QAAS,QAEX,yCACE,QAAS,QAEX,kCACE,QAAS,QAEX,oCACE,QAAS,QAEX,4CACE,QAAS,QAEX,0CACE,QAAS,QAEX,uCACE,QAAS,QAEX,uCACE,QAAS,QAEX,kCACE,QAAS,QAEX,oCACE,QAAS,QAEX,mCACE,QAAS,QAEX,sCACE,QAAS,QAEX,kCACE,QAAS,QAEX,wCACA,2CACE,QAAS,QAEX,kCACE,QAAS,QAEX,kCACE,QAAS,QAEX,0CACE,QAAS,QAEX,wCACE,QAAS,QAGX,sCADA,2CAEE,QAAS,QAEX,2CACE,QAAS,QAEX,2CACE,QAAS,QAGX,2CADA,2CAEE,YAAa,WACb,UAAW,IAEb,uCACE,QAAS,QAEX,kCACE,QAAS,QAEX,qCAEE,QAAS,WACT,YAAa,WACb,UAAW,IACX,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,8DACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,WAAY,kBACZ,OAAQ,KACR,SAAU,SACV,IAAK,EACL,MAAO,KAET,gGACE,YAAa,OACb,cAAe,IACf,QAAS,KACT,eAAgB,OAChB,YAAa,WACb,UAAW,IACX,gBAAiB,cAEnB,iHACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,cAAe,IACf,OAAQ,MACR,MAAO,MAET,oIACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,eAAgB,OAChB,UAAW,IAEb,gDACE,oIACE,UAAW,OAGf,kKACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,cAAe,IACf,OAAQ,MACR,MAAO,MACP,iBAAkB,KAClB,MAAO,QAET,0KACE,QAAS,QACT,YAAa,cAAgB,CAAE,WAEjC,8MACE,QAAS,EAEX,mEACE,WAAY,KACZ,OAAQ,KACR,OAAQ,EACR,QAAS,KACT,eAAgB,OAChB,KAAM,EACN,SAAU,MACV,MAAO,EACP,IAAK,EAEP,yEACE,SAAU,SAEZ,gEACE,QAAS,KACT,UAAW,EAEb,uEACE,QAAS,eACT,UAAW,EACX,OAAQ,eAEV,sCACE,SAAU,OAEZ,sFACE,WAAY,KAEd,0BACE,WAAY,KACZ,QAAS,KACT,KAAM,EAAE,EAAE,KACV,QAAS,EAEX,kDACE,YAAa,OACb,iBAAkB,KAClB,cAAe,IAAI,MAAM,KACzB,QAAS,KACT,KAAM,EACN,OAAQ,MACR,MAAO,KAGT,qHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,YAAa,EAEf,yHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EAER,mJACE,WAAY,QAEd,6JACE,UAAW,EAEb,wJACE,aAAc,KACd,cAAe,KAEjB,sLACE,YAAa,OACb,QAAS,KACT,OAAQ,IACR,YAAa,IACb,aAAc,IAEhB,6NACE,WAAY,QACZ,MAAO,KAET,mIACA,kIACE,WAAY,QACZ,MAAO,QAKT,+GACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EACN,eAAgB,KAChB,YAAa,KAIf,iJACE,QAAS,KACT,WAAY,MACZ,SAAU,OACV,aAAc,EACd,cAAe,EACf,SAAU,SACV,MAAO,KAET,yLACE,QAAS,KACT,OAAQ,KACR,WAAY,KAAK,uBAA2B,KAC5C,MAAO,KAET,kOACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,cACjB,MAAO,KAET,wOACE,YAAa,WAEf,kQACE,QAAS,KACT,UAAW,EACX,SAAU,SAEZ,oSACE,mBAAoB,OAChB,WAAY,OAChB,WAAY,QACZ,OAAQ,KACR,cAAe,IACf,MAAO,KACP,UAAW,KACX,YAAa,IACb,OAAQ,KACR,cAAe,IACf,SAAU,SACV,MAAO,EAET,yUACE,QAAS,KAGX,4PADA,gQAEE,YAAa,OACb,QAAS,KAGX,oQADA,wQAEE,YAAa,OACb,QAAS,KACT,YAAa,IACb,OAAQ,KACR,aAAc,KACd,cAAe,KAGjB,+SADA,mTAEE,WAAY,OAEd,wIACE,MAAO,KACP,UAAW,KACX,YAAa,KACb,OAAQ,EAAE,IACV,YAAa,IAEf,kKACE,MAAO,QAET,uJACA,0JACE,YAAa,KACb,aAAc,KAEhB,uJACA,0JACE,YAAa,KACb,aAAc,KAEhB,sIACE,QAAS,KACT,KAAM,EACN,YAAa,EACb,aAAc,EACd,QAAS,MAAO,EAChB,SAAU,SAEZ,4KACE,YAAa,OACb,QAAS,KACT,UAAW,EACX,OAAQ,KAEV,6MACE,WAAY,KACZ,QAAS,KACT,KAAM,EACN,OAAQ,KACR,cAAe,KACf,WAAY,KAEd,0KACE,aAAc,IACd,cAAe,IAEjB,oNACE,YAAa,OACb,QAAS,KACT,UAAW,EACX,OAAQ,KAEV,oPACE,WAAY,+FACZ,QAAS,KACT,KAAM,EACN,OAAQ,KACR,cAAe,KACf,WAAY,KAEd,2MAEE,WAAY,KACZ,OAAQ,KACR,cAAe,KACf,WAAY,KACZ,MAAO,MAET,2MAEE,WAAY,KACZ,OAAQ,KACR,cAAe,KACf,WAAY,KACZ,MAAO,MAET,mKAME,YAAa,OACb,gBAAiB,YACjB,iBAAkB,QAClB,OAAQ,KAAM,MAAM,oBACpB,cAAe,IACf,OAAQ,EACR,MAAO,KACP,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,KAAM,MACN,OAAQ,KACR,SAAU,SACV,IAAK,EACL,WAAY,OAAO,MAAM,4BACzB,MAAO,KAET,+LACE,OAAQ,KAAM,MAAM,sBAEtB,kJACA,mHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EAER,kJACE,eAAgB,OAChB,gBAAiB,OAEnB,kJACE,YAAa,OACb,QAAS,KAEX,yLACE,OAAQ,KAEV,6IACE,QAAS,KAEX,qHACE,WAAY,KACZ,OAAQ,KACR,cAAe,EACf,MAAO,QACP,UAAW,EACX,UAAW,MACX,eAAgB,KAChB,aAAc,IACd,YAAa,KAEf,gJAEE,MAAO,KAET,kIAEE,MAAO,KAGT,uBACE,WAAY,KACZ,QAAS,KACT,SAAU,OACV,MAAO,KAET,uDACE,WAAY,OAAO,IAAK,SAE1B,qDACE,WAAY,OAAO,IAAK,QAE1B,oDACE,UAAW,EAEb,sFACE,UAAW,EAGb,wFACE,WAAY,MAEd,+CACE,0DACE,WAAY,OAGhB,4GACE,wFACE,WAAY,OAIhB,4BACE,YAAa,WACb,QAAS,IAAI,MAAM,KACnB,SAAU,OACV,SAAU,SACV,MAAO,KAET,wCACE,QAAS,KACT,eAAgB,OAChB,OAAQ,KACR,SAAU,SACV,MAAO,KAET,sDACE,WAAY,UAAU,IAAK,YAE7B,wDACE,cAAe,IAAI,MAAM,KACzB,MAAO,QACP,OAAQ,QACR,QAAS,KACT,QAAS,IAAI,IACb,SAAU,SAEZ,0GACE,MAAO,QACP,QAAS,QACT,YAAa,cAAgB,CAAE,WAEjC,kGACE,MAAO,QACP,QAAS,QACT,YAAa,cAAgB,CAAE,WAC/B,aAAc,IACd,cAAe,IACf,SAAU,SACV,MAAO,EAET,6FACE,YAAa,cAAgB,CAAE,WAC/B,aAAc,IACd,cAAe,IACf,SAAU,SACV,MAAO,EAGT,6DADA,6DAEE,YAAa,OACb,WAAY,KACZ,WAAY,QACZ,MAAO,QACP,QAAS,KACT,WAAY,MACZ,aAAc,IACd,cAAe,IAEjB,8FACA,8DACE,UAAW,iBAEb,+FACA,+DACE,UAAW,aAEb,6FACA,6DACE,UAAW,gBAEb,WACE,YAAa,eACb,WAAY,OACZ,YAAa,IACb,IAAK,sCAAwC,eAE/C,gCACE,gCACA,sCACE,UAAW,MAGf,gCACE,gCACA,sCACE,UAAW,MAGf,qBACE,YAAa,cAAgB,CAAE,WAEjC,uBACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,gBACE,YAAa,OACb,QAAS,KACT,OAAQ,KAEV,qEACE,iBAAkB,KAClB,MAAO,KAET,6DAEE,iBAAkB,QAClB,cAAe,IACf,OAAQ,IACR,MAAO,KACP,UAAW,IACX,OAAQ,MACR,SAAU,MACV,MAAO,IACP,MAAO,MACP,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,gDACE,6DACE,UAAW,OAGf,wGACE,OAAQ,MACR,SAAU,OAEZ,+GACE,OAAQ,KAEV,oGACE,QAAS,KAMX,6CACE,QAAS,KAEX,4GACE,2FACE,OAAQ","file":"skin.mobile.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n/* RESET all the things! */\n.tinymce-mobile-outer-container {\n all: initial;\n display: block;\n}\n.tinymce-mobile-outer-container * {\n border: 0;\n box-sizing: initial;\n cursor: inherit;\n float: none;\n line-height: 1;\n margin: 0;\n outline: 0;\n padding: 0;\n -webkit-tap-highlight-color: transparent;\n /* TBIO-3691, stop the gray flicker on touch. */\n text-shadow: none;\n white-space: nowrap;\n}\n.tinymce-mobile-icon-arrow-back::before {\n content: \"\\e5cd\";\n}\n.tinymce-mobile-icon-image::before {\n content: \"\\e412\";\n}\n.tinymce-mobile-icon-cancel-circle::before {\n content: \"\\e5c9\";\n}\n.tinymce-mobile-icon-full-dot::before {\n content: \"\\e061\";\n}\n.tinymce-mobile-icon-align-center::before {\n content: \"\\e234\";\n}\n.tinymce-mobile-icon-align-left::before {\n content: \"\\e236\";\n}\n.tinymce-mobile-icon-align-right::before {\n content: \"\\e237\";\n}\n.tinymce-mobile-icon-bold::before {\n content: \"\\e238\";\n}\n.tinymce-mobile-icon-italic::before {\n content: \"\\e23f\";\n}\n.tinymce-mobile-icon-unordered-list::before {\n content: \"\\e241\";\n}\n.tinymce-mobile-icon-ordered-list::before {\n content: \"\\e242\";\n}\n.tinymce-mobile-icon-font-size::before {\n content: \"\\e245\";\n}\n.tinymce-mobile-icon-underline::before {\n content: \"\\e249\";\n}\n.tinymce-mobile-icon-link::before {\n content: \"\\e157\";\n}\n.tinymce-mobile-icon-unlink::before {\n content: \"\\eca2\";\n}\n.tinymce-mobile-icon-color::before {\n content: \"\\e891\";\n}\n.tinymce-mobile-icon-previous::before {\n content: \"\\e314\";\n}\n.tinymce-mobile-icon-next::before {\n content: \"\\e315\";\n}\n.tinymce-mobile-icon-large-font::before,\n.tinymce-mobile-icon-style-formats::before {\n content: \"\\e264\";\n}\n.tinymce-mobile-icon-undo::before {\n content: \"\\e166\";\n}\n.tinymce-mobile-icon-redo::before {\n content: \"\\e15a\";\n}\n.tinymce-mobile-icon-removeformat::before {\n content: \"\\e239\";\n}\n.tinymce-mobile-icon-small-font::before {\n content: \"\\e906\";\n}\n.tinymce-mobile-icon-readonly-back::before,\n.tinymce-mobile-format-matches::after {\n content: \"\\e5ca\";\n}\n.tinymce-mobile-icon-small-heading::before {\n content: \"small\";\n}\n.tinymce-mobile-icon-large-heading::before {\n content: \"large\";\n}\n.tinymce-mobile-icon-small-heading::before,\n.tinymce-mobile-icon-large-heading::before {\n font-family: sans-serif;\n font-size: 80%;\n}\n.tinymce-mobile-mask-edit-icon::before {\n content: \"\\e254\";\n}\n.tinymce-mobile-icon-back::before {\n content: \"\\e5c4\";\n}\n.tinymce-mobile-icon-heading::before {\n /* TODO: Translate */\n content: \"Headings\";\n font-family: sans-serif;\n font-size: 80%;\n font-weight: bold;\n}\n.tinymce-mobile-icon-h1::before {\n content: \"H1\";\n font-weight: bold;\n}\n.tinymce-mobile-icon-h2::before {\n content: \"H2\";\n font-weight: bold;\n}\n.tinymce-mobile-icon-h3::before {\n content: \"H3\";\n font-weight: bold;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {\n align-items: center;\n display: flex;\n justify-content: center;\n background: rgba(51, 51, 51, 0.5);\n height: 100%;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {\n align-items: center;\n border-radius: 50%;\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n font-size: 1em;\n justify-content: space-between;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {\n align-items: center;\n display: flex;\n justify-content: center;\n border-radius: 50%;\n height: 2.1em;\n width: 2.1em;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {\n align-items: center;\n display: flex;\n justify-content: center;\n flex-direction: column;\n font-size: 1em;\n}\n@media only screen and (min-device-width:700px) {\n .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {\n font-size: 1.2em;\n }\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {\n align-items: center;\n display: flex;\n justify-content: center;\n border-radius: 50%;\n height: 2.1em;\n width: 2.1em;\n background-color: white;\n color: #207ab7;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {\n content: \"\\e900\";\n font-family: 'tinymce-mobile', sans-serif;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {\n z-index: 2;\n}\n.tinymce-mobile-android-container.tinymce-mobile-android-maximized {\n background: #ffffff;\n border: none;\n bottom: 0;\n display: flex;\n flex-direction: column;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n}\n.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {\n position: relative;\n}\n.tinymce-mobile-android-container .tinymce-mobile-editor-socket {\n display: flex;\n flex-grow: 1;\n}\n.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {\n display: flex !important;\n flex-grow: 1;\n height: auto !important;\n}\n.tinymce-mobile-android-scroll-reload {\n overflow: hidden;\n}\n:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {\n margin-top: 23px;\n}\n.tinymce-mobile-toolstrip {\n background: #fff;\n display: flex;\n flex: 0 0 auto;\n z-index: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {\n align-items: center;\n background-color: #fff;\n border-bottom: 1px solid #cccccc;\n display: flex;\n flex: 1;\n height: 2.5em;\n width: 100%;\n /* Make it no larger than the toolstrip, so that it needs to scroll */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {\n align-items: center;\n display: flex;\n height: 100%;\n flex-shrink: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {\n background: #f44336;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {\n flex-grow: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {\n align-items: center;\n display: flex;\n height: 80%;\n margin-left: 2px;\n margin-right: 2px;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {\n background: #c8cbcf;\n color: #cccccc;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {\n background: #207ab7;\n color: #eceff1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {\n /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n padding-bottom: 0.4em;\n padding-top: 0.4em;\n /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */\n /* For widgets like the colour picker, use the whole height */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {\n display: flex;\n min-height: 1.5em;\n overflow: hidden;\n padding-left: 0;\n padding-right: 0;\n position: relative;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {\n display: flex;\n height: 100%;\n transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {\n display: flex;\n flex: 0 0 auto;\n justify-content: space-between;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {\n font-family: Sans-serif;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {\n display: flex;\n flex-grow: 1;\n position: relative;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {\n -ms-grid-row-align: center;\n align-self: center;\n background: inherit;\n border: none;\n border-radius: 50%;\n color: #888;\n font-size: 0.6em;\n font-weight: bold;\n height: 100%;\n padding-right: 2px;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {\n display: none;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {\n align-items: center;\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {\n align-items: center;\n display: flex;\n font-weight: bold;\n height: 100%;\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {\n visibility: hidden;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {\n color: #cccccc;\n font-size: 10px;\n line-height: 10px;\n margin: 0 2px;\n padding-top: 3px;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {\n color: #c8cbcf;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {\n margin-left: 0.5em;\n margin-right: 0.9em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {\n margin-left: 0.9em;\n margin-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {\n display: flex;\n flex: 1;\n margin-left: 0;\n margin-right: 0;\n padding: 0.28em 0;\n position: relative;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {\n background: #cccccc;\n display: flex;\n flex: 1;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {\n padding-left: 2em;\n padding-right: 2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {\n background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);\n display: flex;\n flex: 1;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {\n /* Not part of theming */\n background: black;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n width: 1.2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {\n /* Not part of theming */\n background: white;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n width: 1.2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {\n /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave\n * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is\n * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without\n * this approach.\n */\n align-items: center;\n background-clip: padding-box;\n background-color: #455a64;\n border: 0.5em solid rgba(136, 136, 136, 0);\n border-radius: 3em;\n bottom: 0;\n color: #fff;\n display: flex;\n height: 0.5em;\n justify-content: center;\n left: -10px;\n margin: auto;\n position: absolute;\n top: 0;\n transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);\n width: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {\n border: 0.5em solid rgba(136, 136, 136, 0.39);\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {\n flex-direction: column;\n justify-content: center;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {\n align-items: center;\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {\n background: #ffffff;\n border: none;\n border-radius: 0;\n color: #455a64;\n flex-grow: 1;\n font-size: 0.85em;\n padding-bottom: 0.1em;\n padding-left: 5px;\n padding-top: 0.1em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {\n /* WebKit, Blink, Edge */\n color: #888;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {\n /* WebKit, Blink, Edge */\n color: #888;\n}\n/* dropup */\n.tinymce-mobile-dropup {\n background: white;\n display: flex;\n overflow: hidden;\n width: 100%;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {\n transition: height 0.3s ease-out;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {\n transition: height 0.3s ease-in;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {\n flex-grow: 0;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {\n flex-grow: 1;\n}\n/* TODO min-height for device size and orientation */\n.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 200px;\n}\n@media only screen and (orientation: landscape) {\n .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 200px;\n }\n}\n@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {\n .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 150px;\n }\n}\n/* styles menu */\n.tinymce-mobile-styles-menu {\n font-family: sans-serif;\n outline: 4px solid black;\n overflow: hidden;\n position: relative;\n width: 100%;\n}\n.tinymce-mobile-styles-menu [role=\"menu\"] {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: absolute;\n width: 100%;\n}\n.tinymce-mobile-styles-menu [role=\"menu\"].transitioning {\n transition: transform 0.5s ease-in-out;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {\n border-bottom: 1px solid #ddd;\n color: #455a64;\n cursor: pointer;\n display: flex;\n padding: 1em 1em;\n position: relative;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {\n color: #455a64;\n content: \"\\e314\";\n font-family: 'tinymce-mobile', sans-serif;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {\n color: #455a64;\n content: \"\\e315\";\n font-family: 'tinymce-mobile', sans-serif;\n padding-left: 1em;\n padding-right: 1em;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {\n font-family: 'tinymce-mobile', sans-serif;\n padding-left: 1em;\n padding-right: 1em;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {\n align-items: center;\n background: #fff;\n border-top: #455a64;\n color: #455a64;\n display: flex;\n min-height: 2.5em;\n padding-left: 1em;\n padding-right: 1em;\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"before\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"before\"] {\n transform: translate(-100%);\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"current\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"current\"] {\n transform: translate(0%);\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"after\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"after\"] {\n transform: translate(100%);\n}\n@font-face {\n font-family: 'tinymce-mobile';\n font-style: normal;\n font-weight: normal;\n src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');\n}\n@media (min-device-width: 700px) {\n .tinymce-mobile-outer-container,\n .tinymce-mobile-outer-container input {\n font-size: 25px;\n }\n}\n@media (max-device-width: 700px) {\n .tinymce-mobile-outer-container,\n .tinymce-mobile-outer-container input {\n font-size: 18px;\n }\n}\n.tinymce-mobile-icon {\n font-family: 'tinymce-mobile', sans-serif;\n}\n.mixin-flex-and-centre {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.mixin-flex-bar {\n align-items: center;\n display: flex;\n height: 100%;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {\n background-color: #fff;\n width: 100%;\n}\n.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */\n background-color: #207ab7;\n border-radius: 50%;\n bottom: 1em;\n color: white;\n font-size: 1em;\n height: 2.1em;\n position: fixed;\n right: 2em;\n width: 2.1em;\n align-items: center;\n display: flex;\n justify-content: center;\n}\n@media only screen and (min-device-width:700px) {\n .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n font-size: 1.2em;\n }\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {\n height: 300px;\n overflow: hidden;\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {\n height: 100%;\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {\n display: none;\n}\n/*\n Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets\n increased and the whole body becomes scrollable. It's important!\n */\ninput[type=\"file\"]::-webkit-file-upload-button {\n display: none;\n}\n@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {\n .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n bottom: 50%;\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["ui/dark/skin.mobile.css"],"names":[],"mappings":";;;;;;AAOA,gCACE,IAAK,QACL,QAAS,MAEX,kCACE,OAAQ,EACR,WAAY,QACZ,OAAQ,QACR,MAAO,KACP,YAAa,EACb,OAAQ,EACR,QAAS,EACT,QAAS,EACT,4BAA6B,YAE7B,YAAa,KACb,YAAa,OAEf,wCACE,QAAS,QAEX,mCACE,QAAS,QAEX,2CACE,QAAS,QAEX,sCACE,QAAS,QAEX,0CACE,QAAS,QAEX,wCACE,QAAS,QAEX,yCACE,QAAS,QAEX,kCACE,QAAS,QAEX,oCACE,QAAS,QAEX,4CACE,QAAS,QAEX,0CACE,QAAS,QAEX,uCACE,QAAS,QAEX,uCACE,QAAS,QAEX,kCACE,QAAS,QAEX,oCACE,QAAS,QAEX,mCACE,QAAS,QAEX,sCACE,QAAS,QAEX,kCACE,QAAS,QAEX,wCACA,2CACE,QAAS,QAEX,kCACE,QAAS,QAEX,kCACE,QAAS,QAEX,0CACE,QAAS,QAEX,wCACE,QAAS,QAGX,sCADA,2CAEE,QAAS,QAEX,2CACE,QAAS,QAEX,2CACE,QAAS,QAGX,2CADA,2CAEE,YAAa,WACb,UAAW,IAEb,uCACE,QAAS,QAEX,kCACE,QAAS,QAEX,qCAEE,QAAS,WACT,YAAa,WACb,UAAW,IACX,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,8DACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,WAAY,kBACZ,OAAQ,KACR,SAAU,SACV,IAAK,EACL,MAAO,KAET,gGACE,YAAa,OACb,cAAe,IACf,QAAS,KACT,eAAgB,OAChB,YAAa,WACb,UAAW,IACX,gBAAiB,cAEnB,iHACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,cAAe,IACf,OAAQ,MACR,MAAO,MAET,oIACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,eAAgB,OAChB,UAAW,IAEb,gDACE,oIACE,UAAW,OAGf,kKACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,cAAe,IACf,OAAQ,MACR,MAAO,MACP,iBAAkB,KAClB,MAAO,QAET,0KACE,QAAS,QACT,YAAa,cAAgB,CAAE,WAEjC,8MACE,QAAS,EAEX,mEACE,WAAY,KACZ,OAAQ,KACR,OAAQ,EACR,QAAS,KACT,eAAgB,OAChB,KAAM,EACN,SAAU,MACV,MAAO,EACP,IAAK,EAEP,yEACE,SAAU,SAEZ,gEACE,QAAS,KACT,UAAW,EAEb,uEACE,QAAS,eACT,UAAW,EACX,OAAQ,eAEV,sCACE,SAAU,OAEZ,sFACE,WAAY,KAEd,0BACE,WAAY,KACZ,QAAS,KACT,KAAM,EAAE,EAAE,KACV,QAAS,EAEX,kDACE,YAAa,OACb,iBAAkB,KAClB,cAAe,IAAI,MAAM,KACzB,QAAS,KACT,KAAM,EACN,OAAQ,MACR,MAAO,KAGT,qHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,YAAa,EAEf,yHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EAER,mJACE,WAAY,QAEd,6JACE,UAAW,EAEb,wJACE,aAAc,KACd,cAAe,KAEjB,sLACE,YAAa,OACb,QAAS,KACT,OAAQ,IACR,YAAa,IACb,aAAc,IAEhB,6NACE,WAAY,QACZ,MAAO,KAET,mIACA,kIACE,WAAY,QACZ,MAAO,QAKT,+GACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EACN,eAAgB,KAChB,YAAa,KAIf,iJACE,QAAS,KACT,WAAY,MACZ,SAAU,OACV,aAAc,EACd,cAAe,EACf,SAAU,SACV,MAAO,KAET,yLACE,QAAS,KACT,OAAQ,KACR,WAAY,KAAK,uBAA2B,KAC5C,MAAO,KAET,kOACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,cACjB,MAAO,KAET,wOACE,YAAa,WAEf,kQACE,QAAS,KACT,UAAW,EACX,SAAU,SAEZ,oSACE,mBAAoB,OAChB,WAAY,OAChB,WAAY,QACZ,OAAQ,KACR,cAAe,IACf,MAAO,KACP,UAAW,KACX,YAAa,IACb,OAAQ,KACR,cAAe,IACf,SAAU,SACV,MAAO,EAET,yUACE,QAAS,KAGX,4PADA,gQAEE,YAAa,OACb,QAAS,KAGX,oQADA,wQAEE,YAAa,OACb,QAAS,KACT,YAAa,IACb,OAAQ,KACR,aAAc,KACd,cAAe,KAGjB,+SADA,mTAEE,WAAY,OAEd,wIACE,MAAO,KACP,UAAW,KACX,YAAa,KACb,OAAQ,EAAE,IACV,YAAa,IAEf,kKACE,MAAO,QAET,uJACA,0JACE,YAAa,KACb,aAAc,KAEhB,uJACA,0JACE,YAAa,KACb,aAAc,KAEhB,sIACE,QAAS,KACT,KAAM,EACN,YAAa,EACb,aAAc,EACd,QAAS,MAAO,EAChB,SAAU,SAEZ,4KACE,YAAa,OACb,QAAS,KACT,UAAW,EACX,OAAQ,KAEV,6MACE,WAAY,KACZ,QAAS,KACT,KAAM,EACN,OAAQ,KACR,cAAe,KACf,WAAY,KAEd,0KACE,aAAc,IACd,cAAe,IAEjB,oNACE,YAAa,OACb,QAAS,KACT,UAAW,EACX,OAAQ,KAEV,oPACE,WAAY,+FACZ,QAAS,KACT,KAAM,EACN,OAAQ,KACR,cAAe,KACf,WAAY,KAEd,2MAEE,WAAY,KACZ,OAAQ,KACR,cAAe,KACf,WAAY,KACZ,MAAO,MAET,2MAEE,WAAY,KACZ,OAAQ,KACR,cAAe,KACf,WAAY,KACZ,MAAO,MAET,mKAME,YAAa,OACb,gBAAiB,YACjB,iBAAkB,QAClB,OAAQ,KAAM,MAAM,oBACpB,cAAe,IACf,OAAQ,EACR,MAAO,KACP,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,KAAM,MACN,OAAQ,KACR,SAAU,SACV,IAAK,EACL,WAAY,OAAO,MAAM,4BACzB,MAAO,KAET,+LACE,OAAQ,KAAM,MAAM,sBAEtB,kJACA,mHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EAER,kJACE,eAAgB,OAChB,gBAAiB,OAEnB,kJACE,YAAa,OACb,QAAS,KAEX,yLACE,OAAQ,KAEV,6IACE,QAAS,KAEX,qHACE,WAAY,KACZ,OAAQ,KACR,cAAe,EACf,MAAO,QACP,UAAW,EACX,UAAW,MACX,eAAgB,KAChB,aAAc,IACd,YAAa,KAEf,gJAEE,MAAO,KAET,kIAEE,MAAO,KAGT,uBACE,WAAY,KACZ,QAAS,KACT,SAAU,OACV,MAAO,KAET,uDACE,WAAY,OAAO,IAAK,SAE1B,qDACE,WAAY,OAAO,IAAK,QAE1B,oDACE,UAAW,EAEb,sFACE,UAAW,EAGb,wFACE,WAAY,MAEd,+CACE,0DACE,WAAY,OAGhB,4GACE,wFACE,WAAY,OAIhB,4BACE,YAAa,WACb,QAAS,IAAI,MAAM,KACnB,SAAU,OACV,SAAU,SACV,MAAO,KAET,wCACE,QAAS,KACT,eAAgB,OAChB,OAAQ,KACR,SAAU,SACV,MAAO,KAET,sDACE,WAAY,UAAU,IAAK,YAE7B,wDACE,cAAe,IAAI,MAAM,KACzB,MAAO,QACP,OAAQ,QACR,QAAS,KACT,QAAS,IAAI,IACb,SAAU,SAEZ,0GACE,MAAO,QACP,QAAS,QACT,YAAa,cAAgB,CAAE,WAEjC,kGACE,MAAO,QACP,QAAS,QACT,YAAa,cAAgB,CAAE,WAC/B,aAAc,IACd,cAAe,IACf,SAAU,SACV,MAAO,EAET,6FACE,YAAa,cAAgB,CAAE,WAC/B,aAAc,IACd,cAAe,IACf,SAAU,SACV,MAAO,EAGT,6DADA,6DAEE,YAAa,OACb,WAAY,KACZ,WAAY,QACZ,MAAO,QACP,QAAS,KACT,WAAY,MACZ,aAAc,IACd,cAAe,IAEjB,8FACA,8DACE,UAAW,iBAEb,+FACA,+DACE,UAAW,aAEb,6FACA,6DACE,UAAW,gBAEb,WACE,YAAa,eACb,WAAY,OACZ,YAAa,IACb,IAAK,sCAAwC,eAE/C,gCACE,gCACA,sCACE,UAAW,MAGf,gCACE,gCACA,sCACE,UAAW,MAGf,qBACE,YAAa,cAAgB,CAAE,WAEjC,uBACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,gBACE,YAAa,OACb,QAAS,KACT,OAAQ,KAEV,qEACE,iBAAkB,KAClB,MAAO,KAET,6DAEE,iBAAkB,QAClB,cAAe,IACf,OAAQ,IACR,MAAO,KACP,UAAW,IACX,OAAQ,MACR,SAAU,MACV,MAAO,IACP,MAAO,MACP,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,gDACE,6DACE,UAAW,OAGf,wGACE,OAAQ,MACR,SAAU,OAEZ,+GACE,OAAQ,KAEV,oGACE,QAAS,KAMX,6CACE,QAAS,KAEX,4GACE,2FACE,OAAQ","file":"skin.mobile.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n/* RESET all the things! */\n.tinymce-mobile-outer-container {\n all: initial;\n display: block;\n}\n.tinymce-mobile-outer-container * {\n border: 0;\n box-sizing: initial;\n cursor: inherit;\n float: none;\n line-height: 1;\n margin: 0;\n outline: 0;\n padding: 0;\n -webkit-tap-highlight-color: transparent;\n /* TBIO-3691, stop the gray flicker on touch. */\n text-shadow: none;\n white-space: nowrap;\n}\n.tinymce-mobile-icon-arrow-back::before {\n content: \"\\e5cd\";\n}\n.tinymce-mobile-icon-image::before {\n content: \"\\e412\";\n}\n.tinymce-mobile-icon-cancel-circle::before {\n content: \"\\e5c9\";\n}\n.tinymce-mobile-icon-full-dot::before {\n content: \"\\e061\";\n}\n.tinymce-mobile-icon-align-center::before {\n content: \"\\e234\";\n}\n.tinymce-mobile-icon-align-left::before {\n content: \"\\e236\";\n}\n.tinymce-mobile-icon-align-right::before {\n content: \"\\e237\";\n}\n.tinymce-mobile-icon-bold::before {\n content: \"\\e238\";\n}\n.tinymce-mobile-icon-italic::before {\n content: \"\\e23f\";\n}\n.tinymce-mobile-icon-unordered-list::before {\n content: \"\\e241\";\n}\n.tinymce-mobile-icon-ordered-list::before {\n content: \"\\e242\";\n}\n.tinymce-mobile-icon-font-size::before {\n content: \"\\e245\";\n}\n.tinymce-mobile-icon-underline::before {\n content: \"\\e249\";\n}\n.tinymce-mobile-icon-link::before {\n content: \"\\e157\";\n}\n.tinymce-mobile-icon-unlink::before {\n content: \"\\eca2\";\n}\n.tinymce-mobile-icon-color::before {\n content: \"\\e891\";\n}\n.tinymce-mobile-icon-previous::before {\n content: \"\\e314\";\n}\n.tinymce-mobile-icon-next::before {\n content: \"\\e315\";\n}\n.tinymce-mobile-icon-large-font::before,\n.tinymce-mobile-icon-style-formats::before {\n content: \"\\e264\";\n}\n.tinymce-mobile-icon-undo::before {\n content: \"\\e166\";\n}\n.tinymce-mobile-icon-redo::before {\n content: \"\\e15a\";\n}\n.tinymce-mobile-icon-removeformat::before {\n content: \"\\e239\";\n}\n.tinymce-mobile-icon-small-font::before {\n content: \"\\e906\";\n}\n.tinymce-mobile-icon-readonly-back::before,\n.tinymce-mobile-format-matches::after {\n content: \"\\e5ca\";\n}\n.tinymce-mobile-icon-small-heading::before {\n content: \"small\";\n}\n.tinymce-mobile-icon-large-heading::before {\n content: \"large\";\n}\n.tinymce-mobile-icon-small-heading::before,\n.tinymce-mobile-icon-large-heading::before {\n font-family: sans-serif;\n font-size: 80%;\n}\n.tinymce-mobile-mask-edit-icon::before {\n content: \"\\e254\";\n}\n.tinymce-mobile-icon-back::before {\n content: \"\\e5c4\";\n}\n.tinymce-mobile-icon-heading::before {\n /* TODO: Translate */\n content: \"Headings\";\n font-family: sans-serif;\n font-size: 80%;\n font-weight: bold;\n}\n.tinymce-mobile-icon-h1::before {\n content: \"H1\";\n font-weight: bold;\n}\n.tinymce-mobile-icon-h2::before {\n content: \"H2\";\n font-weight: bold;\n}\n.tinymce-mobile-icon-h3::before {\n content: \"H3\";\n font-weight: bold;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {\n align-items: center;\n display: flex;\n justify-content: center;\n background: rgba(51, 51, 51, 0.5);\n height: 100%;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {\n align-items: center;\n border-radius: 50%;\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n font-size: 1em;\n justify-content: space-between;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {\n align-items: center;\n display: flex;\n justify-content: center;\n border-radius: 50%;\n height: 2.1em;\n width: 2.1em;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {\n align-items: center;\n display: flex;\n justify-content: center;\n flex-direction: column;\n font-size: 1em;\n}\n@media only screen and (min-device-width:700px) {\n .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {\n font-size: 1.2em;\n }\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {\n align-items: center;\n display: flex;\n justify-content: center;\n border-radius: 50%;\n height: 2.1em;\n width: 2.1em;\n background-color: white;\n color: #207ab7;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {\n content: \"\\e900\";\n font-family: 'tinymce-mobile', sans-serif;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {\n z-index: 2;\n}\n.tinymce-mobile-android-container.tinymce-mobile-android-maximized {\n background: #ffffff;\n border: none;\n bottom: 0;\n display: flex;\n flex-direction: column;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n}\n.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {\n position: relative;\n}\n.tinymce-mobile-android-container .tinymce-mobile-editor-socket {\n display: flex;\n flex-grow: 1;\n}\n.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {\n display: flex !important;\n flex-grow: 1;\n height: auto !important;\n}\n.tinymce-mobile-android-scroll-reload {\n overflow: hidden;\n}\n:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {\n margin-top: 23px;\n}\n.tinymce-mobile-toolstrip {\n background: #fff;\n display: flex;\n flex: 0 0 auto;\n z-index: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {\n align-items: center;\n background-color: #fff;\n border-bottom: 1px solid #cccccc;\n display: flex;\n flex: 1;\n height: 2.5em;\n width: 100%;\n /* Make it no larger than the toolstrip, so that it needs to scroll */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {\n align-items: center;\n display: flex;\n height: 100%;\n flex-shrink: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {\n background: #f44336;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {\n flex-grow: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {\n align-items: center;\n display: flex;\n height: 80%;\n margin-left: 2px;\n margin-right: 2px;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {\n background: #c8cbcf;\n color: #cccccc;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {\n background: #207ab7;\n color: #eceff1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {\n /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n padding-bottom: 0.4em;\n padding-top: 0.4em;\n /* Make any buttons aplaytping on the left and right display in the centre (e.g. color edges) */\n /* For widgets like the colour picker, use the whole height */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {\n display: flex;\n min-height: 1.5em;\n overflow: hidden;\n padding-left: 0;\n padding-right: 0;\n position: relative;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {\n display: flex;\n height: 100%;\n transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {\n display: flex;\n flex: 0 0 auto;\n justify-content: space-between;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {\n font-family: Sans-serif;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {\n display: flex;\n flex-grow: 1;\n position: relative;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {\n -ms-grid-row-align: center;\n align-self: center;\n background: inherit;\n border: none;\n border-radius: 50%;\n color: #888;\n font-size: 0.6em;\n font-weight: bold;\n height: 100%;\n padding-right: 2px;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {\n display: none;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {\n align-items: center;\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {\n align-items: center;\n display: flex;\n font-weight: bold;\n height: 100%;\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {\n visibility: hidden;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {\n color: #cccccc;\n font-size: 10px;\n line-height: 10px;\n margin: 0 2px;\n padding-top: 3px;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {\n color: #c8cbcf;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {\n margin-left: 0.5em;\n margin-right: 0.9em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {\n margin-left: 0.9em;\n margin-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {\n display: flex;\n flex: 1;\n margin-left: 0;\n margin-right: 0;\n padding: 0.28em 0;\n position: relative;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {\n background: #cccccc;\n display: flex;\n flex: 1;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {\n padding-left: 2em;\n padding-right: 2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {\n background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);\n display: flex;\n flex: 1;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {\n /* Not part of theming */\n background: black;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n width: 1.2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {\n /* Not part of theming */\n background: white;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n width: 1.2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {\n /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave\n * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is\n * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without\n * this approach.\n */\n align-items: center;\n background-clip: padding-box;\n background-color: #455a64;\n border: 0.5em solid rgba(136, 136, 136, 0);\n border-radius: 3em;\n bottom: 0;\n color: #fff;\n display: flex;\n height: 0.5em;\n justify-content: center;\n left: -10px;\n margin: auto;\n position: absolute;\n top: 0;\n transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);\n width: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {\n border: 0.5em solid rgba(136, 136, 136, 0.39);\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {\n flex-direction: column;\n justify-content: center;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {\n align-items: center;\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {\n background: #ffffff;\n border: none;\n border-radius: 0;\n color: #455a64;\n flex-grow: 1;\n font-size: 0.85em;\n padding-bottom: 0.1em;\n padding-left: 5px;\n padding-top: 0.1em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {\n /* WebKit, Blink, Edge */\n color: #888;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {\n /* WebKit, Blink, Edge */\n color: #888;\n}\n/* dropup */\n.tinymce-mobile-dropup {\n background: white;\n display: flex;\n overflow: hidden;\n width: 100%;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {\n transition: height 0.3s ease-out;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {\n transition: height 0.3s ease-in;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {\n flex-grow: 0;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {\n flex-grow: 1;\n}\n/* TODO min-height for device size and orientation */\n.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 200px;\n}\n@media only screen and (orientation: landscape) {\n .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 200px;\n }\n}\n@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {\n .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 150px;\n }\n}\n/* styles menu */\n.tinymce-mobile-styles-menu {\n font-family: sans-serif;\n outline: 4px solid black;\n overflow: hidden;\n position: relative;\n width: 100%;\n}\n.tinymce-mobile-styles-menu [role=\"menu\"] {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: absolute;\n width: 100%;\n}\n.tinymce-mobile-styles-menu [role=\"menu\"].transitioning {\n transition: transform 0.5s ease-in-out;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {\n border-bottom: 1px solid #ddd;\n color: #455a64;\n cursor: pointer;\n display: flex;\n padding: 1em 1em;\n position: relative;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {\n color: #455a64;\n content: \"\\e314\";\n font-family: 'tinymce-mobile', sans-serif;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {\n color: #455a64;\n content: \"\\e315\";\n font-family: 'tinymce-mobile', sans-serif;\n padding-left: 1em;\n padding-right: 1em;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {\n font-family: 'tinymce-mobile', sans-serif;\n padding-left: 1em;\n padding-right: 1em;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {\n align-items: center;\n background: #fff;\n border-top: #455a64;\n color: #455a64;\n display: flex;\n min-height: 2.5em;\n padding-left: 1em;\n padding-right: 1em;\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"before\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"before\"] {\n transform: translate(-100%);\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"current\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"current\"] {\n transform: translate(0%);\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"after\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"after\"] {\n transform: translate(100%);\n}\n@font-face {\n font-family: 'tinymce-mobile';\n font-style: normal;\n font-weight: normal;\n src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');\n}\n@media (min-device-width: 700px) {\n .tinymce-mobile-outer-container,\n .tinymce-mobile-outer-container input {\n font-size: 25px;\n }\n}\n@media (max-device-width: 700px) {\n .tinymce-mobile-outer-container,\n .tinymce-mobile-outer-container input {\n font-size: 18px;\n }\n}\n.tinymce-mobile-icon {\n font-family: 'tinymce-mobile', sans-serif;\n}\n.mixin-flex-and-centre {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.mixin-flex-bar {\n align-items: center;\n display: flex;\n height: 100%;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {\n background-color: #fff;\n width: 100%;\n}\n.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n /* Note, on the iPod touch in landscape, this isn't visible when the navbar aplaytps */\n background-color: #207ab7;\n border-radius: 50%;\n bottom: 1em;\n color: white;\n font-size: 1em;\n height: 2.1em;\n position: fixed;\n right: 2em;\n width: 2.1em;\n align-items: center;\n display: flex;\n justify-content: center;\n}\n@media only screen and (min-device-width:700px) {\n .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n font-size: 1.2em;\n }\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {\n height: 300px;\n overflow: hidden;\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {\n height: 100%;\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {\n display: none;\n}\n/*\n Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets\n increased and the whole body becomes scrollable. It's important!\n */\ninput[type=\"file\"]::-webkit-file-upload-button {\n display: none;\n}\n@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {\n .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n bottom: 50%;\n }\n}\n"]} \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.css b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.css index 645478bf3289a6e529c18f5f70dc9aebdedb7b75..9297e8b938dff312e7f459551e1ae2e7b707106c 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.css +++ b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.css @@ -1752,9 +1752,9 @@ body.tox-dialog__disable-scroll { .tox .tox-toolbar-textfield, .tox .tox-listboxfield .tox-listbox--select, .tox .tox-textarea { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; + -webkit-aplaytpance: none; + -moz-aplaytpance: none; + aplaytpance: none; background-color: #fff; border-color: #cccccc; border-radius: 3px; @@ -1852,9 +1852,9 @@ body.tox-dialog__disable-scroll { position: relative; } .tox .tox-selectfield select { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; + -webkit-aplaytpance: none; + -moz-aplaytpance: none; + aplaytpance: none; background-color: #fff; border-color: #cccccc; border-radius: 3px; @@ -1908,9 +1908,9 @@ body.tox-dialog__disable-scroll { left: 8px; } .tox .tox-textarea { - -webkit-appearance: textarea; - -moz-appearance: textarea; - appearance: textarea; + -webkit-aplaytpance: textarea; + -moz-aplaytpance: textarea; + aplaytpance: textarea; white-space: pre-wrap; } .tox-fullscreen { diff --git a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.min.css b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.min.css index 7eec33764432cc0ccc2cd071dc6e67ae7db47ce0..0b074d747f297880255cd5d58c03546e7cb30d1c 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.min.css +++ b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.min.css @@ -4,5 +4,5 @@ * For LGPL see License.txt in the project root for license information. * For commercial licenses see https://www.tiny.cloud/ */ -.tox{box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:90000000}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:auto}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:auto}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:auto}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:auto}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:auto}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:auto}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:auto}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:auto}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:auto}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:auto}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:auto}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:auto}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:auto}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{z-index:auto}.tox-shadowhost.tox-fullscreen{z-index:auto}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:auto}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:90000000}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:auto}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:auto}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} +.tox{box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:90000000}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:capitalize;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:capitalize}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:auto}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:auto}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:auto}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:auto}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:auto}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:auto}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:auto}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:auto}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:auto}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:auto}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:auto}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:auto}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:auto}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-aplaytpance:none;-moz-aplaytpance:none;aplaytpance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-aplaytpance:none;-moz-aplaytpance:none;aplaytpance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-aplaytpance:textarea;-moz-aplaytpance:textarea;aplaytpance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{z-index:auto}.tox-shadowhost.tox-fullscreen{z-index:auto}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:auto}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:90000000}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:auto}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:auto}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px} /*# sourceMappingURL=skin.min.css.map */ diff --git a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.min.css.map b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.min.css.map index 70cc817dc7e756419ad1281e0a71e93558650e85..e4cbe90421f85d922e521489b96ec5e3852d42d9 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.min.css.map +++ b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["ui/default/skin.css"],"names":[],"mappings":";;;;;;AAMA,KACE,WAAY,YACZ,MAAO,QACP,OAAQ,KACR,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,OACb,4BAA6B,YAC7B,gBAAiB,KACjB,YAAa,KACb,eAAgB,KAChB,eAAgB,QAChB,YAAa,OAEf,yBACE,WAAY,QACZ,MAAO,QACP,OAAQ,QACR,UAAW,QACX,YAAa,QACb,UAAW,QACX,WAAY,QACZ,YAAa,QACb,YAAa,QACb,4BAA6B,QAC7B,WAAY,QACZ,gBAAiB,QACjB,YAAa,QACb,eAAgB,QAChB,eAAgB,QAChB,YAAa,QAEf,yBAEE,WAAY,IACZ,OAAQ,EACR,MAAO,KACP,OAAQ,KACR,OAAQ,EACR,UAAW,KACX,QAAS,EACT,QAAS,EACT,SAAU,OACV,MAAO,KAET,oBACE,UAAW,IACX,WAAY,KAEd,cACE,UAAW,IACX,WAAY,MAEd,aACE,OAAQ,IAAI,MAAM,KAClB,cAAe,EACf,WAAY,KACZ,WAAY,WACZ,QAAS,KACT,eAAgB,OAChB,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,SAAU,OACV,SAAU,SACV,WAAY,kBAEd,oBACE,OAAQ,KACR,WAAY,KAEd,uCACE,OAAQ,IAAI,MAAM,KAClB,cAAe,EACf,WAAY,KAEd,iBACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,QAAS,KAEX,oBACA,wBACE,QAAS,EAEX,yBACE,OAAQ,EAEV,kCACE,YAAa,OACb,QAAS,KACT,cAAe,IAEjB,uCACE,YAAa,QACb,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,KACT,gBAAiB,cAEnB,2CACE,eAAgB,IAElB,+CACE,YAAa,OACb,QAAS,KACT,cAAe,IAEjB,oEACE,aAAc,KACd,aAAc,MAEhB,kCACE,WAAY,KAEd,4FACE,iBAAkB,oBAClB,aAAc,oBACd,MAAO,QAET,wGACE,aAAc,oBAEhB,8EACE,MAAO,QAET,wEACE,KAAM,QAER,sEACE,MAAO,QAET,4FACE,iBAAkB,mBAClB,aAAc,mBACd,MAAO,QAET,wGACE,aAAc,mBAEhB,8EACE,MAAO,QAET,wEACE,KAAM,QAER,sEACE,MAAO,QAET,6FACE,iBAAkB,iBAClB,aAAc,iBACd,MAAO,QAET,yGACE,aAAc,iBAEhB,+EACE,MAAO,KAET,yEACE,KAAM,KAER,uEACE,MAAO,KAET,+FACE,iBAAkB,oBAClB,aAAc,oBACd,MAAO,QAET,2GACE,aAAc,oBAEhB,iFACE,MAAO,QAET,2EACE,KAAM,QAER,yEACE,MAAO,QAET,+DACA,qFACE,WAAY,EAEd,uFACE,YAAa,IAEf,8FACE,YAAa,KAEf,gFACE,QAAS,IAAI,IAAI,IAAI,IAEvB,4FACE,kBAAmB,IACnB,aAAc,IAEhB,iFACE,aAAc,IAEhB,wFACE,aAAc,KAEhB,0EACE,QAAS,IAAI,IAAI,IAAI,IAEvB,sFACE,mBAAoB,IACpB,cAAe,IAEjB,oBACE,QAAS,KACT,KAAM,EAAE,EAAE,KAEZ,cACE,QAAS,KACT,KAAM,EAAE,EAAE,KAEZ,iBACE,iBAAkB,QAClB,iBAAkB,KAClB,oBAAqB,EAAE,EACvB,kBAAmB,OACnB,aAAc,QACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,KACP,OAAQ,QACR,QAAS,aACT,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,YAAa,KACb,OAAQ,EACR,QAAS,EACT,QAAS,IAAI,KACb,WAAY,OACZ,gBAAiB,KACjB,eAAgB,WAChB,YAAa,OAEf,2BACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,qBACP,OAAQ,YAEV,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,uCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,4BACE,iBAAkB,QAClB,iBAAkB,KAClB,oBAAqB,EAAE,EACvB,kBAAmB,OACnB,aAAc,QACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,MAAO,QACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,QAAS,EACT,QAAS,IAAI,KACb,gBAAiB,KACjB,eAAgB,WAElB,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,kBAET,iDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,iDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,kDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,uBACA,kCACA,wDACE,QAAS,IAEX,qCACA,gDACA,sEACE,QAAS,MACT,KAAM,aAER,sBACE,WAAY,EACZ,OAAQ,KACR,WAAY,WACZ,OAAQ,QACR,QAAS,aACT,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,IACb,YAAa,IACb,OAAQ,EACR,QAAS,EACT,YAAa,OAEf,0BACE,UAAW,KAEb,wBACE,iBAAkB,YAClB,aAAc,YACd,WAAY,MACZ,MAAO,QAET,kCACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,kBAET,6CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,6CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,8CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,sCACE,KAAM,aAER,8DACE,MAAO,QAET,mBACE,YAAa,OACb,cAAe,IACf,OAAQ,QACR,QAAS,KACT,OAAQ,KACR,UAAW,KAEb,0BAEE,OAAQ,IACR,SAAU,OACV,SAAU,SACV,IAAK,KACL,MAAO,IAET,0BACE,YAAa,OACb,cAAe,IACf,WAAY,EAAE,EAAE,EAAE,IAAI,YACtB,WAAY,YACZ,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,QAAS,gBACT,MAAO,KAET,4DACE,QAAS,MACT,KAAM,kBAER,gEACE,QAAS,KACT,KAAM,QAER,0DACE,QAAS,KACT,KAAM,QAER,6BACE,MAAO,kBACP,OAAQ,YAEV,kFACE,KAAM,kBAER,oFACE,KAAM,kBAER,wFACE,KAAM,kBAER,8FACE,QAAS,KAEX,4FACE,QAAS,MAEX,oGACE,QAAS,KAEX,wGACE,QAAS,MAEX,0DACE,cAAe,IACf,WAAY,MAAM,EAAE,EAAE,EAAE,IAAI,QAC5B,QAAS,gBAEX,yCACE,YAAa,IAEf,yCACE,KAAM,SAER,2CACE,YAAa,IAEf,mCACE,aAAc,IAEhB,mCACE,MAAO,SAET,qCACE,aAAc,IAKhB,qDACE,QAAS,KACT,QAAS,EAEX,kDACE,QAAS,KACT,UAAW,KACX,WAAY,MACZ,WAAY,OACZ,WAAY,KACZ,QAAS,EAEX,kDACE,oBAAqB,EACrB,aAAc,KACd,kBAAmB,EACnB,mBAAoB,EACpB,aAAc,MACd,iBAAkB,IAClB,QAAS,IAAI,EAEf,8DACE,iBAAkB,EAEpB,oCACE,iBAAkB,QAClB,MAAO,kBACP,OAAQ,QACR,UAAW,KACX,WAAY,OACZ,YAAa,IACb,cAAe,IACf,WAAY,KACZ,QAAS,IAAI,IACb,eAAgB,KAChB,sBAAuB,KACvB,oBAAqB,KAClB,iBAAkB,KACjB,gBAAiB,KACb,YAAa,KAEvB,2BACE,YAAa,OACb,MAAO,QACP,OAAQ,QACR,QAAS,KACT,sBAAuB,KACvB,oBAAqB,KAClB,iBAAkB,KACjB,gBAAiB,KACb,YAAa,KAEvB,iDACE,QAAS,IAAI,IAEf,oDACE,cAAe,IACf,QAAS,IAEX,iDACE,cAAe,IACf,QAAS,IAEX,0DACE,iBAAkB,KAClB,MAAO,QAET,yDACE,iBAAkB,QAEpB,6DACE,iBAAkB,QAClB,MAAO,QAET,4DACE,iBAAkB,QAEpB,0DACE,iBAAkB,QAClB,MAAO,QAET,oGACE,iBAAkB,QAClB,MAAO,QAET,oGACE,MAAO,QAET,uGACE,MAAO,QAET,2CACE,iBAAkB,YAClB,MAAO,kBACP,OAAQ,YAGV,qCADA,gCAEE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,MAAO,KAGT,yCADA,oCAEE,KAAM,aAER,4DACE,OAAQ,KACR,MAAO,KAET,iCACE,MAAO,aACP,QAAS,aACT,KAAM,EACN,wBAAyB,KACzB,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,KACb,eAAgB,KAChB,WAAY,UAEd,qCACE,MAAO,kBACP,QAAS,aACT,UAAW,KACX,OAAQ,KACR,YAAa,KACb,eAAgB,KAElB,iCACE,YAAa,OACb,QAAS,KACT,WAAY,KAEd,wCACE,QAAS,GACT,UAAW,EACX,WAAY,QAEd,qCACE,KAAM,QAER,yHACE,QAAS,KAEX,qJACE,QAAS,KAEX,iCACE,iBAAkB,KAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBACtB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,OACX,cAAe,EACf,WAAY,KACZ,QAAS,EAEX,wDACE,YAAa,OACb,QAAS,KACT,UAAW,OACX,OAAQ,EACR,QAAS,EAAE,IAEb,uDACE,OAAQ,KACR,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EAAE,IAEb,6DACE,YAAa,OAEf,6DACE,YAAa,IAEf,qCACE,QAAS,KAEX,0CACE,YAAa,OACb,KAAM,EAAE,EAAE,KACV,eAAgB,IAElB,qFACE,aAAc,KAEhB,sFACE,gBAAiB,SACjB,YAAa,KAEf,qFACE,YAAa,WACb,cAAe,KAEjB,wFACE,YAAa,OAEf,wFACE,YAAa,SACb,WAAY,KAEd,6CACE,mBAAoB,OAChB,WAAY,OAChB,KAAM,EAAE,EAAE,KACV,eAAgB,OAElB,wFACE,YAAa,WAEf,yFACE,YAAa,SAEf,wFACE,WAAY,WAEd,2FACE,mBAAoB,OAChB,WAAY,OAElB,2FACE,WAAY,SAEd,0FACE,aAAc,IAAI,MAAM,KAE1B,mFACE,YAAa,IAEf,wGACE,YAAa,IAEf,oDACE,YAAa,KACb,WAAY,MAEd,gEACE,YAAa,KAEf,oFACE,YAAa,IAAI,MAAM,KAEzB,6EACE,aAAc,IAEhB,kGACE,aAAc,IAKhB,4EACE,UAAW,gBAEb,8CACE,aAAc,KACd,WAAY,KAEd,0DACE,aAAc,KACd,UAAW,gBAEb,sEACE,aAAc,IAEhB,iCACE,QAAS,KACT,eAAgB,IAChB,OAAQ,MACR,OAAQ,EAEV,qBACE,WAAY,WACZ,QAAS,KACT,OAAQ,KAEV,8BACE,OAAQ,KAEV,qBACA,8BACE,MAAO,MAET,2BACE,WAAY,IACZ,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,YACZ,OAAQ,KACR,SAAU,SACV,MAAO,KAET,iCACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,OAAQ,KACR,SAAU,SACV,MAAO,KAET,qBACE,WAAY,WACZ,OAAQ,KACR,MAAO,KAET,8BACE,WAAY,4GACZ,OAAQ,KACR,MAAO,KAET,qBACA,8BACE,MAAO,KAET,2BACE,WAAY,KACZ,OAAQ,IAAI,MAAM,KAClB,WAAY,YACZ,OAAQ,IACR,MAAO,KAET,mBACE,QAAS,KACT,eAAgB,OAChB,gBAAiB,cAEnB,uBACE,YAAa,OACb,QAAS,KACT,gBAAiB,cACjB,cAAe,IACf,MAAO,QAET,yBACE,MAAO,IAET,qCAEE,OAAQ,IAAI,MAAM,cAEpB,qCACE,OAAQ,IAAI,MAAM,KAClB,UAAW,EACX,cAAe,EAEjB,oCACE,aAAc,KAEhB,oCACE,aAAc,KAEhB,0CACE,YAAa,KAEf,wCACE,aAAc,KAEhB,8BACE,YAAa,KAEf,8BACE,YAAa,KAEf,oCACE,aAAc,KAEhB,kCACE,YAAa,KAEf,gCAEA,0CADA,yCAEE,OAAQ,IAAI,EAAE,IAAI,IAEpB,qEACE,OAAQ,EACR,OAAQ,KAAK,EAEf,wBACE,QAAS,KAEX,iBACE,OAAQ,KACR,WAAY,UAAU,IAAK,CAAE,WAAW,KACxC,MAAO,KAGT,uBADA,uBAEE,WAAY,EAAE,EAAE,EAAE,IAAI,qBAAyB,MAC/C,UAAW,UAEb,yBACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,kCACE,OAAQ,QAEV,+BACE,YAAa,OACb,iBAAkB,YAClB,OAAQ,EACR,OAAQ,QACR,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,QAAS,EACT,QAAS,EACT,MAAO,KAET,mCACE,OAAQ,KACR,MAAO,KAET,qCACE,WAAY,QAEd,8CACE,YAAa,KAEf,wCACE,aAAc,KAEhB,yBACE,WAAY,KACZ,SAAU,SAEZ,4CACE,WAAY,IAEd,kBACE,WAAY,KACZ,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,EAAE,kBACxB,QAAS,IAAI,IAAI,KAAK,IACtB,SAAU,SAEZ,0BACE,YAAa,OACb,MAAO,QACP,QAAS,KACT,gBAAiB,cAEnB,wBACE,MAAO,kBACP,UAAW,KAEb,wBACE,MAAO,QACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,WAAY,IACZ,SAAU,SACV,eAAgB,QAElB,iCACE,OAAQ,KACR,YAAa,OACb,MAAO,KAET,4BACE,YAAa,IAEf,8BACE,MAAO,kBACP,UAAW,KACX,WAAY,OAEd,0BACE,OAAQ,EAEV,iCACE,YAAa,KACb,WAAY,OAEd,yCACE,WAAY,KACZ,OAAQ,EACR,QAAS,GACT,QAAS,KACT,KAAM,EACN,QAAS,GACT,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,yBACE,QAAS,KACT,YAAa,EACb,UAAW,KACX,gBAAiB,SACjB,WAAY,IAEd,sCACE,cAAe,IACf,MAAO,KAET,wBACE,QAAS,KACT,UAAW,KACX,gBAAiB,SACjB,WAAY,KAEd,mCACE,WAAY,0CACZ,OAAQ,EACR,QAAS,GACT,QAAS,MACT,OAAQ,IACR,WAAY,MACZ,SAAU,SACV,MAAO,KAET,2BACE,WAAY,KACZ,OAAQ,EACR,QAAS,KACT,eAAgB,OAChB,UAAW,EACX,KAAM,EACN,QAAS,GACT,SAAU,SACV,MAAO,EACP,WAAY,OACZ,IAAK,EACL,QAAS,EAEX,gCACE,YAAa,OACb,MAAO,QACP,QAAS,KACT,eAAgB,OAChB,SAAU,SAEZ,oCACE,eAAgB,KAElB,+BACE,OAAQ,EACR,eAAgB,OAChB,UAAW,KACX,KAAM,EACN,QAAS,IACT,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,GAEX,iCACE,iBAAkB,KAClB,WAAY,EAAE,EAAE,IAAI,IAAI,KACxB,MAAO,QACP,WAAY,OAEd,kDACE,UAAW,KAEb,gCACE,YAAa,OACb,iBAAkB,KAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,GAEX,0BACE,QAAS,KACT,eAAgB,OAChB,YAAa,EACb,SAAU,KAEZ,wBACE,OAAQ,IAEV,uCACE,YAAa,IAEf,4DACA,mDACA,oDACE,YAAa,IAEf,iCACE,aAAc,IAEhB,sDACA,6CACA,8CACE,aAAc,IAEhB,eACE,YAAa,OACb,QAAS,KAEX,2BACE,KAAM,kBAER,qBACE,MAAO,kBACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,UAElB,0CACE,aAAc,IAEhB,sDACE,YAAa,IAEf,oCACE,YAAa,IAEf,gDACE,aAAc,IAEhB,sBACE,YAAa,OACb,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,MACV,MAAO,EACP,IAAK,EACL,QAAS,KAEX,gCACE,iBAAkB,sBAClB,OAAQ,EACR,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,wCACE,iBAAkB,KAEpB,iBACE,iBAAkB,KAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,EAAE,KAAK,KAAK,MAAM,kBAAsB,CAAE,EAAE,EAAE,KAAK,IAAI,mBACnE,QAAS,KACT,eAAgB,OAChB,WAAY,KACZ,UAAW,MACX,SAAU,OACV,SAAU,SACV,MAAO,KACP,QAAS,EAEX,yCACE,8CACE,WAAY,WACZ,OAAQ,IAAI,KACZ,MAAO,oBAGX,wBACE,QAAS,KAEX,yBACE,YAAa,OACb,iBAAkB,KAClB,cAAe,KACf,MAAO,QACP,QAAS,KACT,UAAW,KACX,gBAAiB,cACjB,QAAS,IAAI,KAAK,EAAE,KACpB,SAAU,SAEZ,qCACE,QAAS,EAEX,6BACE,OAAQ,KACR,OAAQ,KACR,KAAM,EACN,SAAU,SACV,IAAK,EACL,MAAO,KAET,oCACE,OAAQ,SAEV,0BACE,YAAa,KAEf,wBACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,OAAQ,EACR,eAAgB,KAElB,uBACE,MAAO,QACP,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,UAAW,EACX,WAAY,KACZ,eAAgB,KAElB,yCACE,oDACE,eAAgB,QAGpB,2BACE,YAAa,WACb,QAAS,KACT,eAAgB,OAChB,QAAS,KAAK,KAEhB,yCACE,wDACE,eAAgB,IAChB,2BAA4B,MAC5B,WAAY,KACZ,eAAgB,GAGpB,gCACE,cAAe,IAAI,MAAM,YACzB,MAAO,kBACP,QAAS,aACT,UAAW,KACX,YAAa,IACb,cAAe,IACf,gBAAiB,KACjB,YAAa,OAEf,sCACE,iBAAkB,oBAEpB,wCACE,cAAe,IAAI,MAAM,QACzB,MAAO,QAET,+BACE,WAAY,WACZ,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KACzB,WAAY,MACZ,SAAU,KACV,2BAA4B,MAC5B,QAAS,KAAK,KAEhB,iCACE,cAAe,EACf,WAAY,KAEd,4CACE,WAAY,EAEd,2CACE,cAAe,EAEjB,2CACE,cAAe,EACf,WAAY,EAEd,iCACE,MAAO,QACP,OAAQ,QACR,gBAAiB,KAGnB,uCADA,uCAEE,MAAO,QACP,gBAAiB,KAEnB,wCACE,MAAO,QACP,gBAAiB,KAEnB,mCACE,KAAM,QAER,kCACE,QAAS,MACT,gBAAiB,KACjB,cAAe,KACf,mBAAoB,EACZ,kBAAmB,EAC3B,qBAAsB,EACd,oBAAqB,EAC7B,sBAAuB,OACf,qBAAsB,OAEhC,mDACE,MAAO,QACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,cAAe,KACf,WAAY,KACZ,eAAgB,KAElB,mDACE,MAAO,QACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,cAAe,KACf,WAAY,KACZ,eAAgB,KAElB,kDACE,cAAe,KAEjB,+DACA,+DACA,8DACE,WAAY,EAEd,8DACA,8DACA,6DACE,cAAe,EAEjB,8DACA,8DACA,6DACE,cAAe,EACf,WAAY,EAEd,2BACE,OAAQ,MACR,UAAW,OAEb,2BACE,UAAW,MAEb,qDACE,SAAU,KAEZ,yCACE,WAAY,OAEd,yBACE,YAAa,OACb,iBAAkB,KAClB,WAAY,IAAI,MAAM,KACtB,QAAS,KACT,gBAAiB,cACjB,QAAS,IAAI,KAGf,6BADA,+BAEE,QAAS,KAEX,+BACE,YAAa,OACb,iBAAkB,sBAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,wBACE,gBAAiB,SACjB,MAAO,KAET,iCACE,YAAa,IACb,eAAgB,IAElB,iCACE,cAAe,IAAI,MAAM,KAE3B,4CACE,cAAe,KAEjB,2BACE,eAAgB,IAChB,YAAa,IAEf,yBACE,SAAU,SACV,MAAO,KACP,QAAS,KAEX,8BACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,0CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,wDACE,KAAM,EACN,wBAAyB,KACzB,OAAQ,KAEV,8BACE,QAAS,EACT,WAAY,OAEd,6BACE,QAAS,EACT,WAAY,QAEd,iCACE,WAAY,WAAW,GAAG,OAAO,GAAI,CAAE,QAAQ,IAAK,KAEtD,wDACE,iBAAkB,GAKpB,sCACE,SAAU,iBAEZ,yCACE,uEACE,aAAc,GAGlB,yCACE,8FACE,YAAa,KAIjB,kEADA,oEAEE,YAAa,IAEf,gCACE,WAAY,MAEd,yCACE,iEACE,YAAa,GAGjB,yCACE,wFACE,aAAc,KAIlB,4DADA,8DAEE,aAAc,IAEhB,gCACE,SAAU,OAEZ,6BACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,mBACE,YAAa,OACb,WAAY,KACZ,OAAQ,IAAI,OAAO,KACnB,WAAY,WACZ,QAAS,KACT,eAAgB,OAChB,UAAW,EACX,gBAAiB,OACjB,WAAY,MACZ,QAAS,KAEX,qBACE,MAAO,kBACP,OAAQ,EAAE,EAAE,KAAK,EAEnB,oBACE,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,SAAU,OACV,SAAU,SAEZ,4BACE,iBAAkB,KAClB,OAAQ,EACR,WAAY,WACZ,KAAM,EACN,wBAAyB,KACzB,OAAQ,KACR,SAAU,SACV,MAAO,KAET,0BACE,OAAQ,IAAI,OAAO,KAErB,2BACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,eAAgB,OAChB,SAAU,OAEZ,wBACE,QAAS,EAEX,iDACE,WAAY,KACZ,WAAY,WAAW,IAEzB,oDACA,2CACE,cAAe,KAEjB,uDACE,WAAY,EAAE,IAAI,IAAI,KAAK,gBAE7B,yBACE,QAAS,EACT,WAAY,OAEd,wBACE,QAAS,EACT,WAAY,QAEd,4BACE,WAAY,WAAW,GAAG,OAAO,IAAK,CAAE,QAAQ,KAAM,KAExD,mDACE,iBAAkB,GAEpB,uBACE,KAAM,EACN,SAAU,SAEZ,qGACA,qGACA,iGACE,QAAS,KAEX,2BACE,QAAS,MAEX,yCACE,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,gDACE,KAAM,KAER,gDACE,KAAM,OAER,8CACE,KAAM,MAER,qEACA,qEACA,mEACE,cAAe,KAEjB,wDACE,MAAO,IAET,+DACA,+DACA,6DACE,aAAc,KAEhB,kDACE,KAAM,IAER,wBACE,UAAW,KAEb,kCACE,UAAW,KAEb,qDACE,YAAa,IAEf,sBACE,QAAS,KACT,SAAU,SACV,QAAS,EAEX,qCACE,QAAS,GAEX,2BACE,aAAc,kBACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,OAAQ,KACR,SAAU,SACV,IAAK,IACL,MAAO,KAGT,2DADA,2DAEE,aAAc,QACd,OAAQ,QAEV,mCACE,iBAAkB,0DAAgE,CAAE,2DAAiE,CAAE,0DAAgE,CAAE,4DACzN,oBAAqB,EAAE,CAAC,CAAE,EAAE,GAAG,CAAE,IAAI,IAAI,CAAE,KAAK,EAChD,gBAAiB,KAAK,KACtB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,WACZ,QAAS,GACT,OAAQ,KACR,KAAM,KACN,SAAU,SACV,IAAK,KACL,MAAO,KACP,QAAS,GAEX,+CACE,OAAQ,YAKV,oDACE,aAAc,KAEhB,0CACE,KAAM,IAKR,8CACE,cAAe,KAEjB,oCACE,MAAO,IAET,gBACA,wBACE,MAAO,kBACP,QAAS,MACT,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,QAAS,EAAE,IAAI,EAAE,EACjB,eAAgB,KAChB,YAAa,OAEf,wBACE,QAAS,EAAE,IAEb,yBACE,QAAS,EAAE,EAAE,EAAE,IAEjB,eACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,sBACE,WAAY,WACZ,cAAe,IAEjB,+BACE,KAAM,EAER,6BACE,MAAO,KAET,kCACE,QAAS,KAEX,qBACE,QAAS,KACT,eAAgB,IAChB,UAAW,KACX,gBAAiB,cAEnB,4CACE,MAAO,sBAET,4CACE,MAAO,2BAET,4CACE,MAAO,sBAET,iCACE,YAAa,OACb,QAAS,KAEX,8BACE,YAAa,OACb,QAAS,KAEX,iCACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,+CACE,KAAM,EACN,wBAAyB,KAE3B,6CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,2DACE,KAAM,EACN,wBAAyB,KACzB,OAAQ,KAEV,mEACE,YAAa,IAEf,6DACE,aAAc,IAEhB,iDACA,qDACE,QAAS,KAIX,4CACA,mBAHA,oBACA,4BAGE,mBAAoB,KACjB,gBAAiB,KACZ,WAAY,KACpB,iBAAkB,KAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,QACP,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,KACb,OAAQ,EACR,WAAY,KACZ,QAAS,EACT,QAAS,IAAI,OACb,OAAQ,KACR,MAAO,KAGT,6BADA,8BAEE,iBAAkB,QAClB,MAAO,mBACP,OAAQ,YAGV,kDACA,yBAFA,0BAGE,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,QAAS,EAEX,4BACE,aAAc,EACd,cAAe,IACf,WAAY,IACZ,UAAW,MAEb,oBACE,iBAAkB,YAClB,OAAQ,EACR,aAAc,YACd,WAAY,MACZ,MAAO,QACP,OAAQ,QACR,QAAS,MACT,OAAQ,EACR,QAAS,EAEX,wBACE,QAAS,MACT,KAAM,QAER,6CACE,YAAa,IAEf,uCACE,aAAc,IAEhB,uBACE,OAAQ,QACR,SAAU,SAEZ,sDACE,iBAAkB,QAClB,MAAO,mBACP,OAAQ,YAEV,gCACE,OAAQ,QACR,KAAM,EACN,OAAQ,EAAE,IAEZ,kCACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KAET,sCACE,KAAM,QAER,4CACE,YAAa,OACb,QAAS,KAEX,0CACE,MAAO,IAET,oCACE,KAAM,IAER,sBACE,OAAQ,QACR,SAAU,SAEZ,6BACE,mBAAoB,KACjB,gBAAiB,KACZ,WAAY,KACpB,iBAAkB,KAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,QACP,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,KACb,OAAQ,EACR,WAAY,KACZ,QAAS,EACT,QAAS,IAAI,OACb,OAAQ,KACR,MAAO,KAET,uCACE,iBAAkB,QAClB,MAAO,mBACP,OAAQ,YAEV,yCACE,QAAS,KAEX,mCACE,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,QAAS,EAEX,0BACE,eAAgB,KAChB,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,sDACA,sDACE,cAAe,KAEjB,yCACE,MAAO,IAET,gDACA,gDACE,aAAc,KAEhB,mCACE,KAAM,IAER,mBACE,mBAAoB,SACjB,gBAAiB,SACZ,WAAY,SACpB,YAAa,SAEf,gBACE,OAAQ,EACR,OAAQ,KACR,KAAM,EACN,OAAQ,EACR,SAAU,OACV,oBAAqB,KACjB,oBAAqB,KACzB,QAAS,EACT,SAAU,MACV,IAAK,EACL,aAAc,WACd,MAAO,KAET,8DACE,QAAS,KAEX,gCACE,QAAS,KAEX,+BACE,QAAS,KAEX,qCACA,qCACE,QAAS,KAEX,0BACE,WAAY,KACZ,WAAY,IAEd,sBACE,MAAO,KAET,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,6BACE,iBAAkB,KAClB,OAAQ,MACR,SAAU,KACV,SAAU,SACV,MAAO,KAET,6BACA,uDACE,WAAY,IAEd,gCACE,WAAY,wGAEd,2CACE,KAAM,EACN,wBAAyB,KAE3B,yBACE,WAAY,KAEZ,QAAS,GACT,SAAU,SACV,KAAM,EAER,0BACE,OAAQ,IAAI,MAAM,KAClB,OAAQ,KACR,KAAM,EACN,SAAU,SACV,IAAK,EACL,MAAO,KAET,+BACE,OAAQ,EACR,OAAQ,KACR,SAAU,SAEZ,6BACE,aAAc,IAAI,EAAE,EAAE,IACtB,OAAQ,UACR,KAAM,MACN,OAAQ,KAAK,EAAE,EAAE,KACjB,IAAK,MAEP,6BACE,aAAc,IAAI,IAAI,EAAE,EACxB,OAAQ,UACR,KAAM,MACN,OAAQ,KAAK,EAAE,EAAE,MACjB,IAAK,MAEP,6BACE,aAAc,EAAE,EAAE,IAAI,IACtB,OAAQ,UACR,KAAM,MACN,OAAQ,MAAM,IAAI,EAAE,KACpB,IAAK,MAEP,6BACE,aAAc,EAAE,IAAI,IAAI,EACxB,OAAQ,UACR,KAAM,MACN,OAAQ,MAAM,EAAE,EAAE,MAClB,IAAK,MAEP,8EACE,YAAa,IAEf,sEACE,YAAa,KAEf,sEACE,YAAa,KAEf,wEACE,aAAc,IAEhB,gEACE,aAAc,KAEhB,gEACE,aAAc,KAEhB,8BACE,QAAS,KACT,UAAW,KACX,MAAO,MAET,kCACE,aAAc,KACd,aAAc,MACd,aAAc,EAAE,IAAI,IAAI,EACxB,WAAY,WACZ,OAAQ,KACR,MAAO,KAET,2EACE,OAAQ,KAAK,EAEf,iEACE,iBAAkB,oBAClB,aAAc,oBAEhB,qCACE,MAAO,kBACP,QAAS,MACT,UAAW,KACX,QAAS,IACT,WAAY,OACZ,MAAO,KAKT,gEACE,aAAc,EAKhB,4DACE,aAAc,EAMhB,eACE,iBAAkB,KAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,EAAE,kBACxB,QAAS,aACT,SAAU,OACV,eAAgB,IAChB,QAAS,KAEX,mDACE,QAAS,EAEX,sDACE,QAAS,IAEX,mDACE,QAAS,IASX,iCACA,2BARA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,wBAGE,OAAQ,EAEV,kBACE,WAAY,+MAA+M,KAAK,EAAE,IAAI,EAAE,KACxO,iBAAkB,KAClB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,KACX,QAAS,EAAE,IAAI,EAAE,IAEnB,4FACE,WAAY,IAAI,MAAM,KAGxB,eACE,YAAa,OACb,WAAY,IACZ,OAAQ,EACR,cAAe,IACf,WAAY,KACZ,MAAO,QACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,WAAY,OACZ,YAAa,IACb,OAAQ,KACR,gBAAiB,OACjB,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EACT,SAAU,OACV,QAAS,EAAE,IACX,eAAgB,KAChB,MAAO,KAET,yBACE,iBAAkB,YAClB,OAAQ,EACR,WAAY,KACZ,MAAO,kBACP,OAAQ,YAEV,oCACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,uBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,2DACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,6BACE,OAAQ,QACR,YAAa,IACb,OAAQ,EAAE,IAEZ,iDACE,OAAQ,YAEV,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KACP,QAAS,KAEX,uBACE,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,QAAS,SACT,QAAS,KACT,UAAW,KACX,YAAa,IACb,iBAAkB,iBAAkB,KAAK,iBACrC,sBAAuB,iBAAkB,KAAK,iBAClD,WAAY,IACZ,QAAS,EACT,QAAS,IACT,WAAY,UAAU,IAAM,OAAO,CAAE,QAAQ,MAAM,QAErD,yBACE,UAAW,KACX,YAAa,IAEf,yBACE,gBAAiB,UAEnB,2BACE,QAAS,EAEX,gCACE,iBAAkB,QAClB,aAAc,QACd,MAAO,QAET,kCACE,MAAO,QAET,kCACE,MAAO,QAET,oCACE,KAAM,QAER,8BACE,iBAAkB,QAClB,aAAc,QACd,MAAO,QAET,gCACE,MAAO,QAET,gCACE,MAAO,KAET,kCACE,KAAM,QAER,6BACA,gCACE,iBAAkB,QAClB,aAAc,QACd,MAAO,QAET,+BACA,kCACE,MAAO,QAET,+BACA,kCACE,MAAO,QAET,iCACA,oCACE,KAAM,QAER,6BACE,iBAAkB,QAClB,aAAc,QACd,MAAO,QAET,+BACE,MAAO,QAET,+BACE,MAAO,QAET,iCACE,KAAM,QAER,6BACE,mBAAoB,OAChB,WAAY,OAChB,MAAO,QACP,UAAW,KACX,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,WAAY,OACZ,YAAa,OACb,WAAY,UACZ,WAAY,WAEd,+BACE,OAAQ,EAEV,iCACE,WAAY,KAEd,6BACE,mBAAoB,OAChB,WAAY,OAChB,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,IACnB,aAAc,IAEpB,iCACE,QAAS,MAEX,gCACE,mBAAoB,MAChB,WAAY,MAChB,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,IACnB,aAAc,IAEpB,yCACE,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,OACnB,aAAc,OAEpB,cACE,QAAS,aACT,SAAU,SAEZ,wBACE,WAAY,MAAM,IAAK,KAEzB,qCACE,UAAW,OAEb,sBACE,iBAAkB,KAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBACtB,UAAW,EACX,SAAU,OAEZ,yCACE,OAAQ,IAAI,IAAI,IAAI,IAEtB,mCACE,iBAAkB,YAClB,cAAe,KAGjB,qBADA,sBAEE,aAAc,MACd,QAAS,GACT,QAAS,MACT,OAAQ,EACR,SAAU,SACV,MAAO,EAGT,qCADA,sCAEE,KAAM,IACN,IAAK,KAEP,qCACE,aAAc,KAAK,YAAY,YAAY,YAC3C,aAAc,IACd,YAAa,KACb,WAAY,KAEd,sCACE,aAAc,KAAQ,YAAY,YAAY,YAC9C,aAAc,IACd,YAAa,KAGf,kCADA,mCAEE,KAAM,IACN,IAAK,EACL,UAAW,kBAEb,kCACE,aAAc,YAAY,YAAY,KAAK,YAC3C,aAAc,IACd,YAAa,KACb,WAAY,IAEd,mCACE,aAAc,YAAY,YAAY,KAAQ,YAC9C,aAAc,IACd,YAAa,KAGf,mCADA,oCAEE,KAAM,EACN,IAAK,gBACL,UAAW,iBAEb,mCACE,aAAc,YAAY,KAAK,YAAY,YAC3C,aAAc,IACd,YAAa,MAEf,oCACE,aAAc,YAAY,KAAQ,YAAY,YAC9C,aAAc,KACd,YAAa,MAGf,oCADA,qCAEE,KAAM,KACN,IAAK,gBACL,UAAW,iBAEb,oCACE,aAAc,YAAY,YAAY,YAAY,KAClD,aAAc,IACd,YAAa,KAEf,qCACE,aAAc,YAAY,YAAY,YAAY,KAClD,aAAc,KACd,YAAa,KAGf,yCADA,0CAEE,KAAM,KAGR,0CADA,2CAEE,KAAM,kBAER,uBACE,QAAS,KACT,eAAgB,IAChB,UAAW,EACX,wBAAyB,EACzB,WAAY,EAEd,kBACE,iBAAkB,KAClB,QAAS,KACT,eAAgB,IAChB,gBAAiB,SAEnB,0BACE,QAAS,KACT,SAAU,OAEZ,kCACE,QAAS,KAEX,wBACE,QAAS,KAEX,kCACE,QAAS,EAEX,gCACE,QAAS,EAEX,mCACA,qCACE,WAAY,MAAM,IAAK,IAAI,CAAE,QAAQ,IAAK,KAE5C,mBACE,iBAAkB,QAClB,aAAc,QACd,aAAc,MACd,aAAc,IACd,WAAY,WACZ,QAAS,aACT,OAAQ,KACR,SAAU,SACV,MAAO,KAET,sCACE,OAAQ,KACR,MAAO,KAET,iBACE,YAAa,OACb,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,OAAQ,KACR,gBAAiB,OACjB,SAAU,SAEZ,uBACE,iBAAkB,YAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,OAAQ,KACR,UAAW,MACX,MAAO,KAET,yBACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,QAClB,cAAe,IACf,WAAY,KACZ,OAAQ,KACR,KAAM,IACN,SAAU,SACV,IAAK,IACL,UAAW,iBAAiB,iBAC5B,MAAO,KAET,sBACE,SAAU,KAEZ,kBACE,QAAS,KAEX,sBACE,UAAW,kBAAkB,KAAK,YAAY,GAAG,SAAS,KAC1D,iBAAkB,kBAClB,cAAe,KACf,OAAQ,IACR,MAAO,IAET,mCACE,gBAAiB,MAEnB,mCACE,gBAAiB,MAEnB,6BACE,GAEA,KADA,IAEE,UAAW,SAEb,IACE,UAAW,UAGf,uDACE,YAAa,IAEf,iDACE,aAAc,IAEhB,oBACE,YAAa,OACb,iBAAkB,KAClB,WAAY,IAAI,MAAM,KACtB,MAAO,kBACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,YAAa,IACb,OAAQ,KACR,SAAU,OACV,QAAS,EAAE,IACX,SAAU,SACV,eAAgB,UAElB,oCACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,SACjB,SAAU,OAEZ,0BACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,aAAc,KACd,SAAU,OACV,cAAe,SACf,YAAa,OAEf,4BACE,QAAS,OACT,YAAa,OAEf,+BACE,KAAM,EAAE,EAAE,KACV,YAAa,IAEf,sBACA,+BACA,+BACE,MAAO,kBACP,gBAAiB,KAKnB,qEAHA,qEAIA,8EAHA,8EAIA,8EAHA,8EAIE,OAAQ,QACR,gBAAiB,UAEnB,mCACE,YAAa,SACb,WAAY,QACZ,OAAQ,YACR,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,SACjB,YAAa,KACb,aAAc,KACd,aAAc,IAEhB,uCACE,QAAS,MACT,KAAM,kBAER,2CACE,aAAc,IAEhB,6CACE,YAAa,IAEf,6BACE,eAAgB,YAElB,qCACE,YAAa,IAEf,mBACE,QAAS,KAEX,iCACE,YAAa,OACb,iBAAkB,qBAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EAEP,eACE,YAAa,OACb,WAAY,IACZ,OAAQ,EACR,cAAe,IACf,WAAY,KACZ,MAAO,QACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,WAAY,OACZ,YAAa,IACb,OAAQ,KACR,gBAAiB,OACjB,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EACT,SAAU,OACV,QAAS,EACT,eAAgB,KAChB,MAAO,KAET,mBACE,QAAS,MACT,KAAM,QAER,6BACE,aAAc,IACd,cAAe,IACf,MAAO,QAET,qBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KAEd,qBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,yBACE,KAAM,QAER,sBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,0BACE,KAAM,QAER,yBACA,+BACA,wBACA,8BACE,WAAY,IACZ,OAAQ,EACR,WAAY,KACZ,MAAO,kBACP,OAAQ,YAEV,6BACA,mCACA,4BACA,kCAEE,KAAM,kBAER,wBACA,8BACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAGT,gCADA,0BAEE,UAAW,KAEb,4BACA,kCAEE,KAAM,QAER,8CACE,MAAO,QAET,kDACE,KAAM,QAER,wBACE,UAAW,KAEb,mBACE,OAAQ,KACR,MAAO,KAET,mBACE,eAAgB,OAChB,OAAQ,KACR,MAAO,KAET,uBACE,mBAAoB,QAChB,WAAY,QAChB,OAAQ,MACR,MAAO,KAET,wBACE,QAAS,EAAE,IACX,MAAO,MAET,uBACE,QAAS,MACT,UAAW,KACX,YAAa,IACb,eAAgB,QAChB,cAAe,IACf,YAAa,OAEf,uBACE,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EAAE,IACX,MAAO,KAET,6BACE,OAAQ,QACR,YAAa,IACb,OAAQ,EAAE,IAEZ,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KAET,mCACE,KAAM,kBAER,gDACE,SAAU,OACV,cAAe,SACf,YAAa,OACb,MAAO,IAET,uBACE,OAAQ,EACR,cAAe,IACf,WAAY,WACZ,QAAS,KACT,OAAQ,IAAI,EAAE,IAAI,EAClB,SAAU,OAEZ,6BACE,WAAY,EAAE,EAAE,EAAE,IAAI,QAAQ,MAEhC,6BACE,WAAY,QACZ,WAAY,KACZ,MAAO,QAET,yBACE,cAAe,EAEjB,gCACE,MAAO,KAET,oCACE,KAAM,kBAER,iCACE,OAAQ,EAEV,gEACE,MAAO,KAET,mDACE,MAAO,KAKT,0DADA,0DADA,gDADA,gDAIE,WAAY,IACZ,WAAY,KACZ,MAAO,kBAET,2BACE,iBAAkB,KAEpB,kBAEA,4BADA,2BAEE,WAAY,+MAA+M,KAAK,EAAE,IAAI,EAAE,KACxO,iBAAkB,KAClB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,KACX,QAAS,EAAE,EAEb,0DACE,OAAQ,EACR,QAAS,EACT,eAAgB,EAChB,YAAa,EACb,WAAY,OAEd,qCACE,WAAY,OAAO,IAAK,IAAI,CAAE,QAAQ,IAAK,OAAO,IAEpD,uCACE,WAAY,QAAQ,IAAK,IAAI,CAAE,OAAO,IAAK,OAAO,GAAI,CAAE,WAAW,GAAG,OAAO,IAE/E,+BACA,8DACE,WAAY,IAAI,MAAM,KACtB,WAAY,KAEd,6BACE,UAAW,OACX,WAAY,KAEd,2BACE,aAAc,EAEhB,8BACE,iBAAkB,KAGpB,mIADA,oGAEE,WAAY,IAAI,MAAM,KAExB,4CACE,iBAAkB,KAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBAExB,sCACE,UAAW,gBAEb,yBACE,YAAa,OACb,QAAS,KACT,UAAW,KACX,OAAQ,EAAE,EACV,QAAS,EAAE,IAAI,EAAE,IAEnB,qCACE,YAAa,KAEf,iDACE,YAAa,EACb,UAAW,OAEb,2DACE,aAAc,IAAI,MAAM,KAE1B,qDACE,YAAa,IAAI,MAAM,KAEzB,kBACE,QAAS,aACT,QAAS,IACT,SAAU,SAEZ,wBACE,iBAAkB,QAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,kBACtB,MAAO,sBACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,QAAS,IAAI,IACb,eAAgB,KAElB,yBACE,SAAU,SAEZ,4CACE,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,WAAY,IAAI,MAAM,QACtB,OAAQ,EACR,KAAM,IACN,SAAU,SACV,UAAW,iBAEb,0CACE,cAAe,IAAI,MAAM,QACzB,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,KAAM,IACN,SAAU,SACV,IAAK,EACL,UAAW,iBAEb,6CACE,cAAe,IAAI,MAAM,YACzB,YAAa,IAAI,MAAM,QACvB,WAAY,IAAI,MAAM,YACtB,SAAU,SACV,MAAO,EACP,IAAK,IACL,UAAW,iBAEb,4CACE,cAAe,IAAI,MAAM,YACzB,aAAc,IAAI,MAAM,QACxB,WAAY,IAAI,MAAM,YACtB,KAAM,EACN,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,eACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,IACT,MAAO,KAET,4BACE,WAAY,EAEd,2BACE,cAAe,EAEjB,2BACE,OAAQ,EAEV,wBACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,KACT,KAAM,EACN,SAAU,SAMZ,iCACE,iBAAkB,eAClB,QAAS,GACT,OAAQ,KACR,SAAU,SACV,MAAO,KACP,QAAS,KAEX,cACE,OAAQ,QAEV,6BACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,+CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,iCACE,OAAQ,KAEV,+BACE,OAAQ","file":"skin.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n.tox {\n box-sizing: content-box;\n color: #222f3e;\n cursor: auto;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: normal;\n -webkit-tap-highlight-color: transparent;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n vertical-align: initial;\n white-space: normal;\n}\n.tox *:not(svg):not(rect) {\n box-sizing: inherit;\n color: inherit;\n cursor: inherit;\n direction: inherit;\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-tap-highlight-color: inherit;\n text-align: inherit;\n text-decoration: inherit;\n text-shadow: inherit;\n text-transform: inherit;\n vertical-align: inherit;\n white-space: inherit;\n}\n.tox *:not(svg):not(rect) {\n /* stylelint-disable-line no-duplicate-selectors */\n background: transparent;\n border: 0;\n float: none;\n height: auto;\n margin: 0;\n max-width: none;\n outline: 0;\n padding: 0;\n position: static;\n width: auto;\n}\n.tox:not([dir=rtl]) {\n direction: ltr;\n text-align: left;\n}\n.tox[dir=rtl] {\n direction: rtl;\n text-align: right;\n}\n.tox-tinymce {\n border: 1px solid #cccccc;\n border-radius: 0;\n box-shadow: none;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n overflow: hidden;\n position: relative;\n visibility: inherit !important;\n}\n.tox-tinymce-inline {\n border: none;\n box-shadow: none;\n}\n.tox-tinymce-inline .tox-editor-header {\n border: 1px solid #cccccc;\n border-radius: 0;\n box-shadow: none;\n}\n.tox-tinymce-aux {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n z-index: 1300;\n}\n.tox-tinymce *:focus,\n.tox-tinymce-aux *:focus {\n outline: none;\n}\nbutton::-moz-focus-inner {\n border: 0;\n}\n.tox .accessibility-issue__header {\n align-items: center;\n display: flex;\n margin-bottom: 4px;\n}\n.tox .accessibility-issue__description {\n align-items: stretch;\n border: 1px solid #cccccc;\n border-radius: 3px;\n display: flex;\n justify-content: space-between;\n}\n.tox .accessibility-issue__description > div {\n padding-bottom: 4px;\n}\n.tox .accessibility-issue__description > div > div {\n align-items: center;\n display: flex;\n margin-bottom: 4px;\n}\n.tox .accessibility-issue__description > *:last-child:not(:only-child) {\n border-color: #cccccc;\n border-style: solid;\n}\n.tox .accessibility-issue__repair {\n margin-top: 16px;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description {\n background-color: rgba(32, 122, 183, 0.1);\n border-color: rgba(32, 122, 183, 0.4);\n color: #222f3e;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child {\n border-color: rgba(32, 122, 183, 0.4);\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 {\n color: #207ab7;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg {\n fill: #207ab7;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon {\n color: #207ab7;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description {\n background-color: rgba(255, 165, 0, 0.1);\n border-color: rgba(255, 165, 0, 0.5);\n color: #222f3e;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child {\n border-color: rgba(255, 165, 0, 0.5);\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 {\n color: #cc8500;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg {\n fill: #cc8500;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon {\n color: #cc8500;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description {\n background-color: rgba(204, 0, 0, 0.1);\n border-color: rgba(204, 0, 0, 0.4);\n color: #222f3e;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child {\n border-color: rgba(204, 0, 0, 0.4);\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 {\n color: #c00;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg {\n fill: #c00;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon {\n color: #c00;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description {\n background-color: rgba(120, 171, 70, 0.1);\n border-color: rgba(120, 171, 70, 0.4);\n color: #222f3e;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child {\n border-color: rgba(120, 171, 70, 0.4);\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 {\n color: #78AB46;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg {\n fill: #78AB46;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon {\n color: #78AB46;\n}\n.tox .tox-dialog__body-content .accessibility-issue__header h1,\n.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {\n margin-top: 0;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {\n margin-left: auto;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description {\n padding: 4px 4px 4px 8px;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child {\n border-left-width: 1px;\n padding-left: 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {\n margin-right: auto;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description {\n padding: 4px 8px 4px 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child {\n border-right-width: 1px;\n padding-right: 4px;\n}\n.tox .tox-anchorbar {\n display: flex;\n flex: 0 0 auto;\n}\n.tox .tox-bar {\n display: flex;\n flex: 0 0 auto;\n}\n.tox .tox-button {\n background-color: #207ab7;\n background-image: none;\n background-position: 0 0;\n background-repeat: repeat;\n border-color: #207ab7;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #fff;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n line-height: 24px;\n margin: 0;\n outline: none;\n padding: 4px 16px;\n text-align: center;\n text-decoration: none;\n text-transform: capitalize;\n white-space: nowrap;\n}\n.tox .tox-button[disabled] {\n background-color: #207ab7;\n background-image: none;\n border-color: #207ab7;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-button:focus:not(:disabled) {\n background-color: #1c6ca1;\n background-image: none;\n border-color: #1c6ca1;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button:hover:not(:disabled) {\n background-color: #1c6ca1;\n background-image: none;\n border-color: #1c6ca1;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button:active:not(:disabled) {\n background-color: #185d8c;\n background-image: none;\n border-color: #185d8c;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--secondary {\n background-color: #f0f0f0;\n background-image: none;\n background-position: 0 0;\n background-repeat: repeat;\n border-color: #f0f0f0;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n color: #222f3e;\n font-size: 14px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n outline: none;\n padding: 4px 16px;\n text-decoration: none;\n text-transform: capitalize;\n}\n.tox .tox-button--secondary[disabled] {\n background-color: #f0f0f0;\n background-image: none;\n border-color: #f0f0f0;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-button--secondary:focus:not(:disabled) {\n background-color: #e3e3e3;\n background-image: none;\n border-color: #e3e3e3;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--secondary:hover:not(:disabled) {\n background-color: #e3e3e3;\n background-image: none;\n border-color: #e3e3e3;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--secondary:active:not(:disabled) {\n background-color: #d6d6d6;\n background-image: none;\n border-color: #d6d6d6;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--icon,\n.tox .tox-button.tox-button--icon,\n.tox .tox-button.tox-button--secondary.tox-button--icon {\n padding: 4px;\n}\n.tox .tox-button--icon .tox-icon svg,\n.tox .tox-button.tox-button--icon .tox-icon svg,\n.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {\n display: block;\n fill: currentColor;\n}\n.tox .tox-button-link {\n background: 0;\n border: none;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n font-weight: normal;\n line-height: 1.3;\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n.tox .tox-button-link--sm {\n font-size: 14px;\n}\n.tox .tox-button--naked {\n background-color: transparent;\n border-color: transparent;\n box-shadow: unset;\n color: #222f3e;\n}\n.tox .tox-button--naked[disabled] {\n background-color: #f0f0f0;\n border-color: #f0f0f0;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-button--naked:hover:not(:disabled) {\n background-color: #e3e3e3;\n border-color: #e3e3e3;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--naked:focus:not(:disabled) {\n background-color: #e3e3e3;\n border-color: #e3e3e3;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--naked:active:not(:disabled) {\n background-color: #d6d6d6;\n border-color: #d6d6d6;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--naked .tox-icon svg {\n fill: currentColor;\n}\n.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {\n color: #222f3e;\n}\n.tox .tox-checkbox {\n align-items: center;\n border-radius: 3px;\n cursor: pointer;\n display: flex;\n height: 36px;\n min-width: 36px;\n}\n.tox .tox-checkbox__input {\n /* Hide from view but visible to screen readers */\n height: 1px;\n overflow: hidden;\n position: absolute;\n top: auto;\n width: 1px;\n}\n.tox .tox-checkbox__icons {\n align-items: center;\n border-radius: 3px;\n box-shadow: 0 0 0 2px transparent;\n box-sizing: content-box;\n display: flex;\n height: 24px;\n justify-content: center;\n padding: calc(4px - 1px);\n width: 24px;\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: block;\n fill: rgba(34, 47, 62, 0.3);\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n display: none;\n fill: #207ab7;\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n display: none;\n fill: #207ab7;\n}\n.tox .tox-checkbox--disabled {\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: none;\n}\n.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n display: block;\n}\n.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: none;\n}\n.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n display: block;\n}\n.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {\n border-radius: 3px;\n box-shadow: inset 0 0 0 1px #207ab7;\n padding: calc(4px - 1px);\n}\n.tox:not([dir=rtl]) .tox-checkbox__label {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-checkbox__input {\n left: -10000px;\n}\n.tox:not([dir=rtl]) .tox-bar .tox-checkbox {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-checkbox__label {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-checkbox__input {\n right: -10000px;\n}\n.tox[dir=rtl] .tox-bar .tox-checkbox {\n margin-right: 4px;\n}\n.tox {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox .tox-collection--toolbar .tox-collection__group {\n display: flex;\n padding: 0;\n}\n.tox .tox-collection--grid .tox-collection__group {\n display: flex;\n flex-wrap: wrap;\n max-height: 208px;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 0;\n}\n.tox .tox-collection--list .tox-collection__group {\n border-bottom-width: 0;\n border-color: #cccccc;\n border-left-width: 0;\n border-right-width: 0;\n border-style: solid;\n border-top-width: 1px;\n padding: 4px 0;\n}\n.tox .tox-collection--list .tox-collection__group:first-child {\n border-top-width: 0;\n}\n.tox .tox-collection__group-heading {\n background-color: #e6e6e6;\n color: rgba(34, 47, 62, 0.7);\n cursor: default;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n margin-bottom: 4px;\n margin-top: -4px;\n padding: 4px 8px;\n text-transform: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.tox .tox-collection__item {\n align-items: center;\n color: #222f3e;\n cursor: pointer;\n display: flex;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.tox .tox-collection--list .tox-collection__item {\n padding: 4px 8px;\n}\n.tox .tox-collection--toolbar .tox-collection__item {\n border-radius: 3px;\n padding: 4px;\n}\n.tox .tox-collection--grid .tox-collection__item {\n border-radius: 3px;\n padding: 4px;\n}\n.tox .tox-collection--list .tox-collection__item--enabled {\n background-color: #fff;\n color: #222f3e;\n}\n.tox .tox-collection--list .tox-collection__item--active {\n background-color: #dee0e2;\n}\n.tox .tox-collection--toolbar .tox-collection__item--enabled {\n background-color: #c8cbcf;\n color: #222f3e;\n}\n.tox .tox-collection--toolbar .tox-collection__item--active {\n background-color: #dee0e2;\n}\n.tox .tox-collection--grid .tox-collection__item--enabled {\n background-color: #c8cbcf;\n color: #222f3e;\n}\n.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n background-color: #dee0e2;\n color: #222f3e;\n}\n.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n color: #222f3e;\n}\n.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n color: #222f3e;\n}\n.tox .tox-collection__item--state-disabled {\n background-color: transparent;\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-collection__item-icon,\n.tox .tox-collection__item-checkmark {\n align-items: center;\n display: flex;\n height: 24px;\n justify-content: center;\n width: 24px;\n}\n.tox .tox-collection__item-icon svg,\n.tox .tox-collection__item-checkmark svg {\n fill: currentColor;\n}\n.tox .tox-collection--toolbar-lg .tox-collection__item-icon {\n height: 48px;\n width: 48px;\n}\n.tox .tox-collection__item-label {\n color: currentColor;\n display: inline-block;\n flex: 1;\n -ms-flex-preferred-size: auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 24px;\n text-transform: none;\n word-break: break-all;\n}\n.tox .tox-collection__item-accessory {\n color: rgba(34, 47, 62, 0.7);\n display: inline-block;\n font-size: 14px;\n height: 24px;\n line-height: 24px;\n text-transform: none;\n}\n.tox .tox-collection__item-caret {\n align-items: center;\n display: flex;\n min-height: 24px;\n}\n.tox .tox-collection__item-caret::after {\n content: '';\n font-size: 0;\n min-height: inherit;\n}\n.tox .tox-collection__item-caret svg {\n fill: #222f3e;\n}\n.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {\n display: none;\n}\n.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark {\n display: none;\n}\n.tox .tox-collection--horizontal {\n background-color: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: nowrap;\n margin-bottom: 0;\n overflow-x: auto;\n padding: 0;\n}\n.tox .tox-collection--horizontal .tox-collection__group {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n margin: 0;\n padding: 0 4px;\n}\n.tox .tox-collection--horizontal .tox-collection__item {\n height: 34px;\n margin: 2px 0 3px 0;\n padding: 0 4px;\n}\n.tox .tox-collection--horizontal .tox-collection__item-label {\n white-space: nowrap;\n}\n.tox .tox-collection--horizontal .tox-collection__item-caret {\n margin-left: 4px;\n}\n.tox .tox-collection__item-container {\n display: flex;\n}\n.tox .tox-collection__item-container--row {\n align-items: center;\n flex: 1 1 auto;\n flex-direction: row;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--align-left {\n margin-right: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--align-right {\n justify-content: flex-end;\n margin-left: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top {\n align-items: flex-start;\n margin-bottom: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle {\n align-items: center;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom {\n align-items: flex-end;\n margin-top: auto;\n}\n.tox .tox-collection__item-container--column {\n -ms-grid-row-align: center;\n align-self: center;\n flex: 1 1 auto;\n flex-direction: column;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--align-left {\n align-items: flex-start;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--align-right {\n align-items: flex-end;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top {\n align-self: flex-start;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle {\n -ms-grid-row-align: center;\n align-self: center;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom {\n align-self: flex-end;\n}\n.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {\n border-right: 1px solid #cccccc;\n}\n.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-collection__item-accessory {\n margin-left: 16px;\n text-align: right;\n}\n.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret {\n margin-left: 16px;\n}\n.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {\n border-left: 1px solid #cccccc;\n}\n.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-collection__item-icon-rtl {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg {\n transform: rotateY(180deg);\n}\n.tox[dir=rtl] .tox-collection__item-accessory {\n margin-right: 16px;\n text-align: left;\n}\n.tox[dir=rtl] .tox-collection .tox-collection__item-caret {\n margin-right: 16px;\n transform: rotateY(180deg);\n}\n.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret {\n margin-right: 4px;\n}\n.tox .tox-color-picker-container {\n display: flex;\n flex-direction: row;\n height: 225px;\n margin: 0;\n}\n.tox .tox-sv-palette {\n box-sizing: border-box;\n display: flex;\n height: 100%;\n}\n.tox .tox-sv-palette-spectrum {\n height: 100%;\n}\n.tox .tox-sv-palette,\n.tox .tox-sv-palette-spectrum {\n width: 225px;\n}\n.tox .tox-sv-palette-thumb {\n background: none;\n border: 1px solid black;\n border-radius: 50%;\n box-sizing: content-box;\n height: 12px;\n position: absolute;\n width: 12px;\n}\n.tox .tox-sv-palette-inner-thumb {\n border: 1px solid white;\n border-radius: 50%;\n height: 10px;\n position: absolute;\n width: 10px;\n}\n.tox .tox-hue-slider {\n box-sizing: border-box;\n height: 100%;\n width: 25px;\n}\n.tox .tox-hue-slider-spectrum {\n background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);\n height: 100%;\n width: 100%;\n}\n.tox .tox-hue-slider,\n.tox .tox-hue-slider-spectrum {\n width: 20px;\n}\n.tox .tox-hue-slider-thumb {\n background: white;\n border: 1px solid black;\n box-sizing: content-box;\n height: 4px;\n width: 100%;\n}\n.tox .tox-rgb-form {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.tox .tox-rgb-form div {\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 5px;\n width: inherit;\n}\n.tox .tox-rgb-form input {\n width: 6em;\n}\n.tox .tox-rgb-form input.tox-invalid {\n /* Need !important to override Chrome's focus styling unfortunately */\n border: 1px solid red !important;\n}\n.tox .tox-rgb-form .tox-rgba-preview {\n border: 1px solid black;\n flex-grow: 2;\n margin-bottom: 0;\n}\n.tox:not([dir=rtl]) .tox-sv-palette {\n margin-right: 15px;\n}\n.tox:not([dir=rtl]) .tox-hue-slider {\n margin-right: 15px;\n}\n.tox:not([dir=rtl]) .tox-hue-slider-thumb {\n margin-left: -1px;\n}\n.tox:not([dir=rtl]) .tox-rgb-form label {\n margin-right: 0.5em;\n}\n.tox[dir=rtl] .tox-sv-palette {\n margin-left: 15px;\n}\n.tox[dir=rtl] .tox-hue-slider {\n margin-left: 15px;\n}\n.tox[dir=rtl] .tox-hue-slider-thumb {\n margin-right: -1px;\n}\n.tox[dir=rtl] .tox-rgb-form label {\n margin-left: 0.5em;\n}\n.tox .tox-toolbar .tox-swatches,\n.tox .tox-toolbar__primary .tox-swatches,\n.tox .tox-toolbar__overflow .tox-swatches {\n margin: 2px 0 3px 4px;\n}\n.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {\n border: 0;\n margin: -4px 0;\n}\n.tox .tox-swatches__row {\n display: flex;\n}\n.tox .tox-swatch {\n height: 30px;\n transition: transform 0.15s, box-shadow 0.15s;\n width: 30px;\n}\n.tox .tox-swatch:hover,\n.tox .tox-swatch:focus {\n box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;\n transform: scale(0.8);\n}\n.tox .tox-swatch--remove {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.tox .tox-swatch--remove svg path {\n stroke: #e74c3c;\n}\n.tox .tox-swatches__picker-btn {\n align-items: center;\n background-color: transparent;\n border: 0;\n cursor: pointer;\n display: flex;\n height: 30px;\n justify-content: center;\n outline: none;\n padding: 0;\n width: 30px;\n}\n.tox .tox-swatches__picker-btn svg {\n height: 24px;\n width: 24px;\n}\n.tox .tox-swatches__picker-btn:hover {\n background: #dee0e2;\n}\n.tox:not([dir=rtl]) .tox-swatches__picker-btn {\n margin-left: auto;\n}\n.tox[dir=rtl] .tox-swatches__picker-btn {\n margin-right: auto;\n}\n.tox .tox-comment-thread {\n background: #fff;\n position: relative;\n}\n.tox .tox-comment-thread > *:not(:first-child) {\n margin-top: 8px;\n}\n.tox .tox-comment {\n background: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);\n padding: 8px 8px 16px 8px;\n position: relative;\n}\n.tox .tox-comment__header {\n align-items: center;\n color: #222f3e;\n display: flex;\n justify-content: space-between;\n}\n.tox .tox-comment__date {\n color: rgba(34, 47, 62, 0.7);\n font-size: 12px;\n}\n.tox .tox-comment__body {\n color: #222f3e;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n margin-top: 8px;\n position: relative;\n text-transform: initial;\n}\n.tox .tox-comment__body textarea {\n resize: none;\n white-space: normal;\n width: 100%;\n}\n.tox .tox-comment__expander {\n padding-top: 8px;\n}\n.tox .tox-comment__expander p {\n color: rgba(34, 47, 62, 0.7);\n font-size: 14px;\n font-style: normal;\n}\n.tox .tox-comment__body p {\n margin: 0;\n}\n.tox .tox-comment__buttonspacing {\n padding-top: 16px;\n text-align: center;\n}\n.tox .tox-comment-thread__overlay::after {\n background: #fff;\n bottom: 0;\n content: \"\";\n display: flex;\n left: 0;\n opacity: 0.9;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 5;\n}\n.tox .tox-comment__reply {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-top: 8px;\n}\n.tox .tox-comment__reply > *:first-child {\n margin-bottom: 8px;\n width: 100%;\n}\n.tox .tox-comment__edit {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-top: 16px;\n}\n.tox .tox-comment__gradient::after {\n background: linear-gradient(rgba(255, 255, 255, 0), #fff);\n bottom: 0;\n content: \"\";\n display: block;\n height: 5em;\n margin-top: -40px;\n position: absolute;\n width: 100%;\n}\n.tox .tox-comment__overlay {\n background: #fff;\n bottom: 0;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n left: 0;\n opacity: 0.9;\n position: absolute;\n right: 0;\n text-align: center;\n top: 0;\n z-index: 5;\n}\n.tox .tox-comment__loading-text {\n align-items: center;\n color: #222f3e;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n.tox .tox-comment__loading-text > div {\n padding-bottom: 16px;\n}\n.tox .tox-comment__overlaytext {\n bottom: 0;\n flex-direction: column;\n font-size: 14px;\n left: 0;\n padding: 1em;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 10;\n}\n.tox .tox-comment__overlaytext p {\n background-color: #fff;\n box-shadow: 0 0 8px 8px #fff;\n color: #222f3e;\n text-align: center;\n}\n.tox .tox-comment__overlaytext div:nth-of-type(2) {\n font-size: 0.8em;\n}\n.tox .tox-comment__busy-spinner {\n align-items: center;\n background-color: #fff;\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 20;\n}\n.tox .tox-comment__scroll {\n display: flex;\n flex-direction: column;\n flex-shrink: 1;\n overflow: auto;\n}\n.tox .tox-conversations {\n margin: 8px;\n}\n.tox:not([dir=rtl]) .tox-comment__edit {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child,\n.tox:not([dir=rtl]) .tox-comment__edit > *:last-child,\n.tox:not([dir=rtl]) .tox-comment__reply > *:last-child {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-comment__edit {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child,\n.tox[dir=rtl] .tox-comment__edit > *:last-child,\n.tox[dir=rtl] .tox-comment__reply > *:last-child {\n margin-right: 8px;\n}\n.tox .tox-user {\n align-items: center;\n display: flex;\n}\n.tox .tox-user__avatar svg {\n fill: rgba(34, 47, 62, 0.7);\n}\n.tox .tox-user__name {\n color: rgba(34, 47, 62, 0.7);\n font-size: 12px;\n font-style: normal;\n font-weight: bold;\n text-transform: uppercase;\n}\n.tox:not([dir=rtl]) .tox-user__avatar svg {\n margin-right: 8px;\n}\n.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-user__avatar svg {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-user__avatar + .tox-user__name {\n margin-right: 8px;\n}\n.tox .tox-dialog-wrap {\n align-items: center;\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n z-index: 1100;\n}\n.tox .tox-dialog-wrap__backdrop {\n background-color: rgba(255, 255, 255, 0.75);\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 1;\n}\n.tox .tox-dialog-wrap__backdrop--opaque {\n background-color: #fff;\n}\n.tox .tox-dialog {\n background-color: #fff;\n border-color: #cccccc;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15);\n display: flex;\n flex-direction: column;\n max-height: 100%;\n max-width: 480px;\n overflow: hidden;\n position: relative;\n width: 95vw;\n z-index: 2;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog {\n align-self: flex-start;\n margin: 8px auto;\n width: calc(100vw - 16px);\n }\n}\n.tox .tox-dialog-inline {\n z-index: 1100;\n}\n.tox .tox-dialog__header {\n align-items: center;\n background-color: #fff;\n border-bottom: none;\n color: #222f3e;\n display: flex;\n font-size: 16px;\n justify-content: space-between;\n padding: 8px 16px 0 16px;\n position: relative;\n}\n.tox .tox-dialog__header .tox-button {\n z-index: 1;\n}\n.tox .tox-dialog__draghandle {\n cursor: grab;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tox .tox-dialog__draghandle:active {\n cursor: grabbing;\n}\n.tox .tox-dialog__dismiss {\n margin-left: auto;\n}\n.tox .tox-dialog__title {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 20px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n margin: 0;\n text-transform: none;\n}\n.tox .tox-dialog__body {\n color: #222f3e;\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n min-width: 0;\n text-align: left;\n text-transform: none;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog__body {\n flex-direction: column;\n }\n}\n.tox .tox-dialog__body-nav {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 16px 16px;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {\n flex-direction: row;\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n padding-bottom: 0;\n }\n}\n.tox .tox-dialog__body-nav-item {\n border-bottom: 2px solid transparent;\n color: rgba(34, 47, 62, 0.7);\n display: inline-block;\n font-size: 14px;\n line-height: 1.3;\n margin-bottom: 8px;\n text-decoration: none;\n white-space: nowrap;\n}\n.tox .tox-dialog__body-nav-item:focus {\n background-color: rgba(32, 122, 183, 0.1);\n}\n.tox .tox-dialog__body-nav-item--active {\n border-bottom: 2px solid #207ab7;\n color: #207ab7;\n}\n.tox .tox-dialog__body-content {\n box-sizing: border-box;\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n max-height: 650px;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n padding: 16px 16px;\n}\n.tox .tox-dialog__body-content > * {\n margin-bottom: 0;\n margin-top: 16px;\n}\n.tox .tox-dialog__body-content > *:first-child {\n margin-top: 0;\n}\n.tox .tox-dialog__body-content > *:last-child {\n margin-bottom: 0;\n}\n.tox .tox-dialog__body-content > *:only-child {\n margin-bottom: 0;\n margin-top: 0;\n}\n.tox .tox-dialog__body-content a {\n color: #207ab7;\n cursor: pointer;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content a:hover,\n.tox .tox-dialog__body-content a:focus {\n color: #185d8c;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content a:active {\n color: #185d8c;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content svg {\n fill: #222f3e;\n}\n.tox .tox-dialog__body-content ul {\n display: block;\n list-style-type: disc;\n margin-bottom: 16px;\n -webkit-margin-end: 0;\n margin-inline-end: 0;\n -webkit-margin-start: 0;\n margin-inline-start: 0;\n -webkit-padding-start: 2.5rem;\n padding-inline-start: 2.5rem;\n}\n.tox .tox-dialog__body-content .tox-form__group h1 {\n color: #222f3e;\n font-size: 20px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n margin-bottom: 16px;\n margin-top: 2rem;\n text-transform: none;\n}\n.tox .tox-dialog__body-content .tox-form__group h2 {\n color: #222f3e;\n font-size: 16px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n margin-bottom: 16px;\n margin-top: 2rem;\n text-transform: none;\n}\n.tox .tox-dialog__body-content .tox-form__group p {\n margin-bottom: 16px;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:first-child,\n.tox .tox-dialog__body-content .tox-form__group h2:first-child,\n.tox .tox-dialog__body-content .tox-form__group p:first-child {\n margin-top: 0;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:last-child,\n.tox .tox-dialog__body-content .tox-form__group h2:last-child,\n.tox .tox-dialog__body-content .tox-form__group p:last-child {\n margin-bottom: 0;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:only-child,\n.tox .tox-dialog__body-content .tox-form__group h2:only-child,\n.tox .tox-dialog__body-content .tox-form__group p:only-child {\n margin-bottom: 0;\n margin-top: 0;\n}\n.tox .tox-dialog--width-lg {\n height: 650px;\n max-width: 1200px;\n}\n.tox .tox-dialog--width-md {\n max-width: 800px;\n}\n.tox .tox-dialog--width-md .tox-dialog__body-content {\n overflow: auto;\n}\n.tox .tox-dialog__body-content--centered {\n text-align: center;\n}\n.tox .tox-dialog__footer {\n align-items: center;\n background-color: #fff;\n border-top: 1px solid #cccccc;\n display: flex;\n justify-content: space-between;\n padding: 8px 16px;\n}\n.tox .tox-dialog__footer-start,\n.tox .tox-dialog__footer-end {\n display: flex;\n}\n.tox .tox-dialog__busy-spinner {\n align-items: center;\n background-color: rgba(255, 255, 255, 0.75);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 3;\n}\n.tox .tox-dialog__table {\n border-collapse: collapse;\n width: 100%;\n}\n.tox .tox-dialog__table thead th {\n font-weight: bold;\n padding-bottom: 8px;\n}\n.tox .tox-dialog__table tbody tr {\n border-bottom: 1px solid #cccccc;\n}\n.tox .tox-dialog__table tbody tr:last-child {\n border-bottom: none;\n}\n.tox .tox-dialog__table td {\n padding-bottom: 8px;\n padding-top: 8px;\n}\n.tox .tox-dialog__popups {\n position: absolute;\n width: 100%;\n z-index: 1100;\n}\n.tox .tox-dialog__body-iframe {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-iframe .tox-navobj {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n}\n.tox .tox-dialog-dock-fadeout {\n opacity: 0;\n visibility: hidden;\n}\n.tox .tox-dialog-dock-fadein {\n opacity: 1;\n visibility: visible;\n}\n.tox .tox-dialog-dock-transition {\n transition: visibility 0s linear 0.3s, opacity 0.3s ease;\n}\n.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {\n transition-delay: 0s;\n}\n.tox.tox-platform-ie {\n /* IE11 CSS styles go here */\n}\n.tox.tox-platform-ie .tox-dialog-wrap {\n position: -ms-device-fixed;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav {\n margin-right: 0;\n }\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) {\n margin-left: 8px;\n }\n}\n.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *,\n.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-dialog__body {\n text-align: right;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav {\n margin-left: 0;\n }\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) {\n margin-right: 8px;\n }\n}\n.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *,\n.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * {\n margin-right: 8px;\n}\nbody.tox-dialog__disable-scroll {\n overflow: hidden;\n}\n.tox .tox-dropzone-container {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dropzone {\n align-items: center;\n background: #fff;\n border: 2px dashed #cccccc;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n justify-content: center;\n min-height: 100px;\n padding: 10px;\n}\n.tox .tox-dropzone p {\n color: rgba(34, 47, 62, 0.7);\n margin: 0 0 16px 0;\n}\n.tox .tox-edit-area {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n overflow: hidden;\n position: relative;\n}\n.tox .tox-edit-area__iframe {\n background-color: #fff;\n border: 0;\n box-sizing: border-box;\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n position: absolute;\n width: 100%;\n}\n.tox.tox-inline-edit-area {\n border: 1px dotted #cccccc;\n}\n.tox .tox-editor-container {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n overflow: hidden;\n}\n.tox .tox-editor-header {\n z-index: 1;\n}\n.tox:not(.tox-tinymce-inline) .tox-editor-header {\n box-shadow: none;\n transition: box-shadow 0.5s;\n}\n.tox.tox-tinymce--toolbar-bottom .tox-editor-header,\n.tox.tox-tinymce-inline .tox-editor-header {\n margin-bottom: -1px;\n}\n.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {\n box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);\n}\n.tox-editor-dock-fadeout {\n opacity: 0;\n visibility: hidden;\n}\n.tox-editor-dock-fadein {\n opacity: 1;\n visibility: visible;\n}\n.tox-editor-dock-transition {\n transition: visibility 0s linear 0.25s, opacity 0.25s ease;\n}\n.tox-editor-dock-transition.tox-editor-dock-fadein {\n transition-delay: 0s;\n}\n.tox .tox-control-wrap {\n flex: 1;\n position: relative;\n}\n.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,\n.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,\n.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {\n display: none;\n}\n.tox .tox-control-wrap svg {\n display: block;\n}\n.tox .tox-control-wrap__status-icon-wrap {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-control-wrap__status-icon-invalid svg {\n fill: #c00;\n}\n.tox .tox-control-wrap__status-icon-unknown svg {\n fill: orange;\n}\n.tox .tox-control-wrap__status-icon-valid svg {\n fill: green;\n}\n.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,\n.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,\n.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield {\n padding-right: 32px;\n}\n.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap {\n right: 4px;\n}\n.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,\n.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,\n.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield {\n padding-left: 32px;\n}\n.tox[dir=rtl] .tox-control-wrap__status-icon-wrap {\n left: 4px;\n}\n.tox .tox-autocompleter {\n max-width: 25em;\n}\n.tox .tox-autocompleter .tox-menu {\n max-width: 25em;\n}\n.tox .tox-autocompleter .tox-autocompleter-highlight {\n font-weight: bold;\n}\n.tox .tox-color-input {\n display: flex;\n position: relative;\n z-index: 1;\n}\n.tox .tox-color-input .tox-textfield {\n z-index: -1;\n}\n.tox .tox-color-input span {\n border-color: rgba(34, 47, 62, 0.2);\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n height: 24px;\n position: absolute;\n top: 6px;\n width: 24px;\n}\n.tox .tox-color-input span:hover:not([aria-disabled=true]),\n.tox .tox-color-input span:focus:not([aria-disabled=true]) {\n border-color: #207ab7;\n cursor: pointer;\n}\n.tox .tox-color-input span::before {\n background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%);\n background-position: 0 0, 0 6px, 6px -6px, -6px 0;\n background-size: 12px 12px;\n border: 1px solid #fff;\n border-radius: 3px;\n box-sizing: border-box;\n content: '';\n height: 24px;\n left: -1px;\n position: absolute;\n top: -1px;\n width: 24px;\n z-index: -1;\n}\n.tox .tox-color-input span[aria-disabled=true] {\n cursor: not-allowed;\n}\n.tox:not([dir=rtl]) .tox-color-input {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox:not([dir=rtl]) .tox-color-input .tox-textfield {\n padding-left: 36px;\n}\n.tox:not([dir=rtl]) .tox-color-input span {\n left: 6px;\n}\n.tox[dir=\"rtl\"] .tox-color-input {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=\"rtl\"] .tox-color-input .tox-textfield {\n padding-right: 36px;\n}\n.tox[dir=\"rtl\"] .tox-color-input span {\n right: 6px;\n}\n.tox .tox-label,\n.tox .tox-toolbar-label {\n color: rgba(34, 47, 62, 0.7);\n display: block;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n padding: 0 8px 0 0;\n text-transform: none;\n white-space: nowrap;\n}\n.tox .tox-toolbar-label {\n padding: 0 8px;\n}\n.tox[dir=rtl] .tox-label {\n padding: 0 0 0 8px;\n}\n.tox .tox-form {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group {\n box-sizing: border-box;\n margin-bottom: 4px;\n}\n.tox .tox-form-group--maximize {\n flex: 1;\n}\n.tox .tox-form__group--error {\n color: #c00;\n}\n.tox .tox-form__group--collection {\n display: flex;\n}\n.tox .tox-form__grid {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.tox .tox-form__grid--2col > .tox-form__group {\n width: calc(50% - (8px / 2));\n}\n.tox .tox-form__grid--3col > .tox-form__group {\n width: calc(100% / 3 - (8px / 2));\n}\n.tox .tox-form__grid--4col > .tox-form__group {\n width: calc(25% - (8px / 2));\n}\n.tox .tox-form__controls-h-stack {\n align-items: center;\n display: flex;\n}\n.tox .tox-form__group--inline {\n align-items: center;\n display: flex;\n}\n.tox .tox-form__group--stretched {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-textarea {\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-navobj {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n}\n.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) {\n margin-right: 4px;\n}\n.tox .tox-lock.tox-locked .tox-lock-icon__unlock,\n.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {\n display: none;\n}\n.tox .tox-textfield,\n.tox .tox-toolbar-textfield,\n.tox .tox-listboxfield .tox-listbox--select,\n.tox .tox-textarea {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: #fff;\n border-color: #cccccc;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #222f3e;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n line-height: 24px;\n margin: 0;\n min-height: 34px;\n outline: none;\n padding: 5px 4.75px;\n resize: none;\n width: 100%;\n}\n.tox .tox-textfield[disabled],\n.tox .tox-textarea[disabled] {\n background-color: #f2f2f2;\n color: rgba(34, 47, 62, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-textfield:focus,\n.tox .tox-listboxfield .tox-listbox--select:focus,\n.tox .tox-textarea:focus {\n background-color: #fff;\n border-color: #207ab7;\n box-shadow: none;\n outline: none;\n}\n.tox .tox-toolbar-textfield {\n border-width: 0;\n margin-bottom: 3px;\n margin-top: 2px;\n max-width: 250px;\n}\n.tox .tox-naked-btn {\n background-color: transparent;\n border: 0;\n border-color: transparent;\n box-shadow: unset;\n color: #207ab7;\n cursor: pointer;\n display: block;\n margin: 0;\n padding: 0;\n}\n.tox .tox-naked-btn svg {\n display: block;\n fill: #222f3e;\n}\n.tox:not([dir=rtl]) .tox-toolbar-textfield + * {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-toolbar-textfield + * {\n margin-right: 4px;\n}\n.tox .tox-listboxfield {\n cursor: pointer;\n position: relative;\n}\n.tox .tox-listboxfield .tox-listbox--select[disabled] {\n background-color: #f2f2f2;\n color: rgba(34, 47, 62, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-listbox__select-label {\n cursor: default;\n flex: 1;\n margin: 0 4px;\n}\n.tox .tox-listbox__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n}\n.tox .tox-listbox__select-chevron svg {\n fill: #222f3e;\n}\n.tox .tox-listboxfield .tox-listbox--select {\n align-items: center;\n display: flex;\n}\n.tox:not([dir=rtl]) .tox-listboxfield svg {\n right: 8px;\n}\n.tox[dir=rtl] .tox-listboxfield svg {\n left: 8px;\n}\n.tox .tox-selectfield {\n cursor: pointer;\n position: relative;\n}\n.tox .tox-selectfield select {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: #fff;\n border-color: #cccccc;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #222f3e;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n line-height: 24px;\n margin: 0;\n min-height: 34px;\n outline: none;\n padding: 5px 4.75px;\n resize: none;\n width: 100%;\n}\n.tox .tox-selectfield select[disabled] {\n background-color: #f2f2f2;\n color: rgba(34, 47, 62, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-selectfield select::-ms-expand {\n display: none;\n}\n.tox .tox-selectfield select:focus {\n background-color: #fff;\n border-color: #207ab7;\n box-shadow: none;\n outline: none;\n}\n.tox .tox-selectfield svg {\n pointer-events: none;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox:not([dir=rtl]) .tox-selectfield select[size=\"0\"],\n.tox:not([dir=rtl]) .tox-selectfield select[size=\"1\"] {\n padding-right: 24px;\n}\n.tox:not([dir=rtl]) .tox-selectfield svg {\n right: 8px;\n}\n.tox[dir=rtl] .tox-selectfield select[size=\"0\"],\n.tox[dir=rtl] .tox-selectfield select[size=\"1\"] {\n padding-left: 24px;\n}\n.tox[dir=rtl] .tox-selectfield svg {\n left: 8px;\n}\n.tox .tox-textarea {\n -webkit-appearance: textarea;\n -moz-appearance: textarea;\n appearance: textarea;\n white-space: pre-wrap;\n}\n.tox-fullscreen {\n border: 0;\n height: 100%;\n left: 0;\n margin: 0;\n overflow: hidden;\n -ms-scroll-chaining: none;\n overscroll-behavior: none;\n padding: 0;\n position: fixed;\n top: 0;\n touch-action: pinch-zoom;\n width: 100%;\n}\n.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {\n display: none;\n}\n.tox.tox-tinymce.tox-fullscreen {\n z-index: 1200;\n}\n.tox-shadowhost.tox-fullscreen {\n z-index: 1200;\n}\n.tox-fullscreen .tox.tox-tinymce-aux,\n.tox-fullscreen ~ .tox.tox-tinymce-aux {\n z-index: 1201;\n}\n.tox .tox-help__more-link {\n list-style: none;\n margin-top: 1em;\n}\n.tox .tox-image-tools {\n width: 100%;\n}\n.tox .tox-image-tools__toolbar {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.tox .tox-image-tools__image {\n background-color: #666;\n height: 380px;\n overflow: auto;\n position: relative;\n width: 100%;\n}\n.tox .tox-image-tools__image,\n.tox .tox-image-tools__image + .tox-image-tools__toolbar {\n margin-top: 8px;\n}\n.tox .tox-image-tools__image-bg {\n background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);\n}\n.tox .tox-image-tools__toolbar > .tox-spacer {\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-croprect-block {\n background: black;\n filter: alpha(opacity=50);\n opacity: 0.5;\n position: absolute;\n zoom: 1;\n}\n.tox .tox-croprect-handle {\n border: 2px solid white;\n height: 20px;\n left: 0;\n position: absolute;\n top: 0;\n width: 20px;\n}\n.tox .tox-croprect-handle-move {\n border: 0;\n cursor: move;\n position: absolute;\n}\n.tox .tox-croprect-handle-nw {\n border-width: 2px 0 0 2px;\n cursor: nw-resize;\n left: 100px;\n margin: -2px 0 0 -2px;\n top: 100px;\n}\n.tox .tox-croprect-handle-ne {\n border-width: 2px 2px 0 0;\n cursor: ne-resize;\n left: 200px;\n margin: -2px 0 0 -20px;\n top: 100px;\n}\n.tox .tox-croprect-handle-sw {\n border-width: 0 0 2px 2px;\n cursor: sw-resize;\n left: 100px;\n margin: -20px 2px 0 -2px;\n top: 200px;\n}\n.tox .tox-croprect-handle-se {\n border-width: 0 2px 2px 0;\n cursor: se-resize;\n left: 200px;\n margin: -20px 0 0 -20px;\n top: 200px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider {\n margin-left: 32px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button {\n margin-left: 32px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider {\n margin-right: 32px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button {\n margin-right: 32px;\n}\n.tox .tox-insert-table-picker {\n display: flex;\n flex-wrap: wrap;\n width: 170px;\n}\n.tox .tox-insert-table-picker > div {\n border-color: #cccccc;\n border-style: solid;\n border-width: 0 1px 1px 0;\n box-sizing: border-box;\n height: 17px;\n width: 17px;\n}\n.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {\n margin: -4px 0;\n}\n.tox .tox-insert-table-picker .tox-insert-table-picker__selected {\n background-color: rgba(32, 122, 183, 0.5);\n border-color: rgba(32, 122, 183, 0.5);\n}\n.tox .tox-insert-table-picker__label {\n color: rgba(34, 47, 62, 0.7);\n display: block;\n font-size: 14px;\n padding: 4px;\n text-align: center;\n width: 100%;\n}\n.tox:not([dir=rtl]) {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) {\n border-right: 0;\n}\n.tox[dir=rtl] {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) {\n border-right: 0;\n}\n.tox {\n /* stylelint-disable */\n /* stylelint-enable */\n}\n.tox .tox-menu {\n background-color: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);\n display: inline-block;\n overflow: hidden;\n vertical-align: top;\n z-index: 1150;\n}\n.tox .tox-menu.tox-collection.tox-collection--list {\n padding: 0;\n}\n.tox .tox-menu.tox-collection.tox-collection--toolbar {\n padding: 4px;\n}\n.tox .tox-menu.tox-collection.tox-collection--grid {\n padding: 4px;\n}\n.tox .tox-menu__label h1,\n.tox .tox-menu__label h2,\n.tox .tox-menu__label h3,\n.tox .tox-menu__label h4,\n.tox .tox-menu__label h5,\n.tox .tox-menu__label h6,\n.tox .tox-menu__label p,\n.tox .tox-menu__label blockquote,\n.tox .tox-menu__label code {\n margin: 0;\n}\n.tox .tox-menubar {\n background: url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E\") left 0 top 0 #fff;\n background-color: #fff;\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: wrap;\n padding: 0 4px 0 4px;\n}\n.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {\n border-top: 1px solid #cccccc;\n}\n/* Deprecated. Remove in next major release */\n.tox .tox-mbtn {\n align-items: center;\n background: transparent;\n border: 0;\n border-radius: 3px;\n box-shadow: none;\n color: #222f3e;\n display: flex;\n flex: 0 0 auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n height: 34px;\n justify-content: center;\n margin: 2px 0 3px 0;\n outline: none;\n overflow: hidden;\n padding: 0 4px;\n text-transform: none;\n width: auto;\n}\n.tox .tox-mbtn[disabled] {\n background-color: transparent;\n border: 0;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-mbtn:focus:not(:disabled) {\n background: #dee0e2;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-mbtn--active {\n background: #c8cbcf;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {\n background: #dee0e2;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-mbtn__select-label {\n cursor: default;\n font-weight: normal;\n margin: 0 4px;\n}\n.tox .tox-mbtn[disabled] .tox-mbtn__select-label {\n cursor: not-allowed;\n}\n.tox .tox-mbtn__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n display: none;\n}\n.tox .tox-notification {\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n display: -ms-grid;\n display: grid;\n font-size: 14px;\n font-weight: normal;\n -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);\n grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);\n margin-top: 4px;\n opacity: 0;\n padding: 4px;\n transition: transform 100ms ease-in, opacity 150ms ease-in;\n}\n.tox .tox-notification p {\n font-size: 14px;\n font-weight: normal;\n}\n.tox .tox-notification a {\n text-decoration: underline;\n}\n.tox .tox-notification--in {\n opacity: 1;\n}\n.tox .tox-notification--success {\n background-color: #e4eeda;\n border-color: #d7e6c8;\n color: #222f3e;\n}\n.tox .tox-notification--success p {\n color: #222f3e;\n}\n.tox .tox-notification--success a {\n color: #547831;\n}\n.tox .tox-notification--success svg {\n fill: #222f3e;\n}\n.tox .tox-notification--error {\n background-color: #f8dede;\n border-color: #f2bfbf;\n color: #222f3e;\n}\n.tox .tox-notification--error p {\n color: #222f3e;\n}\n.tox .tox-notification--error a {\n color: #c00;\n}\n.tox .tox-notification--error svg {\n fill: #222f3e;\n}\n.tox .tox-notification--warn,\n.tox .tox-notification--warning {\n background-color: #fffaea;\n border-color: #ffe89d;\n color: #222f3e;\n}\n.tox .tox-notification--warn p,\n.tox .tox-notification--warning p {\n color: #222f3e;\n}\n.tox .tox-notification--warn a,\n.tox .tox-notification--warning a {\n color: #222f3e;\n}\n.tox .tox-notification--warn svg,\n.tox .tox-notification--warning svg {\n fill: #222f3e;\n}\n.tox .tox-notification--info {\n background-color: #d9edf7;\n border-color: #779ecb;\n color: #222f3e;\n}\n.tox .tox-notification--info p {\n color: #222f3e;\n}\n.tox .tox-notification--info a {\n color: #222f3e;\n}\n.tox .tox-notification--info svg {\n fill: #222f3e;\n}\n.tox .tox-notification__body {\n -ms-grid-row-align: center;\n align-self: center;\n color: #222f3e;\n font-size: 14px;\n -ms-grid-column-span: 1;\n grid-column-end: 3;\n -ms-grid-column: 2;\n grid-column-start: 2;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n text-align: center;\n white-space: normal;\n word-break: break-all;\n word-break: break-word;\n}\n.tox .tox-notification__body > * {\n margin: 0;\n}\n.tox .tox-notification__body > * + * {\n margin-top: 1rem;\n}\n.tox .tox-notification__icon {\n -ms-grid-row-align: center;\n align-self: center;\n -ms-grid-column-span: 1;\n grid-column-end: 2;\n -ms-grid-column: 1;\n grid-column-start: 1;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n -ms-grid-column-align: end;\n justify-self: end;\n}\n.tox .tox-notification__icon svg {\n display: block;\n}\n.tox .tox-notification__dismiss {\n -ms-grid-row-align: start;\n align-self: start;\n -ms-grid-column-span: 1;\n grid-column-end: 4;\n -ms-grid-column: 3;\n grid-column-start: 3;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n -ms-grid-column-align: end;\n justify-self: end;\n}\n.tox .tox-notification .tox-progress-bar {\n -ms-grid-column-span: 3;\n grid-column-end: 4;\n -ms-grid-column: 1;\n grid-column-start: 1;\n -ms-grid-row-span: 1;\n grid-row-end: 3;\n -ms-grid-row: 2;\n grid-row-start: 2;\n -ms-grid-column-align: center;\n justify-self: center;\n}\n.tox .tox-pop {\n display: inline-block;\n position: relative;\n}\n.tox .tox-pop--resizing {\n transition: width 0.1s ease;\n}\n.tox .tox-pop--resizing .tox-toolbar {\n flex-wrap: nowrap;\n}\n.tox .tox-pop__dialog {\n background-color: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n min-width: 0;\n overflow: hidden;\n}\n.tox .tox-pop__dialog > *:not(.tox-toolbar) {\n margin: 4px 4px 4px 8px;\n}\n.tox .tox-pop__dialog .tox-toolbar {\n background-color: transparent;\n margin-bottom: -1px;\n}\n.tox .tox-pop::before,\n.tox .tox-pop::after {\n border-style: solid;\n content: '';\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n}\n.tox .tox-pop.tox-pop--bottom::before,\n.tox .tox-pop.tox-pop--bottom::after {\n left: 50%;\n top: 100%;\n}\n.tox .tox-pop.tox-pop--bottom::after {\n border-color: #fff transparent transparent transparent;\n border-width: 8px;\n margin-left: -8px;\n margin-top: -1px;\n}\n.tox .tox-pop.tox-pop--bottom::before {\n border-color: #cccccc transparent transparent transparent;\n border-width: 9px;\n margin-left: -9px;\n}\n.tox .tox-pop.tox-pop--top::before,\n.tox .tox-pop.tox-pop--top::after {\n left: 50%;\n top: 0;\n transform: translateY(-100%);\n}\n.tox .tox-pop.tox-pop--top::after {\n border-color: transparent transparent #fff transparent;\n border-width: 8px;\n margin-left: -8px;\n margin-top: 1px;\n}\n.tox .tox-pop.tox-pop--top::before {\n border-color: transparent transparent #cccccc transparent;\n border-width: 9px;\n margin-left: -9px;\n}\n.tox .tox-pop.tox-pop--left::before,\n.tox .tox-pop.tox-pop--left::after {\n left: 0;\n top: calc(50% - 1px);\n transform: translateY(-50%);\n}\n.tox .tox-pop.tox-pop--left::after {\n border-color: transparent #fff transparent transparent;\n border-width: 8px;\n margin-left: -15px;\n}\n.tox .tox-pop.tox-pop--left::before {\n border-color: transparent #cccccc transparent transparent;\n border-width: 10px;\n margin-left: -19px;\n}\n.tox .tox-pop.tox-pop--right::before,\n.tox .tox-pop.tox-pop--right::after {\n left: 100%;\n top: calc(50% + 1px);\n transform: translateY(-50%);\n}\n.tox .tox-pop.tox-pop--right::after {\n border-color: transparent transparent transparent #fff;\n border-width: 8px;\n margin-left: -1px;\n}\n.tox .tox-pop.tox-pop--right::before {\n border-color: transparent transparent transparent #cccccc;\n border-width: 10px;\n margin-left: -1px;\n}\n.tox .tox-pop.tox-pop--align-left::before,\n.tox .tox-pop.tox-pop--align-left::after {\n left: 20px;\n}\n.tox .tox-pop.tox-pop--align-right::before,\n.tox .tox-pop.tox-pop--align-right::after {\n left: calc(100% - 20px);\n}\n.tox .tox-sidebar-wrap {\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n -ms-flex-preferred-size: 0;\n min-height: 0;\n}\n.tox .tox-sidebar {\n background-color: #fff;\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n}\n.tox .tox-sidebar__slider {\n display: flex;\n overflow: hidden;\n}\n.tox .tox-sidebar__pane-container {\n display: flex;\n}\n.tox .tox-sidebar__pane {\n display: flex;\n}\n.tox .tox-sidebar--sliding-closed {\n opacity: 0;\n}\n.tox .tox-sidebar--sliding-open {\n opacity: 1;\n}\n.tox .tox-sidebar--sliding-growing,\n.tox .tox-sidebar--sliding-shrinking {\n transition: width 0.5s ease, opacity 0.5s ease;\n}\n.tox .tox-selector {\n background-color: #4099ff;\n border-color: #4099ff;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n display: inline-block;\n height: 10px;\n position: absolute;\n width: 10px;\n}\n.tox.tox-platform-touch .tox-selector {\n height: 12px;\n width: 12px;\n}\n.tox .tox-slider {\n align-items: center;\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 24px;\n justify-content: center;\n position: relative;\n}\n.tox .tox-slider__rail {\n background-color: transparent;\n border: 1px solid #cccccc;\n border-radius: 3px;\n height: 10px;\n min-width: 120px;\n width: 100%;\n}\n.tox .tox-slider__handle {\n background-color: #207ab7;\n border: 2px solid #185d8c;\n border-radius: 3px;\n box-shadow: none;\n height: 24px;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n width: 14px;\n}\n.tox .tox-source-code {\n overflow: auto;\n}\n.tox .tox-spinner {\n display: flex;\n}\n.tox .tox-spinner > div {\n animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;\n background-color: rgba(34, 47, 62, 0.7);\n border-radius: 100%;\n height: 8px;\n width: 8px;\n}\n.tox .tox-spinner > div:nth-child(1) {\n animation-delay: -0.32s;\n}\n.tox .tox-spinner > div:nth-child(2) {\n animation-delay: -0.16s;\n}\n@keyframes tam-bouncing-dots {\n 0%,\n 80%,\n 100% {\n transform: scale(0);\n }\n 40% {\n transform: scale(1);\n }\n}\n.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-spinner > div:not(:first-child) {\n margin-right: 4px;\n}\n.tox .tox-statusbar {\n align-items: center;\n background-color: #fff;\n border-top: 1px solid #cccccc;\n color: rgba(34, 47, 62, 0.7);\n display: flex;\n flex: 0 0 auto;\n font-size: 12px;\n font-weight: normal;\n height: 18px;\n overflow: hidden;\n padding: 0 8px;\n position: relative;\n text-transform: uppercase;\n}\n.tox .tox-statusbar__text-container {\n display: flex;\n flex: 1 1 auto;\n justify-content: flex-end;\n overflow: hidden;\n}\n.tox .tox-statusbar__path {\n display: flex;\n flex: 1 1 auto;\n margin-right: auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.tox .tox-statusbar__path > * {\n display: inline;\n white-space: nowrap;\n}\n.tox .tox-statusbar__wordcount {\n flex: 0 0 auto;\n margin-left: 1ch;\n}\n.tox .tox-statusbar a,\n.tox .tox-statusbar__path-item,\n.tox .tox-statusbar__wordcount {\n color: rgba(34, 47, 62, 0.7);\n text-decoration: none;\n}\n.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) {\n cursor: pointer;\n text-decoration: underline;\n}\n.tox .tox-statusbar__resize-handle {\n align-items: flex-end;\n align-self: stretch;\n cursor: nwse-resize;\n display: flex;\n flex: 0 0 auto;\n justify-content: flex-end;\n margin-left: auto;\n margin-right: -8px;\n padding-left: 1ch;\n}\n.tox .tox-statusbar__resize-handle svg {\n display: block;\n fill: rgba(34, 47, 62, 0.7);\n}\n.tox:not([dir=rtl]) .tox-statusbar__path > * {\n margin-right: 4px;\n}\n.tox:not([dir=rtl]) .tox-statusbar__branding {\n margin-left: 1ch;\n}\n.tox[dir=rtl] .tox-statusbar {\n flex-direction: row-reverse;\n}\n.tox[dir=rtl] .tox-statusbar__path > * {\n margin-left: 4px;\n}\n.tox .tox-throbber {\n z-index: 1400;\n}\n.tox .tox-throbber__busy-spinner {\n align-items: center;\n background-color: rgba(255, 255, 255, 0.6);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n.tox .tox-tbtn {\n align-items: center;\n background: transparent;\n border: 0;\n border-radius: 3px;\n box-shadow: none;\n color: #222f3e;\n display: flex;\n flex: 0 0 auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n height: 34px;\n justify-content: center;\n margin: 2px 0 3px 0;\n outline: none;\n overflow: hidden;\n padding: 0;\n text-transform: none;\n width: 34px;\n}\n.tox .tox-tbtn svg {\n display: block;\n fill: #222f3e;\n}\n.tox .tox-tbtn.tox-tbtn-more {\n padding-left: 5px;\n padding-right: 5px;\n width: inherit;\n}\n.tox .tox-tbtn:focus {\n background: #dee0e2;\n border: 0;\n box-shadow: none;\n}\n.tox .tox-tbtn:hover {\n background: #dee0e2;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-tbtn:hover svg {\n fill: #222f3e;\n}\n.tox .tox-tbtn:active {\n background: #c8cbcf;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-tbtn:active svg {\n fill: #222f3e;\n}\n.tox .tox-tbtn--disabled,\n.tox .tox-tbtn--disabled:hover,\n.tox .tox-tbtn:disabled,\n.tox .tox-tbtn:disabled:hover {\n background: transparent;\n border: 0;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-tbtn--disabled svg,\n.tox .tox-tbtn--disabled:hover svg,\n.tox .tox-tbtn:disabled svg,\n.tox .tox-tbtn:disabled:hover svg {\n /* stylelint-disable-line no-descending-specificity */\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-tbtn--enabled,\n.tox .tox-tbtn--enabled:hover {\n background: #c8cbcf;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-tbtn--enabled > *,\n.tox .tox-tbtn--enabled:hover > * {\n transform: none;\n}\n.tox .tox-tbtn--enabled svg,\n.tox .tox-tbtn--enabled:hover svg {\n /* stylelint-disable-line no-descending-specificity */\n fill: #222f3e;\n}\n.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {\n color: #222f3e;\n}\n.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {\n fill: #222f3e;\n}\n.tox .tox-tbtn:active > * {\n transform: none;\n}\n.tox .tox-tbtn--md {\n height: 51px;\n width: 51px;\n}\n.tox .tox-tbtn--lg {\n flex-direction: column;\n height: 68px;\n width: 68px;\n}\n.tox .tox-tbtn--return {\n -ms-grid-row-align: stretch;\n align-self: stretch;\n height: unset;\n width: 16px;\n}\n.tox .tox-tbtn--labeled {\n padding: 0 4px;\n width: unset;\n}\n.tox .tox-tbtn__vlabel {\n display: block;\n font-size: 10px;\n font-weight: normal;\n letter-spacing: -0.025em;\n margin-bottom: 4px;\n white-space: nowrap;\n}\n.tox .tox-tbtn--select {\n margin: 2px 0 3px 0;\n padding: 0 4px;\n width: auto;\n}\n.tox .tox-tbtn__select-label {\n cursor: default;\n font-weight: normal;\n margin: 0 4px;\n}\n.tox .tox-tbtn__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n}\n.tox .tox-tbtn__select-chevron svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 7em;\n}\n.tox .tox-split-button {\n border: 0;\n border-radius: 3px;\n box-sizing: border-box;\n display: flex;\n margin: 2px 0 3px 0;\n overflow: hidden;\n}\n.tox .tox-split-button:hover {\n box-shadow: 0 0 0 1px #dee0e2 inset;\n}\n.tox .tox-split-button:focus {\n background: #dee0e2;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-split-button > * {\n border-radius: 0;\n}\n.tox .tox-split-button__chevron {\n width: 16px;\n}\n.tox .tox-split-button__chevron svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-split-button .tox-tbtn {\n margin: 0;\n}\n.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {\n width: 30px;\n}\n.tox.tox-platform-touch .tox-split-button__chevron {\n width: 20px;\n}\n.tox .tox-split-button.tox-tbtn--disabled:hover,\n.tox .tox-split-button.tox-tbtn--disabled:focus,\n.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,\n.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {\n background: transparent;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-toolbar-overlord {\n background-color: #fff;\n}\n.tox .tox-toolbar,\n.tox .tox-toolbar__primary,\n.tox .tox-toolbar__overflow {\n background: url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E\") left 0 top 0 #fff;\n background-color: #fff;\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: wrap;\n padding: 0 0;\n}\n.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {\n height: 0;\n opacity: 0;\n padding-bottom: 0;\n padding-top: 0;\n visibility: hidden;\n}\n.tox .tox-toolbar__overflow--growing {\n transition: height 0.3s ease, opacity 0.2s linear 0.1s;\n}\n.tox .tox-toolbar__overflow--shrinking {\n transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;\n}\n.tox .tox-menubar + .tox-toolbar,\n.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {\n border-top: 1px solid #cccccc;\n margin-top: -1px;\n}\n.tox .tox-toolbar--scrolling {\n flex-wrap: nowrap;\n overflow-x: auto;\n}\n.tox .tox-pop .tox-toolbar {\n border-width: 0;\n}\n.tox .tox-toolbar--no-divider {\n background-image: none;\n}\n.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,\n.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {\n border-top: 1px solid #cccccc;\n}\n.tox.tox-tinymce-aux .tox-toolbar__overflow {\n background-color: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.tox[dir=rtl] .tox-tbtn__icon-rtl svg {\n transform: rotateY(180deg);\n}\n.tox .tox-toolbar__group {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n margin: 0 0;\n padding: 0 4px 0 4px;\n}\n.tox .tox-toolbar__group--pull-right {\n margin-left: auto;\n}\n.tox .tox-toolbar--scrolling .tox-toolbar__group {\n flex-shrink: 0;\n flex-wrap: nowrap;\n}\n.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) {\n border-right: 1px solid #cccccc;\n}\n.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) {\n border-left: 1px solid #cccccc;\n}\n.tox .tox-tooltip {\n display: inline-block;\n padding: 8px;\n position: relative;\n}\n.tox .tox-tooltip__body {\n background-color: #222f3e;\n border-radius: 3px;\n box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3);\n color: rgba(255, 255, 255, 0.75);\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n padding: 4px 8px;\n text-transform: none;\n}\n.tox .tox-tooltip__arrow {\n position: absolute;\n}\n.tox .tox-tooltip--down .tox-tooltip__arrow {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-top: 8px solid #222f3e;\n bottom: 0;\n left: 50%;\n position: absolute;\n transform: translateX(-50%);\n}\n.tox .tox-tooltip--up .tox-tooltip__arrow {\n border-bottom: 8px solid #222f3e;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n left: 50%;\n position: absolute;\n top: 0;\n transform: translateX(-50%);\n}\n.tox .tox-tooltip--right .tox-tooltip__arrow {\n border-bottom: 8px solid transparent;\n border-left: 8px solid #222f3e;\n border-top: 8px solid transparent;\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-tooltip--left .tox-tooltip__arrow {\n border-bottom: 8px solid transparent;\n border-right: 8px solid #222f3e;\n border-top: 8px solid transparent;\n left: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-well {\n border: 1px solid #cccccc;\n border-radius: 3px;\n padding: 8px;\n width: 100%;\n}\n.tox .tox-well > *:first-child {\n margin-top: 0;\n}\n.tox .tox-well > *:last-child {\n margin-bottom: 0;\n}\n.tox .tox-well > *:only-child {\n margin: 0;\n}\n.tox .tox-custom-editor {\n border: 1px solid #cccccc;\n border-radius: 3px;\n display: flex;\n flex: 1;\n position: relative;\n}\n/* stylelint-disable */\n.tox {\n /* stylelint-enable */\n}\n.tox .tox-dialog-loading::before {\n background-color: rgba(0, 0, 0, 0.5);\n content: \"\";\n height: 100%;\n position: absolute;\n width: 100%;\n z-index: 1000;\n}\n.tox .tox-tab {\n cursor: pointer;\n}\n.tox .tox-dialog__content-js {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-content .tox-collection {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-image-tools-edit-panel {\n height: 60px;\n}\n.tox .tox-image-tools__sidebar {\n height: 60px;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["ui/default/skin.css"],"names":[],"mappings":";;;;;;AAMA,KACE,WAAY,YACZ,MAAO,QACP,OAAQ,KACR,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,OACb,4BAA6B,YAC7B,gBAAiB,KACjB,YAAa,KACb,eAAgB,KAChB,eAAgB,QAChB,YAAa,OAEf,yBACE,WAAY,QACZ,MAAO,QACP,OAAQ,QACR,UAAW,QACX,YAAa,QACb,UAAW,QACX,WAAY,QACZ,YAAa,QACb,YAAa,QACb,4BAA6B,QAC7B,WAAY,QACZ,gBAAiB,QACjB,YAAa,QACb,eAAgB,QAChB,eAAgB,QAChB,YAAa,QAEf,yBAEE,WAAY,IACZ,OAAQ,EACR,MAAO,KACP,OAAQ,KACR,OAAQ,EACR,UAAW,KACX,QAAS,EACT,QAAS,EACT,SAAU,OACV,MAAO,KAET,oBACE,UAAW,IACX,WAAY,KAEd,cACE,UAAW,IACX,WAAY,MAEd,aACE,OAAQ,IAAI,MAAM,KAClB,cAAe,EACf,WAAY,KACZ,WAAY,WACZ,QAAS,KACT,eAAgB,OAChB,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,SAAU,OACV,SAAU,SACV,WAAY,kBAEd,oBACE,OAAQ,KACR,WAAY,KAEd,uCACE,OAAQ,IAAI,MAAM,KAClB,cAAe,EACf,WAAY,KAEd,iBACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,QAAS,KAEX,oBACA,wBACE,QAAS,EAEX,yBACE,OAAQ,EAEV,kCACE,YAAa,OACb,QAAS,KACT,cAAe,IAEjB,uCACE,YAAa,QACb,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,KACT,gBAAiB,cAEnB,2CACE,eAAgB,IAElB,+CACE,YAAa,OACb,QAAS,KACT,cAAe,IAEjB,oEACE,aAAc,KACd,aAAc,MAEhB,kCACE,WAAY,KAEd,4FACE,iBAAkB,oBAClB,aAAc,oBACd,MAAO,QAET,wGACE,aAAc,oBAEhB,8EACE,MAAO,QAET,wEACE,KAAM,QAER,sEACE,MAAO,QAET,4FACE,iBAAkB,mBAClB,aAAc,mBACd,MAAO,QAET,wGACE,aAAc,mBAEhB,8EACE,MAAO,QAET,wEACE,KAAM,QAER,sEACE,MAAO,QAET,6FACE,iBAAkB,iBAClB,aAAc,iBACd,MAAO,QAET,yGACE,aAAc,iBAEhB,+EACE,MAAO,KAET,yEACE,KAAM,KAER,uEACE,MAAO,KAET,+FACE,iBAAkB,oBAClB,aAAc,oBACd,MAAO,QAET,2GACE,aAAc,oBAEhB,iFACE,MAAO,QAET,2EACE,KAAM,QAER,yEACE,MAAO,QAET,+DACA,qFACE,WAAY,EAEd,uFACE,YAAa,IAEf,8FACE,YAAa,KAEf,gFACE,QAAS,IAAI,IAAI,IAAI,IAEvB,4FACE,kBAAmB,IACnB,aAAc,IAEhB,iFACE,aAAc,IAEhB,wFACE,aAAc,KAEhB,0EACE,QAAS,IAAI,IAAI,IAAI,IAEvB,sFACE,mBAAoB,IACpB,cAAe,IAEjB,oBACE,QAAS,KACT,KAAM,EAAE,EAAE,KAEZ,cACE,QAAS,KACT,KAAM,EAAE,EAAE,KAEZ,iBACE,iBAAkB,QAClB,iBAAkB,KAClB,oBAAqB,EAAE,EACvB,kBAAmB,OACnB,aAAc,QACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,KACP,OAAQ,QACR,QAAS,aACT,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,YAAa,KACb,OAAQ,EACR,QAAS,EACT,QAAS,IAAI,KACb,WAAY,OACZ,gBAAiB,KACjB,eAAgB,WAChB,YAAa,OAEf,2BACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,qBACP,OAAQ,YAEV,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,uCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,KAET,4BACE,iBAAkB,QAClB,iBAAkB,KAClB,oBAAqB,EAAE,EACvB,kBAAmB,OACnB,aAAc,QACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,MAAO,QACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,QAAS,EACT,QAAS,IAAI,KACb,gBAAiB,KACjB,eAAgB,WAElB,sCACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,kBAET,iDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,iDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,kDACE,iBAAkB,QAClB,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,uBACA,kCACA,wDACE,QAAS,IAEX,qCACA,gDACA,sEACE,QAAS,MACT,KAAM,aAER,sBACE,WAAY,EACZ,OAAQ,KACR,WAAY,WACZ,OAAQ,QACR,QAAS,aACT,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,IACb,YAAa,IACb,OAAQ,EACR,QAAS,EACT,YAAa,OAEf,0BACE,UAAW,KAEb,wBACE,iBAAkB,YAClB,aAAc,YACd,WAAY,MACZ,MAAO,QAET,kCACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,kBAET,6CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,6CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,8CACE,iBAAkB,QAClB,aAAc,QACd,WAAY,KACZ,MAAO,QAET,sCACE,KAAM,aAER,8DACE,MAAO,QAET,mBACE,YAAa,OACb,cAAe,IACf,OAAQ,QACR,QAAS,KACT,OAAQ,KACR,UAAW,KAEb,0BAEE,OAAQ,IACR,SAAU,OACV,SAAU,SACV,IAAK,KACL,MAAO,IAET,0BACE,YAAa,OACb,cAAe,IACf,WAAY,EAAE,EAAE,EAAE,IAAI,YACtB,WAAY,YACZ,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,QAAS,gBACT,MAAO,KAET,4DACE,QAAS,MACT,KAAM,kBAER,gEACE,QAAS,KACT,KAAM,QAER,0DACE,QAAS,KACT,KAAM,QAER,6BACE,MAAO,kBACP,OAAQ,YAEV,kFACE,KAAM,kBAER,oFACE,KAAM,kBAER,wFACE,KAAM,kBAER,8FACE,QAAS,KAEX,4FACE,QAAS,MAEX,oGACE,QAAS,KAEX,wGACE,QAAS,MAEX,0DACE,cAAe,IACf,WAAY,MAAM,EAAE,EAAE,EAAE,IAAI,QAC5B,QAAS,gBAEX,yCACE,YAAa,IAEf,yCACE,KAAM,SAER,2CACE,YAAa,IAEf,mCACE,aAAc,IAEhB,mCACE,MAAO,SAET,qCACE,aAAc,IAKhB,qDACE,QAAS,KACT,QAAS,EAEX,kDACE,QAAS,KACT,UAAW,KACX,WAAY,MACZ,WAAY,OACZ,WAAY,KACZ,QAAS,EAEX,kDACE,oBAAqB,EACrB,aAAc,KACd,kBAAmB,EACnB,mBAAoB,EACpB,aAAc,MACd,iBAAkB,IAClB,QAAS,IAAI,EAEf,8DACE,iBAAkB,EAEpB,oCACE,iBAAkB,QAClB,MAAO,kBACP,OAAQ,QACR,UAAW,KACX,WAAY,OACZ,YAAa,IACb,cAAe,IACf,WAAY,KACZ,QAAS,IAAI,IACb,eAAgB,KAChB,sBAAuB,KACvB,oBAAqB,KAClB,iBAAkB,KACjB,gBAAiB,KACb,YAAa,KAEvB,2BACE,YAAa,OACb,MAAO,QACP,OAAQ,QACR,QAAS,KACT,sBAAuB,KACvB,oBAAqB,KAClB,iBAAkB,KACjB,gBAAiB,KACb,YAAa,KAEvB,iDACE,QAAS,IAAI,IAEf,oDACE,cAAe,IACf,QAAS,IAEX,iDACE,cAAe,IACf,QAAS,IAEX,0DACE,iBAAkB,KAClB,MAAO,QAET,yDACE,iBAAkB,QAEpB,6DACE,iBAAkB,QAClB,MAAO,QAET,4DACE,iBAAkB,QAEpB,0DACE,iBAAkB,QAClB,MAAO,QAET,oGACE,iBAAkB,QAClB,MAAO,QAET,oGACE,MAAO,QAET,uGACE,MAAO,QAET,2CACE,iBAAkB,YAClB,MAAO,kBACP,OAAQ,YAGV,qCADA,gCAEE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,MAAO,KAGT,yCADA,oCAEE,KAAM,aAER,4DACE,OAAQ,KACR,MAAO,KAET,iCACE,MAAO,aACP,QAAS,aACT,KAAM,EACN,wBAAyB,KACzB,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,KACb,eAAgB,KAChB,WAAY,UAEd,qCACE,MAAO,kBACP,QAAS,aACT,UAAW,KACX,OAAQ,KACR,YAAa,KACb,eAAgB,KAElB,iCACE,YAAa,OACb,QAAS,KACT,WAAY,KAEd,wCACE,QAAS,GACT,UAAW,EACX,WAAY,QAEd,qCACE,KAAM,QAER,yHACE,QAAS,KAEX,qJACE,QAAS,KAEX,iCACE,iBAAkB,KAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBACtB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,OACX,cAAe,EACf,WAAY,KACZ,QAAS,EAEX,wDACE,YAAa,OACb,QAAS,KACT,UAAW,OACX,OAAQ,EACR,QAAS,EAAE,IAEb,uDACE,OAAQ,KACR,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EAAE,IAEb,6DACE,YAAa,OAEf,6DACE,YAAa,IAEf,qCACE,QAAS,KAEX,0CACE,YAAa,OACb,KAAM,EAAE,EAAE,KACV,eAAgB,IAElB,qFACE,aAAc,KAEhB,sFACE,gBAAiB,SACjB,YAAa,KAEf,qFACE,YAAa,WACb,cAAe,KAEjB,wFACE,YAAa,OAEf,wFACE,YAAa,SACb,WAAY,KAEd,6CACE,mBAAoB,OAChB,WAAY,OAChB,KAAM,EAAE,EAAE,KACV,eAAgB,OAElB,wFACE,YAAa,WAEf,yFACE,YAAa,SAEf,wFACE,WAAY,WAEd,2FACE,mBAAoB,OAChB,WAAY,OAElB,2FACE,WAAY,SAEd,0FACE,aAAc,IAAI,MAAM,KAE1B,mFACE,YAAa,IAEf,wGACE,YAAa,IAEf,oDACE,YAAa,KACb,WAAY,MAEd,gEACE,YAAa,KAEf,oFACE,YAAa,IAAI,MAAM,KAEzB,6EACE,aAAc,IAEhB,kGACE,aAAc,IAKhB,4EACE,UAAW,gBAEb,8CACE,aAAc,KACd,WAAY,KAEd,0DACE,aAAc,KACd,UAAW,gBAEb,sEACE,aAAc,IAEhB,iCACE,QAAS,KACT,eAAgB,IAChB,OAAQ,MACR,OAAQ,EAEV,qBACE,WAAY,WACZ,QAAS,KACT,OAAQ,KAEV,8BACE,OAAQ,KAEV,qBACA,8BACE,MAAO,MAET,2BACE,WAAY,IACZ,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,YACZ,OAAQ,KACR,SAAU,SACV,MAAO,KAET,iCACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,OAAQ,KACR,SAAU,SACV,MAAO,KAET,qBACE,WAAY,WACZ,OAAQ,KACR,MAAO,KAET,8BACE,WAAY,4GACZ,OAAQ,KACR,MAAO,KAET,qBACA,8BACE,MAAO,KAET,2BACE,WAAY,KACZ,OAAQ,IAAI,MAAM,KAClB,WAAY,YACZ,OAAQ,IACR,MAAO,KAET,mBACE,QAAS,KACT,eAAgB,OAChB,gBAAiB,cAEnB,uBACE,YAAa,OACb,QAAS,KACT,gBAAiB,cACjB,cAAe,IACf,MAAO,QAET,yBACE,MAAO,IAET,qCAEE,OAAQ,IAAI,MAAM,cAEpB,qCACE,OAAQ,IAAI,MAAM,KAClB,UAAW,EACX,cAAe,EAEjB,oCACE,aAAc,KAEhB,oCACE,aAAc,KAEhB,0CACE,YAAa,KAEf,wCACE,aAAc,KAEhB,8BACE,YAAa,KAEf,8BACE,YAAa,KAEf,oCACE,aAAc,KAEhB,kCACE,YAAa,KAEf,gCAEA,0CADA,yCAEE,OAAQ,IAAI,EAAE,IAAI,IAEpB,qEACE,OAAQ,EACR,OAAQ,KAAK,EAEf,wBACE,QAAS,KAEX,iBACE,OAAQ,KACR,WAAY,UAAU,IAAK,CAAE,WAAW,KACxC,MAAO,KAGT,uBADA,uBAEE,WAAY,EAAE,EAAE,EAAE,IAAI,qBAAyB,MAC/C,UAAW,UAEb,yBACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,kCACE,OAAQ,QAEV,+BACE,YAAa,OACb,iBAAkB,YAClB,OAAQ,EACR,OAAQ,QACR,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,QAAS,EACT,QAAS,EACT,MAAO,KAET,mCACE,OAAQ,KACR,MAAO,KAET,qCACE,WAAY,QAEd,8CACE,YAAa,KAEf,wCACE,aAAc,KAEhB,yBACE,WAAY,KACZ,SAAU,SAEZ,4CACE,WAAY,IAEd,kBACE,WAAY,KACZ,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,EAAE,kBACxB,QAAS,IAAI,IAAI,KAAK,IACtB,SAAU,SAEZ,0BACE,YAAa,OACb,MAAO,QACP,QAAS,KACT,gBAAiB,cAEnB,wBACE,MAAO,kBACP,UAAW,KAEb,wBACE,MAAO,QACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,WAAY,IACZ,SAAU,SACV,eAAgB,QAElB,iCACE,OAAQ,KACR,YAAa,OACb,MAAO,KAET,4BACE,YAAa,IAEf,8BACE,MAAO,kBACP,UAAW,KACX,WAAY,OAEd,0BACE,OAAQ,EAEV,iCACE,YAAa,KACb,WAAY,OAEd,yCACE,WAAY,KACZ,OAAQ,EACR,QAAS,GACT,QAAS,KACT,KAAM,EACN,QAAS,GACT,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,yBACE,QAAS,KACT,YAAa,EACb,UAAW,KACX,gBAAiB,SACjB,WAAY,IAEd,sCACE,cAAe,IACf,MAAO,KAET,wBACE,QAAS,KACT,UAAW,KACX,gBAAiB,SACjB,WAAY,KAEd,mCACE,WAAY,0CACZ,OAAQ,EACR,QAAS,GACT,QAAS,MACT,OAAQ,IACR,WAAY,MACZ,SAAU,SACV,MAAO,KAET,2BACE,WAAY,KACZ,OAAQ,EACR,QAAS,KACT,eAAgB,OAChB,UAAW,EACX,KAAM,EACN,QAAS,GACT,SAAU,SACV,MAAO,EACP,WAAY,OACZ,IAAK,EACL,QAAS,EAEX,gCACE,YAAa,OACb,MAAO,QACP,QAAS,KACT,eAAgB,OAChB,SAAU,SAEZ,oCACE,eAAgB,KAElB,+BACE,OAAQ,EACR,eAAgB,OAChB,UAAW,KACX,KAAM,EACN,QAAS,IACT,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,GAEX,iCACE,iBAAkB,KAClB,WAAY,EAAE,EAAE,IAAI,IAAI,KACxB,MAAO,QACP,WAAY,OAEd,kDACE,UAAW,KAEb,gCACE,YAAa,OACb,iBAAkB,KAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,GAEX,0BACE,QAAS,KACT,eAAgB,OAChB,YAAa,EACb,SAAU,KAEZ,wBACE,OAAQ,IAEV,uCACE,YAAa,IAEf,4DACA,mDACA,oDACE,YAAa,IAEf,iCACE,aAAc,IAEhB,sDACA,6CACA,8CACE,aAAc,IAEhB,eACE,YAAa,OACb,QAAS,KAEX,2BACE,KAAM,kBAER,qBACE,MAAO,kBACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,UAElB,0CACE,aAAc,IAEhB,sDACE,YAAa,IAEf,oCACE,YAAa,IAEf,gDACE,aAAc,IAEhB,sBACE,YAAa,OACb,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,MACV,MAAO,EACP,IAAK,EACL,QAAS,KAEX,gCACE,iBAAkB,sBAClB,OAAQ,EACR,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,wCACE,iBAAkB,KAEpB,iBACE,iBAAkB,KAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,EAAE,KAAK,KAAK,MAAM,kBAAsB,CAAE,EAAE,EAAE,KAAK,IAAI,mBACnE,QAAS,KACT,eAAgB,OAChB,WAAY,KACZ,UAAW,MACX,SAAU,OACV,SAAU,SACV,MAAO,KACP,QAAS,EAEX,yCACE,8CACE,WAAY,WACZ,OAAQ,IAAI,KACZ,MAAO,oBAGX,wBACE,QAAS,KAEX,yBACE,YAAa,OACb,iBAAkB,KAClB,cAAe,KACf,MAAO,QACP,QAAS,KACT,UAAW,KACX,gBAAiB,cACjB,QAAS,IAAI,KAAK,EAAE,KACpB,SAAU,SAEZ,qCACE,QAAS,EAEX,6BACE,OAAQ,KACR,OAAQ,KACR,KAAM,EACN,SAAU,SACV,IAAK,EACL,MAAO,KAET,oCACE,OAAQ,SAEV,0BACE,YAAa,KAEf,wBACE,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,OAAQ,EACR,eAAgB,KAElB,uBACE,MAAO,QACP,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,UAAW,EACX,WAAY,KACZ,eAAgB,KAElB,yCACE,oDACE,eAAgB,QAGpB,2BACE,YAAa,WACb,QAAS,KACT,eAAgB,OAChB,QAAS,KAAK,KAEhB,yCACE,wDACE,eAAgB,IAChB,2BAA4B,MAC5B,WAAY,KACZ,eAAgB,GAGpB,gCACE,cAAe,IAAI,MAAM,YACzB,MAAO,kBACP,QAAS,aACT,UAAW,KACX,YAAa,IACb,cAAe,IACf,gBAAiB,KACjB,YAAa,OAEf,sCACE,iBAAkB,oBAEpB,wCACE,cAAe,IAAI,MAAM,QACzB,MAAO,QAET,+BACE,WAAY,WACZ,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KACzB,WAAY,MACZ,SAAU,KACV,2BAA4B,MAC5B,QAAS,KAAK,KAEhB,iCACE,cAAe,EACf,WAAY,KAEd,4CACE,WAAY,EAEd,2CACE,cAAe,EAEjB,2CACE,cAAe,EACf,WAAY,EAEd,iCACE,MAAO,QACP,OAAQ,QACR,gBAAiB,KAGnB,uCADA,uCAEE,MAAO,QACP,gBAAiB,KAEnB,wCACE,MAAO,QACP,gBAAiB,KAEnB,mCACE,KAAM,QAER,kCACE,QAAS,MACT,gBAAiB,KACjB,cAAe,KACf,mBAAoB,EACZ,kBAAmB,EAC3B,qBAAsB,EACd,oBAAqB,EAC7B,sBAAuB,OACf,qBAAsB,OAEhC,mDACE,MAAO,QACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,cAAe,KACf,WAAY,KACZ,eAAgB,KAElB,mDACE,MAAO,QACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,eAAgB,OAChB,cAAe,KACf,WAAY,KACZ,eAAgB,KAElB,kDACE,cAAe,KAEjB,+DACA,+DACA,8DACE,WAAY,EAEd,8DACA,8DACA,6DACE,cAAe,EAEjB,8DACA,8DACA,6DACE,cAAe,EACf,WAAY,EAEd,2BACE,OAAQ,MACR,UAAW,OAEb,2BACE,UAAW,MAEb,qDACE,SAAU,KAEZ,yCACE,WAAY,OAEd,yBACE,YAAa,OACb,iBAAkB,KAClB,WAAY,IAAI,MAAM,KACtB,QAAS,KACT,gBAAiB,cACjB,QAAS,IAAI,KAGf,6BADA,+BAEE,QAAS,KAEX,+BACE,YAAa,OACb,iBAAkB,sBAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EACL,QAAS,EAEX,wBACE,gBAAiB,SACjB,MAAO,KAET,iCACE,YAAa,IACb,eAAgB,IAElB,iCACE,cAAe,IAAI,MAAM,KAE3B,4CACE,cAAe,KAEjB,2BACE,eAAgB,IAChB,YAAa,IAEf,yBACE,SAAU,SACV,MAAO,KACP,QAAS,KAEX,8BACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,0CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,wDACE,KAAM,EACN,wBAAyB,KACzB,OAAQ,KAEV,8BACE,QAAS,EACT,WAAY,OAEd,6BACE,QAAS,EACT,WAAY,QAEd,iCACE,WAAY,WAAW,GAAG,OAAO,GAAI,CAAE,QAAQ,IAAK,KAEtD,wDACE,iBAAkB,GAKpB,sCACE,SAAU,iBAEZ,yCACE,uEACE,aAAc,GAGlB,yCACE,8FACE,YAAa,KAIjB,kEADA,oEAEE,YAAa,IAEf,gCACE,WAAY,MAEd,yCACE,iEACE,YAAa,GAGjB,yCACE,wFACE,aAAc,KAIlB,4DADA,8DAEE,aAAc,IAEhB,gCACE,SAAU,OAEZ,6BACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,mBACE,YAAa,OACb,WAAY,KACZ,OAAQ,IAAI,OAAO,KACnB,WAAY,WACZ,QAAS,KACT,eAAgB,OAChB,UAAW,EACX,gBAAiB,OACjB,WAAY,MACZ,QAAS,KAEX,qBACE,MAAO,kBACP,OAAQ,EAAE,EAAE,KAAK,EAEnB,oBACE,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,SAAU,OACV,SAAU,SAEZ,4BACE,iBAAkB,KAClB,OAAQ,EACR,WAAY,WACZ,KAAM,EACN,wBAAyB,KACzB,OAAQ,KACR,SAAU,SACV,MAAO,KAET,0BACE,OAAQ,IAAI,OAAO,KAErB,2BACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,eAAgB,OAChB,SAAU,OAEZ,wBACE,QAAS,EAEX,iDACE,WAAY,KACZ,WAAY,WAAW,IAEzB,oDACA,2CACE,cAAe,KAEjB,uDACE,WAAY,EAAE,IAAI,IAAI,KAAK,gBAE7B,yBACE,QAAS,EACT,WAAY,OAEd,wBACE,QAAS,EACT,WAAY,QAEd,4BACE,WAAY,WAAW,GAAG,OAAO,IAAK,CAAE,QAAQ,KAAM,KAExD,mDACE,iBAAkB,GAEpB,uBACE,KAAM,EACN,SAAU,SAEZ,qGACA,qGACA,iGACE,QAAS,KAEX,2BACE,QAAS,MAEX,yCACE,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,gDACE,KAAM,KAER,gDACE,KAAM,OAER,8CACE,KAAM,MAER,qEACA,qEACA,mEACE,cAAe,KAEjB,wDACE,MAAO,IAET,+DACA,+DACA,6DACE,aAAc,KAEhB,kDACE,KAAM,IAER,wBACE,UAAW,KAEb,kCACE,UAAW,KAEb,qDACE,YAAa,IAEf,sBACE,QAAS,KACT,SAAU,SACV,QAAS,EAEX,qCACE,QAAS,GAEX,2BACE,aAAc,kBACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,OAAQ,KACR,SAAU,SACV,IAAK,IACL,MAAO,KAGT,2DADA,2DAEE,aAAc,QACd,OAAQ,QAEV,mCACE,iBAAkB,0DAAgE,CAAE,2DAAiE,CAAE,0DAAgE,CAAE,4DACzN,oBAAqB,EAAE,CAAC,CAAE,EAAE,GAAG,CAAE,IAAI,IAAI,CAAE,KAAK,EAChD,gBAAiB,KAAK,KACtB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,WACZ,QAAS,GACT,OAAQ,KACR,KAAM,KACN,SAAU,SACV,IAAK,KACL,MAAO,KACP,QAAS,GAEX,+CACE,OAAQ,YAKV,oDACE,aAAc,KAEhB,0CACE,KAAM,IAKR,8CACE,cAAe,KAEjB,oCACE,MAAO,IAET,gBACA,wBACE,MAAO,kBACP,QAAS,MACT,UAAW,KACX,WAAY,OACZ,YAAa,IACb,YAAa,IACb,QAAS,EAAE,IAAI,EAAE,EACjB,eAAgB,KAChB,YAAa,OAEf,wBACE,QAAS,EAAE,IAEb,yBACE,QAAS,EAAE,EAAE,EAAE,IAEjB,eACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,sBACE,WAAY,WACZ,cAAe,IAEjB,+BACE,KAAM,EAER,6BACE,MAAO,KAET,kCACE,QAAS,KAEX,qBACE,QAAS,KACT,eAAgB,IAChB,UAAW,KACX,gBAAiB,cAEnB,4CACE,MAAO,sBAET,4CACE,MAAO,2BAET,4CACE,MAAO,sBAET,iCACE,YAAa,OACb,QAAS,KAEX,8BACE,YAAa,OACb,QAAS,KAEX,iCACE,QAAS,KACT,KAAM,EACN,eAAgB,OAChB,wBAAyB,KAE3B,+CACE,KAAM,EACN,wBAAyB,KAE3B,6CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,2DACE,KAAM,EACN,wBAAyB,KACzB,OAAQ,KAEV,mEACE,YAAa,IAEf,6DACE,aAAc,IAEhB,iDACA,qDACE,QAAS,KAIX,4CACA,mBAHA,oBACA,4BAGE,mBAAoB,KACjB,gBAAiB,KACZ,WAAY,KACpB,iBAAkB,KAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,QACP,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,KACb,OAAQ,EACR,WAAY,KACZ,QAAS,EACT,QAAS,IAAI,OACb,OAAQ,KACR,MAAO,KAGT,6BADA,8BAEE,iBAAkB,QAClB,MAAO,mBACP,OAAQ,YAGV,kDACA,yBAFA,0BAGE,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,QAAS,EAEX,4BACE,aAAc,EACd,cAAe,IACf,WAAY,IACZ,UAAW,MAEb,oBACE,iBAAkB,YAClB,OAAQ,EACR,aAAc,YACd,WAAY,MACZ,MAAO,QACP,OAAQ,QACR,QAAS,MACT,OAAQ,EACR,QAAS,EAEX,wBACE,QAAS,MACT,KAAM,QAER,6CACE,YAAa,IAEf,uCACE,aAAc,IAEhB,uBACE,OAAQ,QACR,SAAU,SAEZ,sDACE,iBAAkB,QAClB,MAAO,mBACP,OAAQ,YAEV,gCACE,OAAQ,QACR,KAAM,EACN,OAAQ,EAAE,IAEZ,kCACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KAET,sCACE,KAAM,QAER,4CACE,YAAa,OACb,QAAS,KAEX,0CACE,MAAO,IAET,oCACE,KAAM,IAER,sBACE,OAAQ,QACR,SAAU,SAEZ,6BACE,mBAAoB,KACjB,gBAAiB,KACZ,WAAY,KACpB,iBAAkB,KAClB,aAAc,KACd,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,MAAO,QACP,YAAa,aAAa,CAAE,kBAAkB,CAAE,UAAU,CAAE,MAAM,CAAE,WAAW,CAAE,MAAM,CAAE,SAAS,CAAE,gBAAgB,CAAE,WACtH,UAAW,KACX,YAAa,KACb,OAAQ,EACR,WAAY,KACZ,QAAS,EACT,QAAS,IAAI,OACb,OAAQ,KACR,MAAO,KAET,uCACE,iBAAkB,QAClB,MAAO,mBACP,OAAQ,YAEV,yCACE,QAAS,KAEX,mCACE,iBAAkB,KAClB,aAAc,QACd,WAAY,KACZ,QAAS,EAEX,0BACE,eAAgB,KAChB,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,sDACA,sDACE,cAAe,KAEjB,yCACE,MAAO,IAET,gDACA,gDACE,aAAc,KAEhB,mCACE,KAAM,IAER,mBACE,mBAAoB,SACjB,gBAAiB,SACZ,WAAY,SACpB,YAAa,SAEf,gBACE,OAAQ,EACR,OAAQ,KACR,KAAM,EACN,OAAQ,EACR,SAAU,OACV,oBAAqB,KACjB,oBAAqB,KACzB,QAAS,EACT,SAAU,MACV,IAAK,EACL,aAAc,WACd,MAAO,KAET,8DACE,QAAS,KAEX,gCACE,QAAS,KAEX,+BACE,QAAS,KAEX,qCACA,qCACE,QAAS,KAEX,0BACE,WAAY,KACZ,WAAY,IAEd,sBACE,MAAO,KAET,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,6BACE,iBAAkB,KAClB,OAAQ,MACR,SAAU,KACV,SAAU,SACV,MAAO,KAET,6BACA,uDACE,WAAY,IAEd,gCACE,WAAY,wGAEd,2CACE,KAAM,EACN,wBAAyB,KAE3B,yBACE,WAAY,KAEZ,QAAS,GACT,SAAU,SACV,KAAM,EAER,0BACE,OAAQ,IAAI,MAAM,KAClB,OAAQ,KACR,KAAM,EACN,SAAU,SACV,IAAK,EACL,MAAO,KAET,+BACE,OAAQ,EACR,OAAQ,KACR,SAAU,SAEZ,6BACE,aAAc,IAAI,EAAE,EAAE,IACtB,OAAQ,UACR,KAAM,MACN,OAAQ,KAAK,EAAE,EAAE,KACjB,IAAK,MAEP,6BACE,aAAc,IAAI,IAAI,EAAE,EACxB,OAAQ,UACR,KAAM,MACN,OAAQ,KAAK,EAAE,EAAE,MACjB,IAAK,MAEP,6BACE,aAAc,EAAE,EAAE,IAAI,IACtB,OAAQ,UACR,KAAM,MACN,OAAQ,MAAM,IAAI,EAAE,KACpB,IAAK,MAEP,6BACE,aAAc,EAAE,IAAI,IAAI,EACxB,OAAQ,UACR,KAAM,MACN,OAAQ,MAAM,EAAE,EAAE,MAClB,IAAK,MAEP,8EACE,YAAa,IAEf,sEACE,YAAa,KAEf,sEACE,YAAa,KAEf,wEACE,aAAc,IAEhB,gEACE,aAAc,KAEhB,gEACE,aAAc,KAEhB,8BACE,QAAS,KACT,UAAW,KACX,MAAO,MAET,kCACE,aAAc,KACd,aAAc,MACd,aAAc,EAAE,IAAI,IAAI,EACxB,WAAY,WACZ,OAAQ,KACR,MAAO,KAET,2EACE,OAAQ,KAAK,EAEf,iEACE,iBAAkB,oBAClB,aAAc,oBAEhB,qCACE,MAAO,kBACP,QAAS,MACT,UAAW,KACX,QAAS,IACT,WAAY,OACZ,MAAO,KAKT,gEACE,aAAc,EAKhB,4DACE,aAAc,EAMhB,eACE,iBAAkB,KAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,EAAE,kBACxB,QAAS,aACT,SAAU,OACV,eAAgB,IAChB,QAAS,KAEX,mDACE,QAAS,EAEX,sDACE,QAAS,IAEX,mDACE,QAAS,IASX,iCACA,2BARA,yBACA,yBACA,yBACA,yBACA,yBACA,yBACA,wBAGE,OAAQ,EAEV,kBACE,WAAY,+MAA+M,KAAK,EAAE,IAAI,EAAE,KACxO,iBAAkB,KAClB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,KACX,QAAS,EAAE,IAAI,EAAE,IAEnB,4FACE,WAAY,IAAI,MAAM,KAGxB,eACE,YAAa,OACb,WAAY,IACZ,OAAQ,EACR,cAAe,IACf,WAAY,KACZ,MAAO,QACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,WAAY,OACZ,YAAa,IACb,OAAQ,KACR,gBAAiB,OACjB,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EACT,SAAU,OACV,QAAS,EAAE,IACX,eAAgB,KAChB,MAAO,KAET,yBACE,iBAAkB,YAClB,OAAQ,EACR,WAAY,KACZ,MAAO,kBACP,OAAQ,YAEV,oCACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,uBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,2DACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,6BACE,OAAQ,QACR,YAAa,IACb,OAAQ,EAAE,IAEZ,iDACE,OAAQ,YAEV,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KACP,QAAS,KAEX,uBACE,cAAe,IACf,aAAc,MACd,aAAc,IACd,WAAY,KACZ,WAAY,WACZ,QAAS,SACT,QAAS,KACT,UAAW,KACX,YAAa,IACb,iBAAkB,iBAAkB,KAAK,iBACrC,sBAAuB,iBAAkB,KAAK,iBAClD,WAAY,IACZ,QAAS,EACT,QAAS,IACT,WAAY,UAAU,IAAM,OAAO,CAAE,QAAQ,MAAM,QAErD,yBACE,UAAW,KACX,YAAa,IAEf,yBACE,gBAAiB,UAEnB,2BACE,QAAS,EAEX,gCACE,iBAAkB,QAClB,aAAc,QACd,MAAO,QAET,kCACE,MAAO,QAET,kCACE,MAAO,QAET,oCACE,KAAM,QAER,8BACE,iBAAkB,QAClB,aAAc,QACd,MAAO,QAET,gCACE,MAAO,QAET,gCACE,MAAO,KAET,kCACE,KAAM,QAER,6BACA,gCACE,iBAAkB,QAClB,aAAc,QACd,MAAO,QAET,+BACA,kCACE,MAAO,QAET,+BACA,kCACE,MAAO,QAET,iCACA,oCACE,KAAM,QAER,6BACE,iBAAkB,QAClB,aAAc,QACd,MAAO,QAET,+BACE,MAAO,QAET,+BACE,MAAO,QAET,iCACE,KAAM,QAER,6BACE,mBAAoB,OAChB,WAAY,OAChB,MAAO,QACP,UAAW,KACX,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,WAAY,OACZ,YAAa,OACb,WAAY,UACZ,WAAY,WAEd,+BACE,OAAQ,EAEV,iCACE,WAAY,KAEd,6BACE,mBAAoB,OAChB,WAAY,OAChB,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,IACnB,aAAc,IAEpB,iCACE,QAAS,MAEX,gCACE,mBAAoB,MAChB,WAAY,MAChB,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,IACnB,aAAc,IAEpB,yCACE,qBAAsB,EACtB,gBAAiB,EACjB,gBAAiB,EACb,kBAAmB,EACvB,kBAAmB,EACnB,aAAc,EACd,aAAc,EACV,eAAgB,EACpB,sBAAuB,OACnB,aAAc,OAEpB,cACE,QAAS,aACT,SAAU,SAEZ,wBACE,WAAY,MAAM,IAAK,KAEzB,qCACE,UAAW,OAEb,sBACE,iBAAkB,KAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBACtB,UAAW,EACX,SAAU,OAEZ,yCACE,OAAQ,IAAI,IAAI,IAAI,IAEtB,mCACE,iBAAkB,YAClB,cAAe,KAGjB,qBADA,sBAEE,aAAc,MACd,QAAS,GACT,QAAS,MACT,OAAQ,EACR,SAAU,SACV,MAAO,EAGT,qCADA,sCAEE,KAAM,IACN,IAAK,KAEP,qCACE,aAAc,KAAK,YAAY,YAAY,YAC3C,aAAc,IACd,YAAa,KACb,WAAY,KAEd,sCACE,aAAc,KAAQ,YAAY,YAAY,YAC9C,aAAc,IACd,YAAa,KAGf,kCADA,mCAEE,KAAM,IACN,IAAK,EACL,UAAW,kBAEb,kCACE,aAAc,YAAY,YAAY,KAAK,YAC3C,aAAc,IACd,YAAa,KACb,WAAY,IAEd,mCACE,aAAc,YAAY,YAAY,KAAQ,YAC9C,aAAc,IACd,YAAa,KAGf,mCADA,oCAEE,KAAM,EACN,IAAK,gBACL,UAAW,iBAEb,mCACE,aAAc,YAAY,KAAK,YAAY,YAC3C,aAAc,IACd,YAAa,MAEf,oCACE,aAAc,YAAY,KAAQ,YAAY,YAC9C,aAAc,KACd,YAAa,MAGf,oCADA,qCAEE,KAAM,KACN,IAAK,gBACL,UAAW,iBAEb,oCACE,aAAc,YAAY,YAAY,YAAY,KAClD,aAAc,IACd,YAAa,KAEf,qCACE,aAAc,YAAY,YAAY,YAAY,KAClD,aAAc,KACd,YAAa,KAGf,yCADA,0CAEE,KAAM,KAGR,0CADA,2CAEE,KAAM,kBAER,uBACE,QAAS,KACT,eAAgB,IAChB,UAAW,EACX,wBAAyB,EACzB,WAAY,EAEd,kBACE,iBAAkB,KAClB,QAAS,KACT,eAAgB,IAChB,gBAAiB,SAEnB,0BACE,QAAS,KACT,SAAU,OAEZ,kCACE,QAAS,KAEX,wBACE,QAAS,KAEX,kCACE,QAAS,EAEX,gCACE,QAAS,EAEX,mCACA,qCACE,WAAY,MAAM,IAAK,IAAI,CAAE,QAAQ,IAAK,KAE5C,mBACE,iBAAkB,QAClB,aAAc,QACd,aAAc,MACd,aAAc,IACd,WAAY,WACZ,QAAS,aACT,OAAQ,KACR,SAAU,SACV,MAAO,KAET,sCACE,OAAQ,KACR,MAAO,KAET,iBACE,YAAa,OACb,QAAS,KACT,KAAM,EACN,wBAAyB,KACzB,OAAQ,KACR,gBAAiB,OACjB,SAAU,SAEZ,uBACE,iBAAkB,YAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,OAAQ,KACR,UAAW,MACX,MAAO,KAET,yBACE,iBAAkB,QAClB,OAAQ,IAAI,MAAM,QAClB,cAAe,IACf,WAAY,KACZ,OAAQ,KACR,KAAM,IACN,SAAU,SACV,IAAK,IACL,UAAW,iBAAiB,iBAC5B,MAAO,KAET,sBACE,SAAU,KAEZ,kBACE,QAAS,KAEX,sBACE,UAAW,kBAAkB,KAAK,YAAY,GAAG,SAAS,KAC1D,iBAAkB,kBAClB,cAAe,KACf,OAAQ,IACR,MAAO,IAET,mCACE,gBAAiB,MAEnB,mCACE,gBAAiB,MAEnB,6BACE,GAEA,KADA,IAEE,UAAW,SAEb,IACE,UAAW,UAGf,uDACE,YAAa,IAEf,iDACE,aAAc,IAEhB,oBACE,YAAa,OACb,iBAAkB,KAClB,WAAY,IAAI,MAAM,KACtB,MAAO,kBACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,YAAa,IACb,OAAQ,KACR,SAAU,OACV,QAAS,EAAE,IACX,SAAU,SACV,eAAgB,UAElB,oCACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,SACjB,SAAU,OAEZ,0BACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,aAAc,KACd,SAAU,OACV,cAAe,SACf,YAAa,OAEf,4BACE,QAAS,OACT,YAAa,OAEf,+BACE,KAAM,EAAE,EAAE,KACV,YAAa,IAEf,sBACA,+BACA,+BACE,MAAO,kBACP,gBAAiB,KAKnB,qEAHA,qEAIA,8EAHA,8EAIA,8EAHA,8EAIE,OAAQ,QACR,gBAAiB,UAEnB,mCACE,YAAa,SACb,WAAY,QACZ,OAAQ,YACR,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,SACjB,YAAa,KACb,aAAc,KACd,aAAc,IAEhB,uCACE,QAAS,MACT,KAAM,kBAER,2CACE,aAAc,IAEhB,6CACE,YAAa,IAEf,6BACE,eAAgB,YAElB,qCACE,YAAa,IAEf,mBACE,QAAS,KAEX,iCACE,YAAa,OACb,iBAAkB,qBAClB,OAAQ,EACR,QAAS,KACT,gBAAiB,OACjB,KAAM,EACN,SAAU,SACV,MAAO,EACP,IAAK,EAEP,eACE,YAAa,OACb,WAAY,IACZ,OAAQ,EACR,cAAe,IACf,WAAY,KACZ,MAAO,QACP,QAAS,KACT,KAAM,EAAE,EAAE,KACV,UAAW,KACX,WAAY,OACZ,YAAa,IACb,OAAQ,KACR,gBAAiB,OACjB,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EACT,SAAU,OACV,QAAS,EACT,eAAgB,KAChB,MAAO,KAET,mBACE,QAAS,MACT,KAAM,QAER,6BACE,aAAc,IACd,cAAe,IACf,MAAO,QAET,qBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KAEd,qBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,yBACE,KAAM,QAER,sBACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAET,0BACE,KAAM,QAER,yBACA,+BACA,wBACA,8BACE,WAAY,IACZ,OAAQ,EACR,WAAY,KACZ,MAAO,kBACP,OAAQ,YAEV,6BACA,mCACA,4BACA,kCAEE,KAAM,kBAER,wBACA,8BACE,WAAY,QACZ,OAAQ,EACR,WAAY,KACZ,MAAO,QAGT,gCADA,0BAEE,UAAW,KAEb,4BACA,kCAEE,KAAM,QAER,8CACE,MAAO,QAET,kDACE,KAAM,QAER,wBACE,UAAW,KAEb,mBACE,OAAQ,KACR,MAAO,KAET,mBACE,eAAgB,OAChB,OAAQ,KACR,MAAO,KAET,uBACE,mBAAoB,QAChB,WAAY,QAChB,OAAQ,MACR,MAAO,KAET,wBACE,QAAS,EAAE,IACX,MAAO,MAET,uBACE,QAAS,MACT,UAAW,KACX,YAAa,IACb,eAAgB,QAChB,cAAe,IACf,YAAa,OAEf,uBACE,OAAQ,IAAI,EAAE,IAAI,EAClB,QAAS,EAAE,IACX,MAAO,KAET,6BACE,OAAQ,QACR,YAAa,IACb,OAAQ,EAAE,IAEZ,+BACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,MAAO,KAET,mCACE,KAAM,kBAER,gDACE,SAAU,OACV,cAAe,SACf,YAAa,OACb,MAAO,IAET,uBACE,OAAQ,EACR,cAAe,IACf,WAAY,WACZ,QAAS,KACT,OAAQ,IAAI,EAAE,IAAI,EAClB,SAAU,OAEZ,6BACE,WAAY,EAAE,EAAE,EAAE,IAAI,QAAQ,MAEhC,6BACE,WAAY,QACZ,WAAY,KACZ,MAAO,QAET,yBACE,cAAe,EAEjB,gCACE,MAAO,KAET,oCACE,KAAM,kBAER,iCACE,OAAQ,EAEV,gEACE,MAAO,KAET,mDACE,MAAO,KAKT,0DADA,0DADA,gDADA,gDAIE,WAAY,IACZ,WAAY,KACZ,MAAO,kBAET,2BACE,iBAAkB,KAEpB,kBAEA,4BADA,2BAEE,WAAY,+MAA+M,KAAK,EAAE,IAAI,EAAE,KACxO,iBAAkB,KAClB,QAAS,KACT,KAAM,EAAE,EAAE,KACV,YAAa,EACb,UAAW,KACX,QAAS,EAAE,EAEb,0DACE,OAAQ,EACR,QAAS,EACT,eAAgB,EAChB,YAAa,EACb,WAAY,OAEd,qCACE,WAAY,OAAO,IAAK,IAAI,CAAE,QAAQ,IAAK,OAAO,IAEpD,uCACE,WAAY,QAAQ,IAAK,IAAI,CAAE,OAAO,IAAK,OAAO,GAAI,CAAE,WAAW,GAAG,OAAO,IAE/E,+BACA,8DACE,WAAY,IAAI,MAAM,KACtB,WAAY,KAEd,6BACE,UAAW,OACX,WAAY,KAEd,2BACE,aAAc,EAEhB,8BACE,iBAAkB,KAGpB,mIADA,oGAEE,WAAY,IAAI,MAAM,KAExB,4CACE,iBAAkB,KAClB,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,gBAExB,sCACE,UAAW,gBAEb,yBACE,YAAa,OACb,QAAS,KACT,UAAW,KACX,OAAQ,EAAE,EACV,QAAS,EAAE,IAAI,EAAE,IAEnB,qCACE,YAAa,KAEf,iDACE,YAAa,EACb,UAAW,OAEb,2DACE,aAAc,IAAI,MAAM,KAE1B,qDACE,YAAa,IAAI,MAAM,KAEzB,kBACE,QAAS,aACT,QAAS,IACT,SAAU,SAEZ,wBACE,iBAAkB,QAClB,cAAe,IACf,WAAY,EAAE,IAAI,IAAI,kBACtB,MAAO,sBACP,UAAW,KACX,WAAY,OACZ,YAAa,IACb,QAAS,IAAI,IACb,eAAgB,KAElB,yBACE,SAAU,SAEZ,4CACE,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,WAAY,IAAI,MAAM,QACtB,OAAQ,EACR,KAAM,IACN,SAAU,SACV,UAAW,iBAEb,0CACE,cAAe,IAAI,MAAM,QACzB,YAAa,IAAI,MAAM,YACvB,aAAc,IAAI,MAAM,YACxB,KAAM,IACN,SAAU,SACV,IAAK,EACL,UAAW,iBAEb,6CACE,cAAe,IAAI,MAAM,YACzB,YAAa,IAAI,MAAM,QACvB,WAAY,IAAI,MAAM,YACtB,SAAU,SACV,MAAO,EACP,IAAK,IACL,UAAW,iBAEb,4CACE,cAAe,IAAI,MAAM,YACzB,aAAc,IAAI,MAAM,QACxB,WAAY,IAAI,MAAM,YACtB,KAAM,EACN,SAAU,SACV,IAAK,IACL,UAAW,iBAEb,eACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,IACT,MAAO,KAET,4BACE,WAAY,EAEd,2BACE,cAAe,EAEjB,2BACE,OAAQ,EAEV,wBACE,OAAQ,IAAI,MAAM,KAClB,cAAe,IACf,QAAS,KACT,KAAM,EACN,SAAU,SAMZ,iCACE,iBAAkB,eAClB,QAAS,GACT,OAAQ,KACR,SAAU,SACV,MAAO,KACP,QAAS,KAEX,cACE,OAAQ,QAEV,6BACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,+CACE,QAAS,KACT,KAAM,EACN,wBAAyB,KAE3B,iCACE,OAAQ,KAEV,+BACE,OAAQ","file":"skin.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n.tox {\n box-sizing: content-box;\n color: #222f3e;\n cursor: auto;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: normal;\n -webkit-tap-highlight-color: transparent;\n text-decoration: none;\n text-shadow: none;\n text-transform: none;\n vertical-align: initial;\n white-space: normal;\n}\n.tox *:not(svg):not(rect) {\n box-sizing: inherit;\n color: inherit;\n cursor: inherit;\n direction: inherit;\n font-family: inherit;\n font-size: inherit;\n font-style: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-tap-highlight-color: inherit;\n text-align: inherit;\n text-decoration: inherit;\n text-shadow: inherit;\n text-transform: inherit;\n vertical-align: inherit;\n white-space: inherit;\n}\n.tox *:not(svg):not(rect) {\n /* stylelint-disable-line no-duplicate-selectors */\n background: transparent;\n border: 0;\n float: none;\n height: auto;\n margin: 0;\n max-width: none;\n outline: 0;\n padding: 0;\n position: static;\n width: auto;\n}\n.tox:not([dir=rtl]) {\n direction: ltr;\n text-align: left;\n}\n.tox[dir=rtl] {\n direction: rtl;\n text-align: right;\n}\n.tox-tinymce {\n border: 1px solid #cccccc;\n border-radius: 0;\n box-shadow: none;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n overflow: hidden;\n position: relative;\n visibility: inherit !important;\n}\n.tox-tinymce-inline {\n border: none;\n box-shadow: none;\n}\n.tox-tinymce-inline .tox-editor-header {\n border: 1px solid #cccccc;\n border-radius: 0;\n box-shadow: none;\n}\n.tox-tinymce-aux {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n z-index: 1300;\n}\n.tox-tinymce *:focus,\n.tox-tinymce-aux *:focus {\n outline: none;\n}\nbutton::-moz-focus-inner {\n border: 0;\n}\n.tox .accessibility-issue__header {\n align-items: center;\n display: flex;\n margin-bottom: 4px;\n}\n.tox .accessibility-issue__description {\n align-items: stretch;\n border: 1px solid #cccccc;\n border-radius: 3px;\n display: flex;\n justify-content: space-between;\n}\n.tox .accessibility-issue__description > div {\n padding-bottom: 4px;\n}\n.tox .accessibility-issue__description > div > div {\n align-items: center;\n display: flex;\n margin-bottom: 4px;\n}\n.tox .accessibility-issue__description > *:last-child:not(:only-child) {\n border-color: #cccccc;\n border-style: solid;\n}\n.tox .accessibility-issue__repair {\n margin-top: 16px;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description {\n background-color: rgba(32, 122, 183, 0.1);\n border-color: rgba(32, 122, 183, 0.4);\n color: #222f3e;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child {\n border-color: rgba(32, 122, 183, 0.4);\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 {\n color: #207ab7;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg {\n fill: #207ab7;\n}\n.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon {\n color: #207ab7;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description {\n background-color: rgba(255, 165, 0, 0.1);\n border-color: rgba(255, 165, 0, 0.5);\n color: #222f3e;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child {\n border-color: rgba(255, 165, 0, 0.5);\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 {\n color: #cc8500;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg {\n fill: #cc8500;\n}\n.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon {\n color: #cc8500;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description {\n background-color: rgba(204, 0, 0, 0.1);\n border-color: rgba(204, 0, 0, 0.4);\n color: #222f3e;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child {\n border-color: rgba(204, 0, 0, 0.4);\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 {\n color: #c00;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg {\n fill: #c00;\n}\n.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon {\n color: #c00;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description {\n background-color: rgba(120, 171, 70, 0.1);\n border-color: rgba(120, 171, 70, 0.4);\n color: #222f3e;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child {\n border-color: rgba(120, 171, 70, 0.4);\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 {\n color: #78AB46;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg {\n fill: #78AB46;\n}\n.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon {\n color: #78AB46;\n}\n.tox .tox-dialog__body-content .accessibility-issue__header h1,\n.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {\n margin-top: 0;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {\n margin-left: auto;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description {\n padding: 4px 4px 4px 8px;\n}\n.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child {\n border-left-width: 1px;\n padding-left: 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {\n margin-right: auto;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description {\n padding: 4px 8px 4px 4px;\n}\n.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child {\n border-right-width: 1px;\n padding-right: 4px;\n}\n.tox .tox-anchorbar {\n display: flex;\n flex: 0 0 auto;\n}\n.tox .tox-bar {\n display: flex;\n flex: 0 0 auto;\n}\n.tox .tox-button {\n background-color: #207ab7;\n background-image: none;\n background-position: 0 0;\n background-repeat: repeat;\n border-color: #207ab7;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #fff;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n line-height: 24px;\n margin: 0;\n outline: none;\n padding: 4px 16px;\n text-align: center;\n text-decoration: none;\n text-transform: capitalize;\n white-space: nowrap;\n}\n.tox .tox-button[disabled] {\n background-color: #207ab7;\n background-image: none;\n border-color: #207ab7;\n box-shadow: none;\n color: rgba(255, 255, 255, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-button:focus:not(:disabled) {\n background-color: #1c6ca1;\n background-image: none;\n border-color: #1c6ca1;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button:hover:not(:disabled) {\n background-color: #1c6ca1;\n background-image: none;\n border-color: #1c6ca1;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button:active:not(:disabled) {\n background-color: #185d8c;\n background-image: none;\n border-color: #185d8c;\n box-shadow: none;\n color: #fff;\n}\n.tox .tox-button--secondary {\n background-color: #f0f0f0;\n background-image: none;\n background-position: 0 0;\n background-repeat: repeat;\n border-color: #f0f0f0;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n color: #222f3e;\n font-size: 14px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n outline: none;\n padding: 4px 16px;\n text-decoration: none;\n text-transform: capitalize;\n}\n.tox .tox-button--secondary[disabled] {\n background-color: #f0f0f0;\n background-image: none;\n border-color: #f0f0f0;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-button--secondary:focus:not(:disabled) {\n background-color: #e3e3e3;\n background-image: none;\n border-color: #e3e3e3;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--secondary:hover:not(:disabled) {\n background-color: #e3e3e3;\n background-image: none;\n border-color: #e3e3e3;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--secondary:active:not(:disabled) {\n background-color: #d6d6d6;\n background-image: none;\n border-color: #d6d6d6;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--icon,\n.tox .tox-button.tox-button--icon,\n.tox .tox-button.tox-button--secondary.tox-button--icon {\n padding: 4px;\n}\n.tox .tox-button--icon .tox-icon svg,\n.tox .tox-button.tox-button--icon .tox-icon svg,\n.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {\n display: block;\n fill: currentColor;\n}\n.tox .tox-button-link {\n background: 0;\n border: none;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-block;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n font-weight: normal;\n line-height: 1.3;\n margin: 0;\n padding: 0;\n white-space: nowrap;\n}\n.tox .tox-button-link--sm {\n font-size: 14px;\n}\n.tox .tox-button--naked {\n background-color: transparent;\n border-color: transparent;\n box-shadow: unset;\n color: #222f3e;\n}\n.tox .tox-button--naked[disabled] {\n background-color: #f0f0f0;\n border-color: #f0f0f0;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-button--naked:hover:not(:disabled) {\n background-color: #e3e3e3;\n border-color: #e3e3e3;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--naked:focus:not(:disabled) {\n background-color: #e3e3e3;\n border-color: #e3e3e3;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--naked:active:not(:disabled) {\n background-color: #d6d6d6;\n border-color: #d6d6d6;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-button--naked .tox-icon svg {\n fill: currentColor;\n}\n.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {\n color: #222f3e;\n}\n.tox .tox-checkbox {\n align-items: center;\n border-radius: 3px;\n cursor: pointer;\n display: flex;\n height: 36px;\n min-width: 36px;\n}\n.tox .tox-checkbox__input {\n /* Hide from view but visible to screen readers */\n height: 1px;\n overflow: hidden;\n position: absolute;\n top: auto;\n width: 1px;\n}\n.tox .tox-checkbox__icons {\n align-items: center;\n border-radius: 3px;\n box-shadow: 0 0 0 2px transparent;\n box-sizing: content-box;\n display: flex;\n height: 24px;\n justify-content: center;\n padding: calc(4px - 1px);\n width: 24px;\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: block;\n fill: rgba(34, 47, 62, 0.3);\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n display: none;\n fill: #207ab7;\n}\n.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n display: none;\n fill: #207ab7;\n}\n.tox .tox-checkbox--disabled {\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: none;\n}\n.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {\n display: block;\n}\n.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {\n display: none;\n}\n.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {\n display: block;\n}\n.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {\n border-radius: 3px;\n box-shadow: inset 0 0 0 1px #207ab7;\n padding: calc(4px - 1px);\n}\n.tox:not([dir=rtl]) .tox-checkbox__label {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-checkbox__input {\n left: -10000px;\n}\n.tox:not([dir=rtl]) .tox-bar .tox-checkbox {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-checkbox__label {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-checkbox__input {\n right: -10000px;\n}\n.tox[dir=rtl] .tox-bar .tox-checkbox {\n margin-right: 4px;\n}\n.tox {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox .tox-collection--toolbar .tox-collection__group {\n display: flex;\n padding: 0;\n}\n.tox .tox-collection--grid .tox-collection__group {\n display: flex;\n flex-wrap: wrap;\n max-height: 208px;\n overflow-x: hidden;\n overflow-y: auto;\n padding: 0;\n}\n.tox .tox-collection--list .tox-collection__group {\n border-bottom-width: 0;\n border-color: #cccccc;\n border-left-width: 0;\n border-right-width: 0;\n border-style: solid;\n border-top-width: 1px;\n padding: 4px 0;\n}\n.tox .tox-collection--list .tox-collection__group:first-child {\n border-top-width: 0;\n}\n.tox .tox-collection__group-heading {\n background-color: #e6e6e6;\n color: rgba(34, 47, 62, 0.7);\n cursor: default;\n font-size: 12px;\n font-style: normal;\n font-weight: normal;\n margin-bottom: 4px;\n margin-top: -4px;\n padding: 4px 8px;\n text-transform: none;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.tox .tox-collection__item {\n align-items: center;\n color: #222f3e;\n cursor: pointer;\n display: flex;\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n.tox .tox-collection--list .tox-collection__item {\n padding: 4px 8px;\n}\n.tox .tox-collection--toolbar .tox-collection__item {\n border-radius: 3px;\n padding: 4px;\n}\n.tox .tox-collection--grid .tox-collection__item {\n border-radius: 3px;\n padding: 4px;\n}\n.tox .tox-collection--list .tox-collection__item--enabled {\n background-color: #fff;\n color: #222f3e;\n}\n.tox .tox-collection--list .tox-collection__item--active {\n background-color: #dee0e2;\n}\n.tox .tox-collection--toolbar .tox-collection__item--enabled {\n background-color: #c8cbcf;\n color: #222f3e;\n}\n.tox .tox-collection--toolbar .tox-collection__item--active {\n background-color: #dee0e2;\n}\n.tox .tox-collection--grid .tox-collection__item--enabled {\n background-color: #c8cbcf;\n color: #222f3e;\n}\n.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n background-color: #dee0e2;\n color: #222f3e;\n}\n.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n color: #222f3e;\n}\n.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {\n color: #222f3e;\n}\n.tox .tox-collection__item--state-disabled {\n background-color: transparent;\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-collection__item-icon,\n.tox .tox-collection__item-checkmark {\n align-items: center;\n display: flex;\n height: 24px;\n justify-content: center;\n width: 24px;\n}\n.tox .tox-collection__item-icon svg,\n.tox .tox-collection__item-checkmark svg {\n fill: currentColor;\n}\n.tox .tox-collection--toolbar-lg .tox-collection__item-icon {\n height: 48px;\n width: 48px;\n}\n.tox .tox-collection__item-label {\n color: currentColor;\n display: inline-block;\n flex: 1;\n -ms-flex-preferred-size: auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 24px;\n text-transform: none;\n word-break: break-all;\n}\n.tox .tox-collection__item-accessory {\n color: rgba(34, 47, 62, 0.7);\n display: inline-block;\n font-size: 14px;\n height: 24px;\n line-height: 24px;\n text-transform: none;\n}\n.tox .tox-collection__item-caret {\n align-items: center;\n display: flex;\n min-height: 24px;\n}\n.tox .tox-collection__item-caret::after {\n content: '';\n font-size: 0;\n min-height: inherit;\n}\n.tox .tox-collection__item-caret svg {\n fill: #222f3e;\n}\n.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {\n display: none;\n}\n.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark {\n display: none;\n}\n.tox .tox-collection--horizontal {\n background-color: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: nowrap;\n margin-bottom: 0;\n overflow-x: auto;\n padding: 0;\n}\n.tox .tox-collection--horizontal .tox-collection__group {\n align-items: center;\n display: flex;\n flex-wrap: nowrap;\n margin: 0;\n padding: 0 4px;\n}\n.tox .tox-collection--horizontal .tox-collection__item {\n height: 34px;\n margin: 2px 0 3px 0;\n padding: 0 4px;\n}\n.tox .tox-collection--horizontal .tox-collection__item-label {\n white-space: nowrap;\n}\n.tox .tox-collection--horizontal .tox-collection__item-caret {\n margin-left: 4px;\n}\n.tox .tox-collection__item-container {\n display: flex;\n}\n.tox .tox-collection__item-container--row {\n align-items: center;\n flex: 1 1 auto;\n flex-direction: row;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--align-left {\n margin-right: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--align-right {\n justify-content: flex-end;\n margin-left: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top {\n align-items: flex-start;\n margin-bottom: auto;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle {\n align-items: center;\n}\n.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom {\n align-items: flex-end;\n margin-top: auto;\n}\n.tox .tox-collection__item-container--column {\n -ms-grid-row-align: center;\n align-self: center;\n flex: 1 1 auto;\n flex-direction: column;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--align-left {\n align-items: flex-start;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--align-right {\n align-items: flex-end;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top {\n align-self: flex-start;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle {\n -ms-grid-row-align: center;\n align-self: center;\n}\n.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom {\n align-self: flex-end;\n}\n.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {\n border-right: 1px solid #cccccc;\n}\n.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {\n margin-left: 4px;\n}\n.tox:not([dir=rtl]) .tox-collection__item-accessory {\n margin-left: 16px;\n text-align: right;\n}\n.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret {\n margin-left: 16px;\n}\n.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {\n border-left: 1px solid #cccccc;\n}\n.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {\n margin-right: 4px;\n}\n.tox[dir=rtl] .tox-collection__item-icon-rtl {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg {\n transform: rotateY(180deg);\n}\n.tox[dir=rtl] .tox-collection__item-accessory {\n margin-right: 16px;\n text-align: left;\n}\n.tox[dir=rtl] .tox-collection .tox-collection__item-caret {\n margin-right: 16px;\n transform: rotateY(180deg);\n}\n.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret {\n margin-right: 4px;\n}\n.tox .tox-color-picker-container {\n display: flex;\n flex-direction: row;\n height: 225px;\n margin: 0;\n}\n.tox .tox-sv-palette {\n box-sizing: border-box;\n display: flex;\n height: 100%;\n}\n.tox .tox-sv-palette-spectrum {\n height: 100%;\n}\n.tox .tox-sv-palette,\n.tox .tox-sv-palette-spectrum {\n width: 225px;\n}\n.tox .tox-sv-palette-thumb {\n background: none;\n border: 1px solid black;\n border-radius: 50%;\n box-sizing: content-box;\n height: 12px;\n position: absolute;\n width: 12px;\n}\n.tox .tox-sv-palette-inner-thumb {\n border: 1px solid white;\n border-radius: 50%;\n height: 10px;\n position: absolute;\n width: 10px;\n}\n.tox .tox-hue-slider {\n box-sizing: border-box;\n height: 100%;\n width: 25px;\n}\n.tox .tox-hue-slider-spectrum {\n background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);\n height: 100%;\n width: 100%;\n}\n.tox .tox-hue-slider,\n.tox .tox-hue-slider-spectrum {\n width: 20px;\n}\n.tox .tox-hue-slider-thumb {\n background: white;\n border: 1px solid black;\n box-sizing: content-box;\n height: 4px;\n width: 100%;\n}\n.tox .tox-rgb-form {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.tox .tox-rgb-form div {\n align-items: center;\n display: flex;\n justify-content: space-between;\n margin-bottom: 5px;\n width: inherit;\n}\n.tox .tox-rgb-form input {\n width: 6em;\n}\n.tox .tox-rgb-form input.tox-invalid {\n /* Need !important to override Chrome's focus styling unfortunately */\n border: 1px solid red !important;\n}\n.tox .tox-rgb-form .tox-rgba-preview {\n border: 1px solid black;\n flex-grow: 2;\n margin-bottom: 0;\n}\n.tox:not([dir=rtl]) .tox-sv-palette {\n margin-right: 15px;\n}\n.tox:not([dir=rtl]) .tox-hue-slider {\n margin-right: 15px;\n}\n.tox:not([dir=rtl]) .tox-hue-slider-thumb {\n margin-left: -1px;\n}\n.tox:not([dir=rtl]) .tox-rgb-form label {\n margin-right: 0.5em;\n}\n.tox[dir=rtl] .tox-sv-palette {\n margin-left: 15px;\n}\n.tox[dir=rtl] .tox-hue-slider {\n margin-left: 15px;\n}\n.tox[dir=rtl] .tox-hue-slider-thumb {\n margin-right: -1px;\n}\n.tox[dir=rtl] .tox-rgb-form label {\n margin-left: 0.5em;\n}\n.tox .tox-toolbar .tox-swatches,\n.tox .tox-toolbar__primary .tox-swatches,\n.tox .tox-toolbar__overflow .tox-swatches {\n margin: 2px 0 3px 4px;\n}\n.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {\n border: 0;\n margin: -4px 0;\n}\n.tox .tox-swatches__row {\n display: flex;\n}\n.tox .tox-swatch {\n height: 30px;\n transition: transform 0.15s, box-shadow 0.15s;\n width: 30px;\n}\n.tox .tox-swatch:hover,\n.tox .tox-swatch:focus {\n box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;\n transform: scale(0.8);\n}\n.tox .tox-swatch--remove {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.tox .tox-swatch--remove svg path {\n stroke: #e74c3c;\n}\n.tox .tox-swatches__picker-btn {\n align-items: center;\n background-color: transparent;\n border: 0;\n cursor: pointer;\n display: flex;\n height: 30px;\n justify-content: center;\n outline: none;\n padding: 0;\n width: 30px;\n}\n.tox .tox-swatches__picker-btn svg {\n height: 24px;\n width: 24px;\n}\n.tox .tox-swatches__picker-btn:hover {\n background: #dee0e2;\n}\n.tox:not([dir=rtl]) .tox-swatches__picker-btn {\n margin-left: auto;\n}\n.tox[dir=rtl] .tox-swatches__picker-btn {\n margin-right: auto;\n}\n.tox .tox-comment-thread {\n background: #fff;\n position: relative;\n}\n.tox .tox-comment-thread > *:not(:first-child) {\n margin-top: 8px;\n}\n.tox .tox-comment {\n background: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);\n padding: 8px 8px 16px 8px;\n position: relative;\n}\n.tox .tox-comment__header {\n align-items: center;\n color: #222f3e;\n display: flex;\n justify-content: space-between;\n}\n.tox .tox-comment__date {\n color: rgba(34, 47, 62, 0.7);\n font-size: 12px;\n}\n.tox .tox-comment__body {\n color: #222f3e;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n margin-top: 8px;\n position: relative;\n text-transform: initial;\n}\n.tox .tox-comment__body textarea {\n resize: none;\n white-space: normal;\n width: 100%;\n}\n.tox .tox-comment__expander {\n padding-top: 8px;\n}\n.tox .tox-comment__expander p {\n color: rgba(34, 47, 62, 0.7);\n font-size: 14px;\n font-style: normal;\n}\n.tox .tox-comment__body p {\n margin: 0;\n}\n.tox .tox-comment__buttonspacing {\n padding-top: 16px;\n text-align: center;\n}\n.tox .tox-comment-thread__overlay::after {\n background: #fff;\n bottom: 0;\n content: \"\";\n display: flex;\n left: 0;\n opacity: 0.9;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 5;\n}\n.tox .tox-comment__reply {\n display: flex;\n flex-shrink: 0;\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-top: 8px;\n}\n.tox .tox-comment__reply > *:first-child {\n margin-bottom: 8px;\n width: 100%;\n}\n.tox .tox-comment__edit {\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n margin-top: 16px;\n}\n.tox .tox-comment__gradient::after {\n background: linear-gradient(rgba(255, 255, 255, 0), #fff);\n bottom: 0;\n content: \"\";\n display: block;\n height: 5em;\n margin-top: -40px;\n position: absolute;\n width: 100%;\n}\n.tox .tox-comment__overlay {\n background: #fff;\n bottom: 0;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n left: 0;\n opacity: 0.9;\n position: absolute;\n right: 0;\n text-align: center;\n top: 0;\n z-index: 5;\n}\n.tox .tox-comment__loading-text {\n align-items: center;\n color: #222f3e;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n.tox .tox-comment__loading-text > div {\n padding-bottom: 16px;\n}\n.tox .tox-comment__overlaytext {\n bottom: 0;\n flex-direction: column;\n font-size: 14px;\n left: 0;\n padding: 1em;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 10;\n}\n.tox .tox-comment__overlaytext p {\n background-color: #fff;\n box-shadow: 0 0 8px 8px #fff;\n color: #222f3e;\n text-align: center;\n}\n.tox .tox-comment__overlaytext div:nth-of-type(2) {\n font-size: 0.8em;\n}\n.tox .tox-comment__busy-spinner {\n align-items: center;\n background-color: #fff;\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 20;\n}\n.tox .tox-comment__scroll {\n display: flex;\n flex-direction: column;\n flex-shrink: 1;\n overflow: auto;\n}\n.tox .tox-conversations {\n margin: 8px;\n}\n.tox:not([dir=rtl]) .tox-comment__edit {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child,\n.tox:not([dir=rtl]) .tox-comment__edit > *:last-child,\n.tox:not([dir=rtl]) .tox-comment__reply > *:last-child {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-comment__edit {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child,\n.tox[dir=rtl] .tox-comment__edit > *:last-child,\n.tox[dir=rtl] .tox-comment__reply > *:last-child {\n margin-right: 8px;\n}\n.tox .tox-user {\n align-items: center;\n display: flex;\n}\n.tox .tox-user__avatar svg {\n fill: rgba(34, 47, 62, 0.7);\n}\n.tox .tox-user__name {\n color: rgba(34, 47, 62, 0.7);\n font-size: 12px;\n font-style: normal;\n font-weight: bold;\n text-transform: uppercase;\n}\n.tox:not([dir=rtl]) .tox-user__avatar svg {\n margin-right: 8px;\n}\n.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-user__avatar svg {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-user__avatar + .tox-user__name {\n margin-right: 8px;\n}\n.tox .tox-dialog-wrap {\n align-items: center;\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n z-index: 1100;\n}\n.tox .tox-dialog-wrap__backdrop {\n background-color: rgba(255, 255, 255, 0.75);\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 1;\n}\n.tox .tox-dialog-wrap__backdrop--opaque {\n background-color: #fff;\n}\n.tox .tox-dialog {\n background-color: #fff;\n border-color: #cccccc;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15);\n display: flex;\n flex-direction: column;\n max-height: 100%;\n max-width: 480px;\n overflow: hidden;\n position: relative;\n width: 95vw;\n z-index: 2;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog {\n align-self: flex-start;\n margin: 8px auto;\n width: calc(100vw - 16px);\n }\n}\n.tox .tox-dialog-inline {\n z-index: 1100;\n}\n.tox .tox-dialog__header {\n align-items: center;\n background-color: #fff;\n border-bottom: none;\n color: #222f3e;\n display: flex;\n font-size: 16px;\n justify-content: space-between;\n padding: 8px 16px 0 16px;\n position: relative;\n}\n.tox .tox-dialog__header .tox-button {\n z-index: 1;\n}\n.tox .tox-dialog__draghandle {\n cursor: grab;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tox .tox-dialog__draghandle:active {\n cursor: grabbing;\n}\n.tox .tox-dialog__dismiss {\n margin-left: auto;\n}\n.tox .tox-dialog__title {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 20px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n margin: 0;\n text-transform: none;\n}\n.tox .tox-dialog__body {\n color: #222f3e;\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n font-size: 16px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n min-width: 0;\n text-align: left;\n text-transform: none;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog__body {\n flex-direction: column;\n }\n}\n.tox .tox-dialog__body-nav {\n align-items: flex-start;\n display: flex;\n flex-direction: column;\n padding: 16px 16px;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {\n flex-direction: row;\n -webkit-overflow-scrolling: touch;\n overflow-x: auto;\n padding-bottom: 0;\n }\n}\n.tox .tox-dialog__body-nav-item {\n border-bottom: 2px solid transparent;\n color: rgba(34, 47, 62, 0.7);\n display: inline-block;\n font-size: 14px;\n line-height: 1.3;\n margin-bottom: 8px;\n text-decoration: none;\n white-space: nowrap;\n}\n.tox .tox-dialog__body-nav-item:focus {\n background-color: rgba(32, 122, 183, 0.1);\n}\n.tox .tox-dialog__body-nav-item--active {\n border-bottom: 2px solid #207ab7;\n color: #207ab7;\n}\n.tox .tox-dialog__body-content {\n box-sizing: border-box;\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n max-height: 650px;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n padding: 16px 16px;\n}\n.tox .tox-dialog__body-content > * {\n margin-bottom: 0;\n margin-top: 16px;\n}\n.tox .tox-dialog__body-content > *:first-child {\n margin-top: 0;\n}\n.tox .tox-dialog__body-content > *:last-child {\n margin-bottom: 0;\n}\n.tox .tox-dialog__body-content > *:only-child {\n margin-bottom: 0;\n margin-top: 0;\n}\n.tox .tox-dialog__body-content a {\n color: #207ab7;\n cursor: pointer;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content a:hover,\n.tox .tox-dialog__body-content a:focus {\n color: #185d8c;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content a:active {\n color: #185d8c;\n text-decoration: none;\n}\n.tox .tox-dialog__body-content svg {\n fill: #222f3e;\n}\n.tox .tox-dialog__body-content ul {\n display: block;\n list-style-type: disc;\n margin-bottom: 16px;\n -webkit-margin-end: 0;\n margin-inline-end: 0;\n -webkit-margin-start: 0;\n margin-inline-start: 0;\n -webkit-padding-start: 2.5rem;\n padding-inline-start: 2.5rem;\n}\n.tox .tox-dialog__body-content .tox-form__group h1 {\n color: #222f3e;\n font-size: 20px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n margin-bottom: 16px;\n margin-top: 2rem;\n text-transform: none;\n}\n.tox .tox-dialog__body-content .tox-form__group h2 {\n color: #222f3e;\n font-size: 16px;\n font-style: normal;\n font-weight: bold;\n letter-spacing: normal;\n margin-bottom: 16px;\n margin-top: 2rem;\n text-transform: none;\n}\n.tox .tox-dialog__body-content .tox-form__group p {\n margin-bottom: 16px;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:first-child,\n.tox .tox-dialog__body-content .tox-form__group h2:first-child,\n.tox .tox-dialog__body-content .tox-form__group p:first-child {\n margin-top: 0;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:last-child,\n.tox .tox-dialog__body-content .tox-form__group h2:last-child,\n.tox .tox-dialog__body-content .tox-form__group p:last-child {\n margin-bottom: 0;\n}\n.tox .tox-dialog__body-content .tox-form__group h1:only-child,\n.tox .tox-dialog__body-content .tox-form__group h2:only-child,\n.tox .tox-dialog__body-content .tox-form__group p:only-child {\n margin-bottom: 0;\n margin-top: 0;\n}\n.tox .tox-dialog--width-lg {\n height: 650px;\n max-width: 1200px;\n}\n.tox .tox-dialog--width-md {\n max-width: 800px;\n}\n.tox .tox-dialog--width-md .tox-dialog__body-content {\n overflow: auto;\n}\n.tox .tox-dialog__body-content--centered {\n text-align: center;\n}\n.tox .tox-dialog__footer {\n align-items: center;\n background-color: #fff;\n border-top: 1px solid #cccccc;\n display: flex;\n justify-content: space-between;\n padding: 8px 16px;\n}\n.tox .tox-dialog__footer-start,\n.tox .tox-dialog__footer-end {\n display: flex;\n}\n.tox .tox-dialog__busy-spinner {\n align-items: center;\n background-color: rgba(255, 255, 255, 0.75);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n z-index: 3;\n}\n.tox .tox-dialog__table {\n border-collapse: collapse;\n width: 100%;\n}\n.tox .tox-dialog__table thead th {\n font-weight: bold;\n padding-bottom: 8px;\n}\n.tox .tox-dialog__table tbody tr {\n border-bottom: 1px solid #cccccc;\n}\n.tox .tox-dialog__table tbody tr:last-child {\n border-bottom: none;\n}\n.tox .tox-dialog__table td {\n padding-bottom: 8px;\n padding-top: 8px;\n}\n.tox .tox-dialog__popups {\n position: absolute;\n width: 100%;\n z-index: 1100;\n}\n.tox .tox-dialog__body-iframe {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-iframe .tox-navobj {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n}\n.tox .tox-dialog-dock-fadeout {\n opacity: 0;\n visibility: hidden;\n}\n.tox .tox-dialog-dock-fadein {\n opacity: 1;\n visibility: visible;\n}\n.tox .tox-dialog-dock-transition {\n transition: visibility 0s linear 0.3s, opacity 0.3s ease;\n}\n.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {\n transition-delay: 0s;\n}\n.tox.tox-platform-ie {\n /* IE11 CSS styles go here */\n}\n.tox.tox-platform-ie .tox-dialog-wrap {\n position: -ms-device-fixed;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav {\n margin-right: 0;\n }\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) {\n margin-left: 8px;\n }\n}\n.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *,\n.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * {\n margin-left: 8px;\n}\n.tox[dir=rtl] .tox-dialog__body {\n text-align: right;\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav {\n margin-left: 0;\n }\n}\n@media only screen and (max-width:767px) {\n body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) {\n margin-right: 8px;\n }\n}\n.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *,\n.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * {\n margin-right: 8px;\n}\nbody.tox-dialog__disable-scroll {\n overflow: hidden;\n}\n.tox .tox-dropzone-container {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dropzone {\n align-items: center;\n background: #fff;\n border: 2px dashed #cccccc;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n justify-content: center;\n min-height: 100px;\n padding: 10px;\n}\n.tox .tox-dropzone p {\n color: rgba(34, 47, 62, 0.7);\n margin: 0 0 16px 0;\n}\n.tox .tox-edit-area {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n overflow: hidden;\n position: relative;\n}\n.tox .tox-edit-area__iframe {\n background-color: #fff;\n border: 0;\n box-sizing: border-box;\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n position: absolute;\n width: 100%;\n}\n.tox.tox-inline-edit-area {\n border: 1px dotted #cccccc;\n}\n.tox .tox-editor-container {\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n overflow: hidden;\n}\n.tox .tox-editor-header {\n z-index: 1;\n}\n.tox:not(.tox-tinymce-inline) .tox-editor-header {\n box-shadow: none;\n transition: box-shadow 0.5s;\n}\n.tox.tox-tinymce--toolbar-bottom .tox-editor-header,\n.tox.tox-tinymce-inline .tox-editor-header {\n margin-bottom: -1px;\n}\n.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {\n box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);\n}\n.tox-editor-dock-fadeout {\n opacity: 0;\n visibility: hidden;\n}\n.tox-editor-dock-fadein {\n opacity: 1;\n visibility: visible;\n}\n.tox-editor-dock-transition {\n transition: visibility 0s linear 0.25s, opacity 0.25s ease;\n}\n.tox-editor-dock-transition.tox-editor-dock-fadein {\n transition-delay: 0s;\n}\n.tox .tox-control-wrap {\n flex: 1;\n position: relative;\n}\n.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,\n.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,\n.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {\n display: none;\n}\n.tox .tox-control-wrap svg {\n display: block;\n}\n.tox .tox-control-wrap__status-icon-wrap {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-control-wrap__status-icon-invalid svg {\n fill: #c00;\n}\n.tox .tox-control-wrap__status-icon-unknown svg {\n fill: orange;\n}\n.tox .tox-control-wrap__status-icon-valid svg {\n fill: green;\n}\n.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,\n.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,\n.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield {\n padding-right: 32px;\n}\n.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap {\n right: 4px;\n}\n.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,\n.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,\n.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield {\n padding-left: 32px;\n}\n.tox[dir=rtl] .tox-control-wrap__status-icon-wrap {\n left: 4px;\n}\n.tox .tox-autocompleter {\n max-width: 25em;\n}\n.tox .tox-autocompleter .tox-menu {\n max-width: 25em;\n}\n.tox .tox-autocompleter .tox-autocompleter-highlight {\n font-weight: bold;\n}\n.tox .tox-color-input {\n display: flex;\n position: relative;\n z-index: 1;\n}\n.tox .tox-color-input .tox-textfield {\n z-index: -1;\n}\n.tox .tox-color-input span {\n border-color: rgba(34, 47, 62, 0.2);\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n height: 24px;\n position: absolute;\n top: 6px;\n width: 24px;\n}\n.tox .tox-color-input span:hover:not([aria-disabled=true]),\n.tox .tox-color-input span:focus:not([aria-disabled=true]) {\n border-color: #207ab7;\n cursor: pointer;\n}\n.tox .tox-color-input span::before {\n background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%);\n background-position: 0 0, 0 6px, 6px -6px, -6px 0;\n background-size: 12px 12px;\n border: 1px solid #fff;\n border-radius: 3px;\n box-sizing: border-box;\n content: '';\n height: 24px;\n left: -1px;\n position: absolute;\n top: -1px;\n width: 24px;\n z-index: -1;\n}\n.tox .tox-color-input span[aria-disabled=true] {\n cursor: not-allowed;\n}\n.tox:not([dir=rtl]) .tox-color-input {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox:not([dir=rtl]) .tox-color-input .tox-textfield {\n padding-left: 36px;\n}\n.tox:not([dir=rtl]) .tox-color-input span {\n left: 6px;\n}\n.tox[dir=\"rtl\"] .tox-color-input {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=\"rtl\"] .tox-color-input .tox-textfield {\n padding-right: 36px;\n}\n.tox[dir=\"rtl\"] .tox-color-input span {\n right: 6px;\n}\n.tox .tox-label,\n.tox .tox-toolbar-label {\n color: rgba(34, 47, 62, 0.7);\n display: block;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n line-height: 1.3;\n padding: 0 8px 0 0;\n text-transform: none;\n white-space: nowrap;\n}\n.tox .tox-toolbar-label {\n padding: 0 8px;\n}\n.tox[dir=rtl] .tox-label {\n padding: 0 0 0 8px;\n}\n.tox .tox-form {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group {\n box-sizing: border-box;\n margin-bottom: 4px;\n}\n.tox .tox-form-group--maximize {\n flex: 1;\n}\n.tox .tox-form__group--error {\n color: #c00;\n}\n.tox .tox-form__group--collection {\n display: flex;\n}\n.tox .tox-form__grid {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.tox .tox-form__grid--2col > .tox-form__group {\n width: calc(50% - (8px / 2));\n}\n.tox .tox-form__grid--3col > .tox-form__group {\n width: calc(100% / 3 - (8px / 2));\n}\n.tox .tox-form__grid--4col > .tox-form__group {\n width: calc(25% - (8px / 2));\n}\n.tox .tox-form__controls-h-stack {\n align-items: center;\n display: flex;\n}\n.tox .tox-form__group--inline {\n align-items: center;\n display: flex;\n}\n.tox .tox-form__group--stretched {\n display: flex;\n flex: 1;\n flex-direction: column;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-textarea {\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-navobj {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 100%;\n}\n.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) {\n margin-right: 4px;\n}\n.tox .tox-lock.tox-locked .tox-lock-icon__unlock,\n.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {\n display: none;\n}\n.tox .tox-textfield,\n.tox .tox-toolbar-textfield,\n.tox .tox-listboxfield .tox-listbox--select,\n.tox .tox-textarea {\n -webkit-aplaytpance: none;\n -moz-aplaytpance: none;\n aplaytpance: none;\n background-color: #fff;\n border-color: #cccccc;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #222f3e;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n line-height: 24px;\n margin: 0;\n min-height: 34px;\n outline: none;\n padding: 5px 4.75px;\n resize: none;\n width: 100%;\n}\n.tox .tox-textfield[disabled],\n.tox .tox-textarea[disabled] {\n background-color: #f2f2f2;\n color: rgba(34, 47, 62, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-textfield:focus,\n.tox .tox-listboxfield .tox-listbox--select:focus,\n.tox .tox-textarea:focus {\n background-color: #fff;\n border-color: #207ab7;\n box-shadow: none;\n outline: none;\n}\n.tox .tox-toolbar-textfield {\n border-width: 0;\n margin-bottom: 3px;\n margin-top: 2px;\n max-width: 250px;\n}\n.tox .tox-naked-btn {\n background-color: transparent;\n border: 0;\n border-color: transparent;\n box-shadow: unset;\n color: #207ab7;\n cursor: pointer;\n display: block;\n margin: 0;\n padding: 0;\n}\n.tox .tox-naked-btn svg {\n display: block;\n fill: #222f3e;\n}\n.tox:not([dir=rtl]) .tox-toolbar-textfield + * {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-toolbar-textfield + * {\n margin-right: 4px;\n}\n.tox .tox-listboxfield {\n cursor: pointer;\n position: relative;\n}\n.tox .tox-listboxfield .tox-listbox--select[disabled] {\n background-color: #f2f2f2;\n color: rgba(34, 47, 62, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-listbox__select-label {\n cursor: default;\n flex: 1;\n margin: 0 4px;\n}\n.tox .tox-listbox__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n}\n.tox .tox-listbox__select-chevron svg {\n fill: #222f3e;\n}\n.tox .tox-listboxfield .tox-listbox--select {\n align-items: center;\n display: flex;\n}\n.tox:not([dir=rtl]) .tox-listboxfield svg {\n right: 8px;\n}\n.tox[dir=rtl] .tox-listboxfield svg {\n left: 8px;\n}\n.tox .tox-selectfield {\n cursor: pointer;\n position: relative;\n}\n.tox .tox-selectfield select {\n -webkit-aplaytpance: none;\n -moz-aplaytpance: none;\n aplaytpance: none;\n background-color: #fff;\n border-color: #cccccc;\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n color: #222f3e;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 16px;\n line-height: 24px;\n margin: 0;\n min-height: 34px;\n outline: none;\n padding: 5px 4.75px;\n resize: none;\n width: 100%;\n}\n.tox .tox-selectfield select[disabled] {\n background-color: #f2f2f2;\n color: rgba(34, 47, 62, 0.85);\n cursor: not-allowed;\n}\n.tox .tox-selectfield select::-ms-expand {\n display: none;\n}\n.tox .tox-selectfield select:focus {\n background-color: #fff;\n border-color: #207ab7;\n box-shadow: none;\n outline: none;\n}\n.tox .tox-selectfield svg {\n pointer-events: none;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox:not([dir=rtl]) .tox-selectfield select[size=\"0\"],\n.tox:not([dir=rtl]) .tox-selectfield select[size=\"1\"] {\n padding-right: 24px;\n}\n.tox:not([dir=rtl]) .tox-selectfield svg {\n right: 8px;\n}\n.tox[dir=rtl] .tox-selectfield select[size=\"0\"],\n.tox[dir=rtl] .tox-selectfield select[size=\"1\"] {\n padding-left: 24px;\n}\n.tox[dir=rtl] .tox-selectfield svg {\n left: 8px;\n}\n.tox .tox-textarea {\n -webkit-aplaytpance: textarea;\n -moz-aplaytpance: textarea;\n aplaytpance: textarea;\n white-space: pre-wrap;\n}\n.tox-fullscreen {\n border: 0;\n height: 100%;\n left: 0;\n margin: 0;\n overflow: hidden;\n -ms-scroll-chaining: none;\n overscroll-behavior: none;\n padding: 0;\n position: fixed;\n top: 0;\n touch-action: pinch-zoom;\n width: 100%;\n}\n.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {\n display: none;\n}\n.tox.tox-tinymce.tox-fullscreen {\n z-index: 1200;\n}\n.tox-shadowhost.tox-fullscreen {\n z-index: 1200;\n}\n.tox-fullscreen .tox.tox-tinymce-aux,\n.tox-fullscreen ~ .tox.tox-tinymce-aux {\n z-index: 1201;\n}\n.tox .tox-help__more-link {\n list-style: none;\n margin-top: 1em;\n}\n.tox .tox-image-tools {\n width: 100%;\n}\n.tox .tox-image-tools__toolbar {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.tox .tox-image-tools__image {\n background-color: #666;\n height: 380px;\n overflow: auto;\n position: relative;\n width: 100%;\n}\n.tox .tox-image-tools__image,\n.tox .tox-image-tools__image + .tox-image-tools__toolbar {\n margin-top: 8px;\n}\n.tox .tox-image-tools__image-bg {\n background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);\n}\n.tox .tox-image-tools__toolbar > .tox-spacer {\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-croprect-block {\n background: black;\n filter: alpha(opacity=50);\n opacity: 0.5;\n position: absolute;\n zoom: 1;\n}\n.tox .tox-croprect-handle {\n border: 2px solid white;\n height: 20px;\n left: 0;\n position: absolute;\n top: 0;\n width: 20px;\n}\n.tox .tox-croprect-handle-move {\n border: 0;\n cursor: move;\n position: absolute;\n}\n.tox .tox-croprect-handle-nw {\n border-width: 2px 0 0 2px;\n cursor: nw-resize;\n left: 100px;\n margin: -2px 0 0 -2px;\n top: 100px;\n}\n.tox .tox-croprect-handle-ne {\n border-width: 2px 2px 0 0;\n cursor: ne-resize;\n left: 200px;\n margin: -2px 0 0 -20px;\n top: 100px;\n}\n.tox .tox-croprect-handle-sw {\n border-width: 0 0 2px 2px;\n cursor: sw-resize;\n left: 100px;\n margin: -20px 2px 0 -2px;\n top: 200px;\n}\n.tox .tox-croprect-handle-se {\n border-width: 0 2px 2px 0;\n cursor: se-resize;\n left: 200px;\n margin: -20px 0 0 -20px;\n top: 200px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {\n margin-left: 8px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider {\n margin-left: 32px;\n}\n.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button {\n margin-left: 32px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {\n margin-right: 8px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider {\n margin-right: 32px;\n}\n.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button {\n margin-right: 32px;\n}\n.tox .tox-insert-table-picker {\n display: flex;\n flex-wrap: wrap;\n width: 170px;\n}\n.tox .tox-insert-table-picker > div {\n border-color: #cccccc;\n border-style: solid;\n border-width: 0 1px 1px 0;\n box-sizing: border-box;\n height: 17px;\n width: 17px;\n}\n.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {\n margin: -4px 0;\n}\n.tox .tox-insert-table-picker .tox-insert-table-picker__selected {\n background-color: rgba(32, 122, 183, 0.5);\n border-color: rgba(32, 122, 183, 0.5);\n}\n.tox .tox-insert-table-picker__label {\n color: rgba(34, 47, 62, 0.7);\n display: block;\n font-size: 14px;\n padding: 4px;\n text-align: center;\n width: 100%;\n}\n.tox:not([dir=rtl]) {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) {\n border-right: 0;\n}\n.tox[dir=rtl] {\n /* stylelint-disable-next-line no-descending-specificity */\n}\n.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) {\n border-right: 0;\n}\n.tox {\n /* stylelint-disable */\n /* stylelint-enable */\n}\n.tox .tox-menu {\n background-color: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);\n display: inline-block;\n overflow: hidden;\n vertical-align: top;\n z-index: 1150;\n}\n.tox .tox-menu.tox-collection.tox-collection--list {\n padding: 0;\n}\n.tox .tox-menu.tox-collection.tox-collection--toolbar {\n padding: 4px;\n}\n.tox .tox-menu.tox-collection.tox-collection--grid {\n padding: 4px;\n}\n.tox .tox-menu__label h1,\n.tox .tox-menu__label h2,\n.tox .tox-menu__label h3,\n.tox .tox-menu__label h4,\n.tox .tox-menu__label h5,\n.tox .tox-menu__label h6,\n.tox .tox-menu__label p,\n.tox .tox-menu__label blockquote,\n.tox .tox-menu__label code {\n margin: 0;\n}\n.tox .tox-menubar {\n background: url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E\") left 0 top 0 #fff;\n background-color: #fff;\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: wrap;\n padding: 0 4px 0 4px;\n}\n.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {\n border-top: 1px solid #cccccc;\n}\n/* Deprecated. Remove in next major release */\n.tox .tox-mbtn {\n align-items: center;\n background: transparent;\n border: 0;\n border-radius: 3px;\n box-shadow: none;\n color: #222f3e;\n display: flex;\n flex: 0 0 auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n height: 34px;\n justify-content: center;\n margin: 2px 0 3px 0;\n outline: none;\n overflow: hidden;\n padding: 0 4px;\n text-transform: none;\n width: auto;\n}\n.tox .tox-mbtn[disabled] {\n background-color: transparent;\n border: 0;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-mbtn:focus:not(:disabled) {\n background: #dee0e2;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-mbtn--active {\n background: #c8cbcf;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {\n background: #dee0e2;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-mbtn__select-label {\n cursor: default;\n font-weight: normal;\n margin: 0 4px;\n}\n.tox .tox-mbtn[disabled] .tox-mbtn__select-label {\n cursor: not-allowed;\n}\n.tox .tox-mbtn__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n display: none;\n}\n.tox .tox-notification {\n border-radius: 3px;\n border-style: solid;\n border-width: 1px;\n box-shadow: none;\n box-sizing: border-box;\n display: -ms-grid;\n display: grid;\n font-size: 14px;\n font-weight: normal;\n -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);\n grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);\n margin-top: 4px;\n opacity: 0;\n padding: 4px;\n transition: transform 100ms ease-in, opacity 150ms ease-in;\n}\n.tox .tox-notification p {\n font-size: 14px;\n font-weight: normal;\n}\n.tox .tox-notification a {\n text-decoration: underline;\n}\n.tox .tox-notification--in {\n opacity: 1;\n}\n.tox .tox-notification--success {\n background-color: #e4eeda;\n border-color: #d7e6c8;\n color: #222f3e;\n}\n.tox .tox-notification--success p {\n color: #222f3e;\n}\n.tox .tox-notification--success a {\n color: #547831;\n}\n.tox .tox-notification--success svg {\n fill: #222f3e;\n}\n.tox .tox-notification--error {\n background-color: #f8dede;\n border-color: #f2bfbf;\n color: #222f3e;\n}\n.tox .tox-notification--error p {\n color: #222f3e;\n}\n.tox .tox-notification--error a {\n color: #c00;\n}\n.tox .tox-notification--error svg {\n fill: #222f3e;\n}\n.tox .tox-notification--warn,\n.tox .tox-notification--warning {\n background-color: #fffaea;\n border-color: #ffe89d;\n color: #222f3e;\n}\n.tox .tox-notification--warn p,\n.tox .tox-notification--warning p {\n color: #222f3e;\n}\n.tox .tox-notification--warn a,\n.tox .tox-notification--warning a {\n color: #222f3e;\n}\n.tox .tox-notification--warn svg,\n.tox .tox-notification--warning svg {\n fill: #222f3e;\n}\n.tox .tox-notification--info {\n background-color: #d9edf7;\n border-color: #779ecb;\n color: #222f3e;\n}\n.tox .tox-notification--info p {\n color: #222f3e;\n}\n.tox .tox-notification--info a {\n color: #222f3e;\n}\n.tox .tox-notification--info svg {\n fill: #222f3e;\n}\n.tox .tox-notification__body {\n -ms-grid-row-align: center;\n align-self: center;\n color: #222f3e;\n font-size: 14px;\n -ms-grid-column-span: 1;\n grid-column-end: 3;\n -ms-grid-column: 2;\n grid-column-start: 2;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n text-align: center;\n white-space: normal;\n word-break: break-all;\n word-break: break-word;\n}\n.tox .tox-notification__body > * {\n margin: 0;\n}\n.tox .tox-notification__body > * + * {\n margin-top: 1rem;\n}\n.tox .tox-notification__icon {\n -ms-grid-row-align: center;\n align-self: center;\n -ms-grid-column-span: 1;\n grid-column-end: 2;\n -ms-grid-column: 1;\n grid-column-start: 1;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n -ms-grid-column-align: end;\n justify-self: end;\n}\n.tox .tox-notification__icon svg {\n display: block;\n}\n.tox .tox-notification__dismiss {\n -ms-grid-row-align: start;\n align-self: start;\n -ms-grid-column-span: 1;\n grid-column-end: 4;\n -ms-grid-column: 3;\n grid-column-start: 3;\n -ms-grid-row-span: 1;\n grid-row-end: 2;\n -ms-grid-row: 1;\n grid-row-start: 1;\n -ms-grid-column-align: end;\n justify-self: end;\n}\n.tox .tox-notification .tox-progress-bar {\n -ms-grid-column-span: 3;\n grid-column-end: 4;\n -ms-grid-column: 1;\n grid-column-start: 1;\n -ms-grid-row-span: 1;\n grid-row-end: 3;\n -ms-grid-row: 2;\n grid-row-start: 2;\n -ms-grid-column-align: center;\n justify-self: center;\n}\n.tox .tox-pop {\n display: inline-block;\n position: relative;\n}\n.tox .tox-pop--resizing {\n transition: width 0.1s ease;\n}\n.tox .tox-pop--resizing .tox-toolbar {\n flex-wrap: nowrap;\n}\n.tox .tox-pop__dialog {\n background-color: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n min-width: 0;\n overflow: hidden;\n}\n.tox .tox-pop__dialog > *:not(.tox-toolbar) {\n margin: 4px 4px 4px 8px;\n}\n.tox .tox-pop__dialog .tox-toolbar {\n background-color: transparent;\n margin-bottom: -1px;\n}\n.tox .tox-pop::before,\n.tox .tox-pop::after {\n border-style: solid;\n content: '';\n display: block;\n height: 0;\n position: absolute;\n width: 0;\n}\n.tox .tox-pop.tox-pop--bottom::before,\n.tox .tox-pop.tox-pop--bottom::after {\n left: 50%;\n top: 100%;\n}\n.tox .tox-pop.tox-pop--bottom::after {\n border-color: #fff transparent transparent transparent;\n border-width: 8px;\n margin-left: -8px;\n margin-top: -1px;\n}\n.tox .tox-pop.tox-pop--bottom::before {\n border-color: #cccccc transparent transparent transparent;\n border-width: 9px;\n margin-left: -9px;\n}\n.tox .tox-pop.tox-pop--top::before,\n.tox .tox-pop.tox-pop--top::after {\n left: 50%;\n top: 0;\n transform: translateY(-100%);\n}\n.tox .tox-pop.tox-pop--top::after {\n border-color: transparent transparent #fff transparent;\n border-width: 8px;\n margin-left: -8px;\n margin-top: 1px;\n}\n.tox .tox-pop.tox-pop--top::before {\n border-color: transparent transparent #cccccc transparent;\n border-width: 9px;\n margin-left: -9px;\n}\n.tox .tox-pop.tox-pop--left::before,\n.tox .tox-pop.tox-pop--left::after {\n left: 0;\n top: calc(50% - 1px);\n transform: translateY(-50%);\n}\n.tox .tox-pop.tox-pop--left::after {\n border-color: transparent #fff transparent transparent;\n border-width: 8px;\n margin-left: -15px;\n}\n.tox .tox-pop.tox-pop--left::before {\n border-color: transparent #cccccc transparent transparent;\n border-width: 10px;\n margin-left: -19px;\n}\n.tox .tox-pop.tox-pop--right::before,\n.tox .tox-pop.tox-pop--right::after {\n left: 100%;\n top: calc(50% + 1px);\n transform: translateY(-50%);\n}\n.tox .tox-pop.tox-pop--right::after {\n border-color: transparent transparent transparent #fff;\n border-width: 8px;\n margin-left: -1px;\n}\n.tox .tox-pop.tox-pop--right::before {\n border-color: transparent transparent transparent #cccccc;\n border-width: 10px;\n margin-left: -1px;\n}\n.tox .tox-pop.tox-pop--align-left::before,\n.tox .tox-pop.tox-pop--align-left::after {\n left: 20px;\n}\n.tox .tox-pop.tox-pop--align-right::before,\n.tox .tox-pop.tox-pop--align-right::after {\n left: calc(100% - 20px);\n}\n.tox .tox-sidebar-wrap {\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n -ms-flex-preferred-size: 0;\n min-height: 0;\n}\n.tox .tox-sidebar {\n background-color: #fff;\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n}\n.tox .tox-sidebar__slider {\n display: flex;\n overflow: hidden;\n}\n.tox .tox-sidebar__pane-container {\n display: flex;\n}\n.tox .tox-sidebar__pane {\n display: flex;\n}\n.tox .tox-sidebar--sliding-closed {\n opacity: 0;\n}\n.tox .tox-sidebar--sliding-open {\n opacity: 1;\n}\n.tox .tox-sidebar--sliding-growing,\n.tox .tox-sidebar--sliding-shrinking {\n transition: width 0.5s ease, opacity 0.5s ease;\n}\n.tox .tox-selector {\n background-color: #4099ff;\n border-color: #4099ff;\n border-style: solid;\n border-width: 1px;\n box-sizing: border-box;\n display: inline-block;\n height: 10px;\n position: absolute;\n width: 10px;\n}\n.tox.tox-platform-touch .tox-selector {\n height: 12px;\n width: 12px;\n}\n.tox .tox-slider {\n align-items: center;\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n height: 24px;\n justify-content: center;\n position: relative;\n}\n.tox .tox-slider__rail {\n background-color: transparent;\n border: 1px solid #cccccc;\n border-radius: 3px;\n height: 10px;\n min-width: 120px;\n width: 100%;\n}\n.tox .tox-slider__handle {\n background-color: #207ab7;\n border: 2px solid #185d8c;\n border-radius: 3px;\n box-shadow: none;\n height: 24px;\n left: 50%;\n position: absolute;\n top: 50%;\n transform: translateX(-50%) translateY(-50%);\n width: 14px;\n}\n.tox .tox-source-code {\n overflow: auto;\n}\n.tox .tox-spinner {\n display: flex;\n}\n.tox .tox-spinner > div {\n animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;\n background-color: rgba(34, 47, 62, 0.7);\n border-radius: 100%;\n height: 8px;\n width: 8px;\n}\n.tox .tox-spinner > div:nth-child(1) {\n animation-delay: -0.32s;\n}\n.tox .tox-spinner > div:nth-child(2) {\n animation-delay: -0.16s;\n}\n@keyframes tam-bouncing-dots {\n 0%,\n 80%,\n 100% {\n transform: scale(0);\n }\n 40% {\n transform: scale(1);\n }\n}\n.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) {\n margin-left: 4px;\n}\n.tox[dir=rtl] .tox-spinner > div:not(:first-child) {\n margin-right: 4px;\n}\n.tox .tox-statusbar {\n align-items: center;\n background-color: #fff;\n border-top: 1px solid #cccccc;\n color: rgba(34, 47, 62, 0.7);\n display: flex;\n flex: 0 0 auto;\n font-size: 12px;\n font-weight: normal;\n height: 18px;\n overflow: hidden;\n padding: 0 8px;\n position: relative;\n text-transform: uppercase;\n}\n.tox .tox-statusbar__text-container {\n display: flex;\n flex: 1 1 auto;\n justify-content: flex-end;\n overflow: hidden;\n}\n.tox .tox-statusbar__path {\n display: flex;\n flex: 1 1 auto;\n margin-right: auto;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.tox .tox-statusbar__path > * {\n display: inline;\n white-space: nowrap;\n}\n.tox .tox-statusbar__wordcount {\n flex: 0 0 auto;\n margin-left: 1ch;\n}\n.tox .tox-statusbar a,\n.tox .tox-statusbar__path-item,\n.tox .tox-statusbar__wordcount {\n color: rgba(34, 47, 62, 0.7);\n text-decoration: none;\n}\n.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),\n.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) {\n cursor: pointer;\n text-decoration: underline;\n}\n.tox .tox-statusbar__resize-handle {\n align-items: flex-end;\n align-self: stretch;\n cursor: nwse-resize;\n display: flex;\n flex: 0 0 auto;\n justify-content: flex-end;\n margin-left: auto;\n margin-right: -8px;\n padding-left: 1ch;\n}\n.tox .tox-statusbar__resize-handle svg {\n display: block;\n fill: rgba(34, 47, 62, 0.7);\n}\n.tox:not([dir=rtl]) .tox-statusbar__path > * {\n margin-right: 4px;\n}\n.tox:not([dir=rtl]) .tox-statusbar__branding {\n margin-left: 1ch;\n}\n.tox[dir=rtl] .tox-statusbar {\n flex-direction: row-reverse;\n}\n.tox[dir=rtl] .tox-statusbar__path > * {\n margin-left: 4px;\n}\n.tox .tox-throbber {\n z-index: 1400;\n}\n.tox .tox-throbber__busy-spinner {\n align-items: center;\n background-color: rgba(255, 255, 255, 0.6);\n bottom: 0;\n display: flex;\n justify-content: center;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n}\n.tox .tox-tbtn {\n align-items: center;\n background: transparent;\n border: 0;\n border-radius: 3px;\n box-shadow: none;\n color: #222f3e;\n display: flex;\n flex: 0 0 auto;\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n height: 34px;\n justify-content: center;\n margin: 2px 0 3px 0;\n outline: none;\n overflow: hidden;\n padding: 0;\n text-transform: none;\n width: 34px;\n}\n.tox .tox-tbtn svg {\n display: block;\n fill: #222f3e;\n}\n.tox .tox-tbtn.tox-tbtn-more {\n padding-left: 5px;\n padding-right: 5px;\n width: inherit;\n}\n.tox .tox-tbtn:focus {\n background: #dee0e2;\n border: 0;\n box-shadow: none;\n}\n.tox .tox-tbtn:hover {\n background: #dee0e2;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-tbtn:hover svg {\n fill: #222f3e;\n}\n.tox .tox-tbtn:active {\n background: #c8cbcf;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-tbtn:active svg {\n fill: #222f3e;\n}\n.tox .tox-tbtn--disabled,\n.tox .tox-tbtn--disabled:hover,\n.tox .tox-tbtn:disabled,\n.tox .tox-tbtn:disabled:hover {\n background: transparent;\n border: 0;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n cursor: not-allowed;\n}\n.tox .tox-tbtn--disabled svg,\n.tox .tox-tbtn--disabled:hover svg,\n.tox .tox-tbtn:disabled svg,\n.tox .tox-tbtn:disabled:hover svg {\n /* stylelint-disable-line no-descending-specificity */\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-tbtn--enabled,\n.tox .tox-tbtn--enabled:hover {\n background: #c8cbcf;\n border: 0;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-tbtn--enabled > *,\n.tox .tox-tbtn--enabled:hover > * {\n transform: none;\n}\n.tox .tox-tbtn--enabled svg,\n.tox .tox-tbtn--enabled:hover svg {\n /* stylelint-disable-line no-descending-specificity */\n fill: #222f3e;\n}\n.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {\n color: #222f3e;\n}\n.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {\n fill: #222f3e;\n}\n.tox .tox-tbtn:active > * {\n transform: none;\n}\n.tox .tox-tbtn--md {\n height: 51px;\n width: 51px;\n}\n.tox .tox-tbtn--lg {\n flex-direction: column;\n height: 68px;\n width: 68px;\n}\n.tox .tox-tbtn--return {\n -ms-grid-row-align: stretch;\n align-self: stretch;\n height: unset;\n width: 16px;\n}\n.tox .tox-tbtn--labeled {\n padding: 0 4px;\n width: unset;\n}\n.tox .tox-tbtn__vlabel {\n display: block;\n font-size: 10px;\n font-weight: normal;\n letter-spacing: -0.025em;\n margin-bottom: 4px;\n white-space: nowrap;\n}\n.tox .tox-tbtn--select {\n margin: 2px 0 3px 0;\n padding: 0 4px;\n width: auto;\n}\n.tox .tox-tbtn__select-label {\n cursor: default;\n font-weight: normal;\n margin: 0 4px;\n}\n.tox .tox-tbtn__select-chevron {\n align-items: center;\n display: flex;\n justify-content: center;\n width: 16px;\n}\n.tox .tox-tbtn__select-chevron svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-tbtn--bespoke .tox-tbtn__select-label {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n width: 7em;\n}\n.tox .tox-split-button {\n border: 0;\n border-radius: 3px;\n box-sizing: border-box;\n display: flex;\n margin: 2px 0 3px 0;\n overflow: hidden;\n}\n.tox .tox-split-button:hover {\n box-shadow: 0 0 0 1px #dee0e2 inset;\n}\n.tox .tox-split-button:focus {\n background: #dee0e2;\n box-shadow: none;\n color: #222f3e;\n}\n.tox .tox-split-button > * {\n border-radius: 0;\n}\n.tox .tox-split-button__chevron {\n width: 16px;\n}\n.tox .tox-split-button__chevron svg {\n fill: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-split-button .tox-tbtn {\n margin: 0;\n}\n.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {\n width: 30px;\n}\n.tox.tox-platform-touch .tox-split-button__chevron {\n width: 20px;\n}\n.tox .tox-split-button.tox-tbtn--disabled:hover,\n.tox .tox-split-button.tox-tbtn--disabled:focus,\n.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,\n.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {\n background: transparent;\n box-shadow: none;\n color: rgba(34, 47, 62, 0.5);\n}\n.tox .tox-toolbar-overlord {\n background-color: #fff;\n}\n.tox .tox-toolbar,\n.tox .tox-toolbar__primary,\n.tox .tox-toolbar__overflow {\n background: url(\"data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E\") left 0 top 0 #fff;\n background-color: #fff;\n display: flex;\n flex: 0 0 auto;\n flex-shrink: 0;\n flex-wrap: wrap;\n padding: 0 0;\n}\n.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {\n height: 0;\n opacity: 0;\n padding-bottom: 0;\n padding-top: 0;\n visibility: hidden;\n}\n.tox .tox-toolbar__overflow--growing {\n transition: height 0.3s ease, opacity 0.2s linear 0.1s;\n}\n.tox .tox-toolbar__overflow--shrinking {\n transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;\n}\n.tox .tox-menubar + .tox-toolbar,\n.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {\n border-top: 1px solid #cccccc;\n margin-top: -1px;\n}\n.tox .tox-toolbar--scrolling {\n flex-wrap: nowrap;\n overflow-x: auto;\n}\n.tox .tox-pop .tox-toolbar {\n border-width: 0;\n}\n.tox .tox-toolbar--no-divider {\n background-image: none;\n}\n.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,\n.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {\n border-top: 1px solid #cccccc;\n}\n.tox.tox-tinymce-aux .tox-toolbar__overflow {\n background-color: #fff;\n border: 1px solid #cccccc;\n border-radius: 3px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.tox[dir=rtl] .tox-tbtn__icon-rtl svg {\n transform: rotateY(180deg);\n}\n.tox .tox-toolbar__group {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n margin: 0 0;\n padding: 0 4px 0 4px;\n}\n.tox .tox-toolbar__group--pull-right {\n margin-left: auto;\n}\n.tox .tox-toolbar--scrolling .tox-toolbar__group {\n flex-shrink: 0;\n flex-wrap: nowrap;\n}\n.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) {\n border-right: 1px solid #cccccc;\n}\n.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) {\n border-left: 1px solid #cccccc;\n}\n.tox .tox-tooltip {\n display: inline-block;\n padding: 8px;\n position: relative;\n}\n.tox .tox-tooltip__body {\n background-color: #222f3e;\n border-radius: 3px;\n box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3);\n color: rgba(255, 255, 255, 0.75);\n font-size: 14px;\n font-style: normal;\n font-weight: normal;\n padding: 4px 8px;\n text-transform: none;\n}\n.tox .tox-tooltip__arrow {\n position: absolute;\n}\n.tox .tox-tooltip--down .tox-tooltip__arrow {\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n border-top: 8px solid #222f3e;\n bottom: 0;\n left: 50%;\n position: absolute;\n transform: translateX(-50%);\n}\n.tox .tox-tooltip--up .tox-tooltip__arrow {\n border-bottom: 8px solid #222f3e;\n border-left: 8px solid transparent;\n border-right: 8px solid transparent;\n left: 50%;\n position: absolute;\n top: 0;\n transform: translateX(-50%);\n}\n.tox .tox-tooltip--right .tox-tooltip__arrow {\n border-bottom: 8px solid transparent;\n border-left: 8px solid #222f3e;\n border-top: 8px solid transparent;\n position: absolute;\n right: 0;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-tooltip--left .tox-tooltip__arrow {\n border-bottom: 8px solid transparent;\n border-right: 8px solid #222f3e;\n border-top: 8px solid transparent;\n left: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n}\n.tox .tox-well {\n border: 1px solid #cccccc;\n border-radius: 3px;\n padding: 8px;\n width: 100%;\n}\n.tox .tox-well > *:first-child {\n margin-top: 0;\n}\n.tox .tox-well > *:last-child {\n margin-bottom: 0;\n}\n.tox .tox-well > *:only-child {\n margin: 0;\n}\n.tox .tox-custom-editor {\n border: 1px solid #cccccc;\n border-radius: 3px;\n display: flex;\n flex: 1;\n position: relative;\n}\n/* stylelint-disable */\n.tox {\n /* stylelint-enable */\n}\n.tox .tox-dialog-loading::before {\n background-color: rgba(0, 0, 0, 0.5);\n content: \"\";\n height: 100%;\n position: absolute;\n width: 100%;\n z-index: 1000;\n}\n.tox .tox-tab {\n cursor: pointer;\n}\n.tox .tox-dialog__content-js {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-dialog__body-content .tox-collection {\n display: flex;\n flex: 1;\n -ms-flex-preferred-size: auto;\n}\n.tox .tox-image-tools-edit-panel {\n height: 60px;\n}\n.tox .tox-image-tools__sidebar {\n height: 60px;\n}\n"]} \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.css b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.css index 875721a27d02e628613cdd68138539c28dc15afd..0a0e082ef2d9fcbacd555f5427408d0cdedc718a 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.css +++ b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.css @@ -282,7 +282,7 @@ flex: 1; padding-bottom: 0.4em; padding-top: 0.4em; - /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */ + /* Make any buttons aplaytping on the left and right display in the centre (e.g. color edges) */ /* For widgets like the colour picker, use the whole height */ } .tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog { @@ -630,7 +630,7 @@ width: 100%; } .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon { - /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */ + /* Note, on the iPod touch in landscape, this isn't visible when the navbar aplaytps */ background-color: #207ab7; border-radius: 50%; bottom: 1em; diff --git a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.min.css.map b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.min.css.map index ed893bc5fa7e0806494209ca86c5c0e15074e27c..3e5c5d2b2290c38f81d6f86f265ce15b68076ad9 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.min.css.map +++ b/public/static/component/laytp/module/tinymce/tinymce/skins/ui/oxide/skin.mobile.min.css.map @@ -1 +1 @@ -{"version":3,"sources":["ui/default/skin.mobile.css"],"names":[],"mappings":";;;;;;AAOA,gCACE,IAAK,QACL,QAAS,MAEX,kCACE,OAAQ,EACR,WAAY,QACZ,OAAQ,QACR,MAAO,KACP,YAAa,EACb,OAAQ,EACR,QAAS,EACT,QAAS,EACT,4BAA6B,YAE7B,YAAa,KACb,YAAa,OAEf,wCACE,QAAS,QAEX,mCACE,QAAS,QAEX,2CACE,QAAS,QAEX,sCACE,QAAS,QAEX,0CACE,QAAS,QAEX,wCACE,QAAS,QAEX,yCACE,QAAS,QAEX,kCACE,QAAS,QAEX,oCACE,QAAS,QAEX,4CACE,QAAS,QAEX,0CACE,QAAS,QAEX,uCACE,QAAS,QAEX,uCACE,QAAS,QAEX,kCACE,QAAS,QAEX,oCACE,QAAS,QAEX,mCACE,QAAS,QAEX,sCACE,QAAS,QAEX,kCACE,QAAS,QAEX,wCACA,2CACE,QAAS,QAEX,kCACE,QAAS,QAEX,kCACE,QAAS,QAEX,0CACE,QAAS,QAEX,wCACE,QAAS,QAGX,sCADA,2CAEE,QAAS,QAEX,2CACE,QAAS,QAEX,2CACE,QAAS,QAGX,2CADA,2CAEE,YAAa,WACb,UAAW,IAEb,uCACE,QAAS,QAEX,kCACE,QAAS,QAEX,qCAEE,QAAS,WACT,YAAa,WACb,UAAW,IACX,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,8DACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,WAAY,kBACZ,OAAQ,KACR,SAAU,SACV,IAAK,EACL,MAAO,KAET,gGACE,YAAa,OACb,cAAe,IACf,QAAS,KACT,eAAgB,OAChB,YAAa,WACb,UAAW,IACX,gBAAiB,cAEnB,iHACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,cAAe,IACf,OAAQ,MACR,MAAO,MAET,oIACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,eAAgB,OAChB,UAAW,IAEb,gDACE,oIACE,UAAW,OAGf,kKACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,cAAe,IACf,OAAQ,MACR,MAAO,MACP,iBAAkB,KAClB,MAAO,QAET,0KACE,QAAS,QACT,YAAa,cAAgB,CAAE,WAEjC,8MACE,QAAS,EAEX,mEACE,WAAY,KACZ,OAAQ,KACR,OAAQ,EACR,QAAS,KACT,eAAgB,OAChB,KAAM,EACN,SAAU,MACV,MAAO,EACP,IAAK,EAEP,yEACE,SAAU,SAEZ,gEACE,QAAS,KACT,UAAW,EAEb,uEACE,QAAS,eACT,UAAW,EACX,OAAQ,eAEV,sCACE,SAAU,OAEZ,sFACE,WAAY,KAEd,0BACE,WAAY,KACZ,QAAS,KACT,KAAM,EAAE,EAAE,KACV,QAAS,EAEX,kDACE,YAAa,OACb,iBAAkB,KAClB,cAAe,IAAI,MAAM,KACzB,QAAS,KACT,KAAM,EACN,OAAQ,MACR,MAAO,KAGT,qHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,YAAa,EAEf,yHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EAER,mJACE,WAAY,QAEd,6JACE,UAAW,EAEb,wJACE,aAAc,KACd,cAAe,KAEjB,sLACE,YAAa,OACb,QAAS,KACT,OAAQ,IACR,YAAa,IACb,aAAc,IAEhB,6NACE,WAAY,QACZ,MAAO,KAET,mIACA,kIACE,WAAY,QACZ,MAAO,QAKT,+GACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EACN,eAAgB,KAChB,YAAa,KAIf,iJACE,QAAS,KACT,WAAY,MACZ,SAAU,OACV,aAAc,EACd,cAAe,EACf,SAAU,SACV,MAAO,KAET,yLACE,QAAS,KACT,OAAQ,KACR,WAAY,KAAK,uBAA2B,KAC5C,MAAO,KAET,kOACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,cACjB,MAAO,KAET,wOACE,YAAa,WAEf,kQACE,QAAS,KACT,UAAW,EACX,SAAU,SAEZ,oSACE,mBAAoB,OAChB,WAAY,OAChB,WAAY,QACZ,OAAQ,KACR,cAAe,IACf,MAAO,KACP,UAAW,KACX,YAAa,IACb,OAAQ,KACR,cAAe,IACf,SAAU,SACV,MAAO,EAET,yUACE,QAAS,KAGX,4PADA,gQAEE,YAAa,OACb,QAAS,KAGX,oQADA,wQAEE,YAAa,OACb,QAAS,KACT,YAAa,IACb,OAAQ,KACR,aAAc,KACd,cAAe,KAGjB,+SADA,mTAEE,WAAY,OAEd,wIACE,MAAO,KACP,UAAW,KACX,YAAa,KACb,OAAQ,EAAE,IACV,YAAa,IAEf,kKACE,MAAO,QAET,uJACA,0JACE,YAAa,KACb,aAAc,KAEhB,uJACA,0JACE,YAAa,KACb,aAAc,KAEhB,sIACE,QAAS,KACT,KAAM,EACN,YAAa,EACb,aAAc,EACd,QAAS,MAAO,EAChB,SAAU,SAEZ,4KACE,YAAa,OACb,QAAS,KACT,UAAW,EACX,OAAQ,KAEV,6MACE,WAAY,KACZ,QAAS,KACT,KAAM,EACN,OAAQ,KACR,cAAe,KACf,WAAY,KAEd,0KACE,aAAc,IACd,cAAe,IAEjB,oNACE,YAAa,OACb,QAAS,KACT,UAAW,EACX,OAAQ,KAEV,oPACE,WAAY,+FACZ,QAAS,KACT,KAAM,EACN,OAAQ,KACR,cAAe,KACf,WAAY,KAEd,2MAEE,WAAY,KACZ,OAAQ,KACR,cAAe,KACf,WAAY,KACZ,MAAO,MAET,2MAEE,WAAY,KACZ,OAAQ,KACR,cAAe,KACf,WAAY,KACZ,MAAO,MAET,mKAME,YAAa,OACb,gBAAiB,YACjB,iBAAkB,QAClB,OAAQ,KAAM,MAAM,oBACpB,cAAe,IACf,OAAQ,EACR,MAAO,KACP,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,KAAM,MACN,OAAQ,KACR,SAAU,SACV,IAAK,EACL,WAAY,OAAO,MAAM,4BACzB,MAAO,KAET,+LACE,OAAQ,KAAM,MAAM,sBAEtB,kJACA,mHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EAER,kJACE,eAAgB,OAChB,gBAAiB,OAEnB,kJACE,YAAa,OACb,QAAS,KAEX,yLACE,OAAQ,KAEV,6IACE,QAAS,KAEX,qHACE,WAAY,KACZ,OAAQ,KACR,cAAe,EACf,MAAO,QACP,UAAW,EACX,UAAW,MACX,eAAgB,KAChB,aAAc,IACd,YAAa,KAEf,gJAEE,MAAO,KAET,kIAEE,MAAO,KAGT,uBACE,WAAY,KACZ,QAAS,KACT,SAAU,OACV,MAAO,KAET,uDACE,WAAY,OAAO,IAAK,SAE1B,qDACE,WAAY,OAAO,IAAK,QAE1B,oDACE,UAAW,EAEb,sFACE,UAAW,EAGb,wFACE,WAAY,MAEd,+CACE,0DACE,WAAY,OAGhB,4GACE,wFACE,WAAY,OAIhB,4BACE,YAAa,WACb,QAAS,IAAI,MAAM,KACnB,SAAU,OACV,SAAU,SACV,MAAO,KAET,wCACE,QAAS,KACT,eAAgB,OAChB,OAAQ,KACR,SAAU,SACV,MAAO,KAET,sDACE,WAAY,UAAU,IAAK,YAE7B,wDACE,cAAe,IAAI,MAAM,KACzB,MAAO,QACP,OAAQ,QACR,QAAS,KACT,QAAS,IAAI,IACb,SAAU,SAEZ,0GACE,MAAO,QACP,QAAS,QACT,YAAa,cAAgB,CAAE,WAEjC,kGACE,MAAO,QACP,QAAS,QACT,YAAa,cAAgB,CAAE,WAC/B,aAAc,IACd,cAAe,IACf,SAAU,SACV,MAAO,EAET,6FACE,YAAa,cAAgB,CAAE,WAC/B,aAAc,IACd,cAAe,IACf,SAAU,SACV,MAAO,EAGT,6DADA,6DAEE,YAAa,OACb,WAAY,KACZ,WAAY,QACZ,MAAO,QACP,QAAS,KACT,WAAY,MACZ,aAAc,IACd,cAAe,IAEjB,8FACA,8DACE,UAAW,iBAEb,+FACA,+DACE,UAAW,aAEb,6FACA,6DACE,UAAW,gBAEb,WACE,YAAa,eACb,WAAY,OACZ,YAAa,IACb,IAAK,sCAAwC,eAE/C,gCACE,gCACA,sCACE,UAAW,MAGf,gCACE,gCACA,sCACE,UAAW,MAGf,qBACE,YAAa,cAAgB,CAAE,WAEjC,uBACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,gBACE,YAAa,OACb,QAAS,KACT,OAAQ,KAEV,qEACE,iBAAkB,KAClB,MAAO,KAET,6DAEE,iBAAkB,QAClB,cAAe,IACf,OAAQ,IACR,MAAO,KACP,UAAW,IACX,OAAQ,MACR,SAAU,MACV,MAAO,IACP,MAAO,MACP,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,gDACE,6DACE,UAAW,OAGf,wGACE,OAAQ,MACR,SAAU,OAEZ,+GACE,OAAQ,KAEV,oGACE,QAAS,KAMX,6CACE,QAAS,KAEX,4GACE,2FACE,OAAQ","file":"skin.mobile.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n/* RESET all the things! */\n.tinymce-mobile-outer-container {\n all: initial;\n display: block;\n}\n.tinymce-mobile-outer-container * {\n border: 0;\n box-sizing: initial;\n cursor: inherit;\n float: none;\n line-height: 1;\n margin: 0;\n outline: 0;\n padding: 0;\n -webkit-tap-highlight-color: transparent;\n /* TBIO-3691, stop the gray flicker on touch. */\n text-shadow: none;\n white-space: nowrap;\n}\n.tinymce-mobile-icon-arrow-back::before {\n content: \"\\e5cd\";\n}\n.tinymce-mobile-icon-image::before {\n content: \"\\e412\";\n}\n.tinymce-mobile-icon-cancel-circle::before {\n content: \"\\e5c9\";\n}\n.tinymce-mobile-icon-full-dot::before {\n content: \"\\e061\";\n}\n.tinymce-mobile-icon-align-center::before {\n content: \"\\e234\";\n}\n.tinymce-mobile-icon-align-left::before {\n content: \"\\e236\";\n}\n.tinymce-mobile-icon-align-right::before {\n content: \"\\e237\";\n}\n.tinymce-mobile-icon-bold::before {\n content: \"\\e238\";\n}\n.tinymce-mobile-icon-italic::before {\n content: \"\\e23f\";\n}\n.tinymce-mobile-icon-unordered-list::before {\n content: \"\\e241\";\n}\n.tinymce-mobile-icon-ordered-list::before {\n content: \"\\e242\";\n}\n.tinymce-mobile-icon-font-size::before {\n content: \"\\e245\";\n}\n.tinymce-mobile-icon-underline::before {\n content: \"\\e249\";\n}\n.tinymce-mobile-icon-link::before {\n content: \"\\e157\";\n}\n.tinymce-mobile-icon-unlink::before {\n content: \"\\eca2\";\n}\n.tinymce-mobile-icon-color::before {\n content: \"\\e891\";\n}\n.tinymce-mobile-icon-previous::before {\n content: \"\\e314\";\n}\n.tinymce-mobile-icon-next::before {\n content: \"\\e315\";\n}\n.tinymce-mobile-icon-large-font::before,\n.tinymce-mobile-icon-style-formats::before {\n content: \"\\e264\";\n}\n.tinymce-mobile-icon-undo::before {\n content: \"\\e166\";\n}\n.tinymce-mobile-icon-redo::before {\n content: \"\\e15a\";\n}\n.tinymce-mobile-icon-removeformat::before {\n content: \"\\e239\";\n}\n.tinymce-mobile-icon-small-font::before {\n content: \"\\e906\";\n}\n.tinymce-mobile-icon-readonly-back::before,\n.tinymce-mobile-format-matches::after {\n content: \"\\e5ca\";\n}\n.tinymce-mobile-icon-small-heading::before {\n content: \"small\";\n}\n.tinymce-mobile-icon-large-heading::before {\n content: \"large\";\n}\n.tinymce-mobile-icon-small-heading::before,\n.tinymce-mobile-icon-large-heading::before {\n font-family: sans-serif;\n font-size: 80%;\n}\n.tinymce-mobile-mask-edit-icon::before {\n content: \"\\e254\";\n}\n.tinymce-mobile-icon-back::before {\n content: \"\\e5c4\";\n}\n.tinymce-mobile-icon-heading::before {\n /* TODO: Translate */\n content: \"Headings\";\n font-family: sans-serif;\n font-size: 80%;\n font-weight: bold;\n}\n.tinymce-mobile-icon-h1::before {\n content: \"H1\";\n font-weight: bold;\n}\n.tinymce-mobile-icon-h2::before {\n content: \"H2\";\n font-weight: bold;\n}\n.tinymce-mobile-icon-h3::before {\n content: \"H3\";\n font-weight: bold;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {\n align-items: center;\n display: flex;\n justify-content: center;\n background: rgba(51, 51, 51, 0.5);\n height: 100%;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {\n align-items: center;\n border-radius: 50%;\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n font-size: 1em;\n justify-content: space-between;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {\n align-items: center;\n display: flex;\n justify-content: center;\n border-radius: 50%;\n height: 2.1em;\n width: 2.1em;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {\n align-items: center;\n display: flex;\n justify-content: center;\n flex-direction: column;\n font-size: 1em;\n}\n@media only screen and (min-device-width:700px) {\n .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {\n font-size: 1.2em;\n }\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {\n align-items: center;\n display: flex;\n justify-content: center;\n border-radius: 50%;\n height: 2.1em;\n width: 2.1em;\n background-color: white;\n color: #207ab7;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {\n content: \"\\e900\";\n font-family: 'tinymce-mobile', sans-serif;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {\n z-index: 2;\n}\n.tinymce-mobile-android-container.tinymce-mobile-android-maximized {\n background: #ffffff;\n border: none;\n bottom: 0;\n display: flex;\n flex-direction: column;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n}\n.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {\n position: relative;\n}\n.tinymce-mobile-android-container .tinymce-mobile-editor-socket {\n display: flex;\n flex-grow: 1;\n}\n.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {\n display: flex !important;\n flex-grow: 1;\n height: auto !important;\n}\n.tinymce-mobile-android-scroll-reload {\n overflow: hidden;\n}\n:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {\n margin-top: 23px;\n}\n.tinymce-mobile-toolstrip {\n background: #fff;\n display: flex;\n flex: 0 0 auto;\n z-index: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {\n align-items: center;\n background-color: #fff;\n border-bottom: 1px solid #cccccc;\n display: flex;\n flex: 1;\n height: 2.5em;\n width: 100%;\n /* Make it no larger than the toolstrip, so that it needs to scroll */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {\n align-items: center;\n display: flex;\n height: 100%;\n flex-shrink: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {\n background: #f44336;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {\n flex-grow: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {\n align-items: center;\n display: flex;\n height: 80%;\n margin-left: 2px;\n margin-right: 2px;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {\n background: #c8cbcf;\n color: #cccccc;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {\n background: #207ab7;\n color: #eceff1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {\n /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n padding-bottom: 0.4em;\n padding-top: 0.4em;\n /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */\n /* For widgets like the colour picker, use the whole height */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {\n display: flex;\n min-height: 1.5em;\n overflow: hidden;\n padding-left: 0;\n padding-right: 0;\n position: relative;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {\n display: flex;\n height: 100%;\n transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {\n display: flex;\n flex: 0 0 auto;\n justify-content: space-between;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {\n font-family: Sans-serif;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {\n display: flex;\n flex-grow: 1;\n position: relative;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {\n -ms-grid-row-align: center;\n align-self: center;\n background: inherit;\n border: none;\n border-radius: 50%;\n color: #888;\n font-size: 0.6em;\n font-weight: bold;\n height: 100%;\n padding-right: 2px;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {\n display: none;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {\n align-items: center;\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {\n align-items: center;\n display: flex;\n font-weight: bold;\n height: 100%;\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {\n visibility: hidden;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {\n color: #cccccc;\n font-size: 10px;\n line-height: 10px;\n margin: 0 2px;\n padding-top: 3px;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {\n color: #c8cbcf;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {\n margin-left: 0.5em;\n margin-right: 0.9em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {\n margin-left: 0.9em;\n margin-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {\n display: flex;\n flex: 1;\n margin-left: 0;\n margin-right: 0;\n padding: 0.28em 0;\n position: relative;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {\n background: #cccccc;\n display: flex;\n flex: 1;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {\n padding-left: 2em;\n padding-right: 2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {\n background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);\n display: flex;\n flex: 1;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {\n /* Not part of theming */\n background: black;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n width: 1.2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {\n /* Not part of theming */\n background: white;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n width: 1.2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {\n /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave\n * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is\n * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without\n * this approach.\n */\n align-items: center;\n background-clip: padding-box;\n background-color: #455a64;\n border: 0.5em solid rgba(136, 136, 136, 0);\n border-radius: 3em;\n bottom: 0;\n color: #fff;\n display: flex;\n height: 0.5em;\n justify-content: center;\n left: -10px;\n margin: auto;\n position: absolute;\n top: 0;\n transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);\n width: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {\n border: 0.5em solid rgba(136, 136, 136, 0.39);\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {\n flex-direction: column;\n justify-content: center;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {\n align-items: center;\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {\n background: #ffffff;\n border: none;\n border-radius: 0;\n color: #455a64;\n flex-grow: 1;\n font-size: 0.85em;\n padding-bottom: 0.1em;\n padding-left: 5px;\n padding-top: 0.1em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {\n /* WebKit, Blink, Edge */\n color: #888;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {\n /* WebKit, Blink, Edge */\n color: #888;\n}\n/* dropup */\n.tinymce-mobile-dropup {\n background: white;\n display: flex;\n overflow: hidden;\n width: 100%;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {\n transition: height 0.3s ease-out;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {\n transition: height 0.3s ease-in;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {\n flex-grow: 0;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {\n flex-grow: 1;\n}\n/* TODO min-height for device size and orientation */\n.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 200px;\n}\n@media only screen and (orientation: landscape) {\n .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 200px;\n }\n}\n@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {\n .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 150px;\n }\n}\n/* styles menu */\n.tinymce-mobile-styles-menu {\n font-family: sans-serif;\n outline: 4px solid black;\n overflow: hidden;\n position: relative;\n width: 100%;\n}\n.tinymce-mobile-styles-menu [role=\"menu\"] {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: absolute;\n width: 100%;\n}\n.tinymce-mobile-styles-menu [role=\"menu\"].transitioning {\n transition: transform 0.5s ease-in-out;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {\n border-bottom: 1px solid #ddd;\n color: #455a64;\n cursor: pointer;\n display: flex;\n padding: 1em 1em;\n position: relative;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {\n color: #455a64;\n content: \"\\e314\";\n font-family: 'tinymce-mobile', sans-serif;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {\n color: #455a64;\n content: \"\\e315\";\n font-family: 'tinymce-mobile', sans-serif;\n padding-left: 1em;\n padding-right: 1em;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {\n font-family: 'tinymce-mobile', sans-serif;\n padding-left: 1em;\n padding-right: 1em;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {\n align-items: center;\n background: #fff;\n border-top: #455a64;\n color: #455a64;\n display: flex;\n min-height: 2.5em;\n padding-left: 1em;\n padding-right: 1em;\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"before\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"before\"] {\n transform: translate(-100%);\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"current\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"current\"] {\n transform: translate(0%);\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"after\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"after\"] {\n transform: translate(100%);\n}\n@font-face {\n font-family: 'tinymce-mobile';\n font-style: normal;\n font-weight: normal;\n src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');\n}\n@media (min-device-width: 700px) {\n .tinymce-mobile-outer-container,\n .tinymce-mobile-outer-container input {\n font-size: 25px;\n }\n}\n@media (max-device-width: 700px) {\n .tinymce-mobile-outer-container,\n .tinymce-mobile-outer-container input {\n font-size: 18px;\n }\n}\n.tinymce-mobile-icon {\n font-family: 'tinymce-mobile', sans-serif;\n}\n.mixin-flex-and-centre {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.mixin-flex-bar {\n align-items: center;\n display: flex;\n height: 100%;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {\n background-color: #fff;\n width: 100%;\n}\n.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */\n background-color: #207ab7;\n border-radius: 50%;\n bottom: 1em;\n color: white;\n font-size: 1em;\n height: 2.1em;\n position: fixed;\n right: 2em;\n width: 2.1em;\n align-items: center;\n display: flex;\n justify-content: center;\n}\n@media only screen and (min-device-width:700px) {\n .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n font-size: 1.2em;\n }\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {\n height: 300px;\n overflow: hidden;\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {\n height: 100%;\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {\n display: none;\n}\n/*\n Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets\n increased and the whole body becomes scrollable. It's important!\n */\ninput[type=\"file\"]::-webkit-file-upload-button {\n display: none;\n}\n@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {\n .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n bottom: 50%;\n }\n}\n"]} \ No newline at end of file +{"version":3,"sources":["ui/default/skin.mobile.css"],"names":[],"mappings":";;;;;;AAOA,gCACE,IAAK,QACL,QAAS,MAEX,kCACE,OAAQ,EACR,WAAY,QACZ,OAAQ,QACR,MAAO,KACP,YAAa,EACb,OAAQ,EACR,QAAS,EACT,QAAS,EACT,4BAA6B,YAE7B,YAAa,KACb,YAAa,OAEf,wCACE,QAAS,QAEX,mCACE,QAAS,QAEX,2CACE,QAAS,QAEX,sCACE,QAAS,QAEX,0CACE,QAAS,QAEX,wCACE,QAAS,QAEX,yCACE,QAAS,QAEX,kCACE,QAAS,QAEX,oCACE,QAAS,QAEX,4CACE,QAAS,QAEX,0CACE,QAAS,QAEX,uCACE,QAAS,QAEX,uCACE,QAAS,QAEX,kCACE,QAAS,QAEX,oCACE,QAAS,QAEX,mCACE,QAAS,QAEX,sCACE,QAAS,QAEX,kCACE,QAAS,QAEX,wCACA,2CACE,QAAS,QAEX,kCACE,QAAS,QAEX,kCACE,QAAS,QAEX,0CACE,QAAS,QAEX,wCACE,QAAS,QAGX,sCADA,2CAEE,QAAS,QAEX,2CACE,QAAS,QAEX,2CACE,QAAS,QAGX,2CADA,2CAEE,YAAa,WACb,UAAW,IAEb,uCACE,QAAS,QAEX,kCACE,QAAS,QAEX,qCAEE,QAAS,WACT,YAAa,WACb,UAAW,IACX,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,gCACE,QAAS,KACT,YAAa,IAEf,8DACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,WAAY,kBACZ,OAAQ,KACR,SAAU,SACV,IAAK,EACL,MAAO,KAET,gGACE,YAAa,OACb,cAAe,IACf,QAAS,KACT,eAAgB,OAChB,YAAa,WACb,UAAW,IACX,gBAAiB,cAEnB,iHACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,cAAe,IACf,OAAQ,MACR,MAAO,MAET,oIACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,eAAgB,OAChB,UAAW,IAEb,gDACE,oIACE,UAAW,OAGf,kKACE,YAAa,OACb,QAAS,KACT,gBAAiB,OACjB,cAAe,IACf,OAAQ,MACR,MAAO,MACP,iBAAkB,KAClB,MAAO,QAET,0KACE,QAAS,QACT,YAAa,cAAgB,CAAE,WAEjC,8MACE,QAAS,EAEX,mEACE,WAAY,KACZ,OAAQ,KACR,OAAQ,EACR,QAAS,KACT,eAAgB,OAChB,KAAM,EACN,SAAU,MACV,MAAO,EACP,IAAK,EAEP,yEACE,SAAU,SAEZ,gEACE,QAAS,KACT,UAAW,EAEb,uEACE,QAAS,eACT,UAAW,EACX,OAAQ,eAEV,sCACE,SAAU,OAEZ,sFACE,WAAY,KAEd,0BACE,WAAY,KACZ,QAAS,KACT,KAAM,EAAE,EAAE,KACV,QAAS,EAEX,kDACE,YAAa,OACb,iBAAkB,KAClB,cAAe,IAAI,MAAM,KACzB,QAAS,KACT,KAAM,EACN,OAAQ,MACR,MAAO,KAGT,qHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,YAAa,EAEf,yHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EAER,mJACE,WAAY,QAEd,6JACE,UAAW,EAEb,wJACE,aAAc,KACd,cAAe,KAEjB,sLACE,YAAa,OACb,QAAS,KACT,OAAQ,IACR,YAAa,IACb,aAAc,IAEhB,6NACE,WAAY,QACZ,MAAO,KAET,mIACA,kIACE,WAAY,QACZ,MAAO,QAKT,+GACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EACN,eAAgB,KAChB,YAAa,KAIf,iJACE,QAAS,KACT,WAAY,MACZ,SAAU,OACV,aAAc,EACd,cAAe,EACf,SAAU,SACV,MAAO,KAET,yLACE,QAAS,KACT,OAAQ,KACR,WAAY,KAAK,uBAA2B,KAC5C,MAAO,KAET,kOACE,QAAS,KACT,KAAM,EAAE,EAAE,KACV,gBAAiB,cACjB,MAAO,KAET,wOACE,YAAa,WAEf,kQACE,QAAS,KACT,UAAW,EACX,SAAU,SAEZ,oSACE,mBAAoB,OAChB,WAAY,OAChB,WAAY,QACZ,OAAQ,KACR,cAAe,IACf,MAAO,KACP,UAAW,KACX,YAAa,IACb,OAAQ,KACR,cAAe,IACf,SAAU,SACV,MAAO,EAET,yUACE,QAAS,KAGX,4PADA,gQAEE,YAAa,OACb,QAAS,KAGX,oQADA,wQAEE,YAAa,OACb,QAAS,KACT,YAAa,IACb,OAAQ,KACR,aAAc,KACd,cAAe,KAGjB,+SADA,mTAEE,WAAY,OAEd,wIACE,MAAO,KACP,UAAW,KACX,YAAa,KACb,OAAQ,EAAE,IACV,YAAa,IAEf,kKACE,MAAO,QAET,uJACA,0JACE,YAAa,KACb,aAAc,KAEhB,uJACA,0JACE,YAAa,KACb,aAAc,KAEhB,sIACE,QAAS,KACT,KAAM,EACN,YAAa,EACb,aAAc,EACd,QAAS,MAAO,EAChB,SAAU,SAEZ,4KACE,YAAa,OACb,QAAS,KACT,UAAW,EACX,OAAQ,KAEV,6MACE,WAAY,KACZ,QAAS,KACT,KAAM,EACN,OAAQ,KACR,cAAe,KACf,WAAY,KAEd,0KACE,aAAc,IACd,cAAe,IAEjB,oNACE,YAAa,OACb,QAAS,KACT,UAAW,EACX,OAAQ,KAEV,oPACE,WAAY,+FACZ,QAAS,KACT,KAAM,EACN,OAAQ,KACR,cAAe,KACf,WAAY,KAEd,2MAEE,WAAY,KACZ,OAAQ,KACR,cAAe,KACf,WAAY,KACZ,MAAO,MAET,2MAEE,WAAY,KACZ,OAAQ,KACR,cAAe,KACf,WAAY,KACZ,MAAO,MAET,mKAME,YAAa,OACb,gBAAiB,YACjB,iBAAkB,QAClB,OAAQ,KAAM,MAAM,oBACpB,cAAe,IACf,OAAQ,EACR,MAAO,KACP,QAAS,KACT,OAAQ,KACR,gBAAiB,OACjB,KAAM,MACN,OAAQ,KACR,SAAU,SACV,IAAK,EACL,WAAY,OAAO,MAAM,4BACzB,MAAO,KAET,+LACE,OAAQ,KAAM,MAAM,sBAEtB,kJACA,mHACE,YAAa,OACb,QAAS,KACT,OAAQ,KACR,KAAM,EAER,kJACE,eAAgB,OAChB,gBAAiB,OAEnB,kJACE,YAAa,OACb,QAAS,KAEX,yLACE,OAAQ,KAEV,6IACE,QAAS,KAEX,qHACE,WAAY,KACZ,OAAQ,KACR,cAAe,EACf,MAAO,QACP,UAAW,EACX,UAAW,MACX,eAAgB,KAChB,aAAc,IACd,YAAa,KAEf,gJAEE,MAAO,KAET,kIAEE,MAAO,KAGT,uBACE,WAAY,KACZ,QAAS,KACT,SAAU,OACV,MAAO,KAET,uDACE,WAAY,OAAO,IAAK,SAE1B,qDACE,WAAY,OAAO,IAAK,QAE1B,oDACE,UAAW,EAEb,sFACE,UAAW,EAGb,wFACE,WAAY,MAEd,+CACE,0DACE,WAAY,OAGhB,4GACE,wFACE,WAAY,OAIhB,4BACE,YAAa,WACb,QAAS,IAAI,MAAM,KACnB,SAAU,OACV,SAAU,SACV,MAAO,KAET,wCACE,QAAS,KACT,eAAgB,OAChB,OAAQ,KACR,SAAU,SACV,MAAO,KAET,sDACE,WAAY,UAAU,IAAK,YAE7B,wDACE,cAAe,IAAI,MAAM,KACzB,MAAO,QACP,OAAQ,QACR,QAAS,KACT,QAAS,IAAI,IACb,SAAU,SAEZ,0GACE,MAAO,QACP,QAAS,QACT,YAAa,cAAgB,CAAE,WAEjC,kGACE,MAAO,QACP,QAAS,QACT,YAAa,cAAgB,CAAE,WAC/B,aAAc,IACd,cAAe,IACf,SAAU,SACV,MAAO,EAET,6FACE,YAAa,cAAgB,CAAE,WAC/B,aAAc,IACd,cAAe,IACf,SAAU,SACV,MAAO,EAGT,6DADA,6DAEE,YAAa,OACb,WAAY,KACZ,WAAY,QACZ,MAAO,QACP,QAAS,KACT,WAAY,MACZ,aAAc,IACd,cAAe,IAEjB,8FACA,8DACE,UAAW,iBAEb,+FACA,+DACE,UAAW,aAEb,6FACA,6DACE,UAAW,gBAEb,WACE,YAAa,eACb,WAAY,OACZ,YAAa,IACb,IAAK,sCAAwC,eAE/C,gCACE,gCACA,sCACE,UAAW,MAGf,gCACE,gCACA,sCACE,UAAW,MAGf,qBACE,YAAa,cAAgB,CAAE,WAEjC,uBACE,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,gBACE,YAAa,OACb,QAAS,KACT,OAAQ,KAEV,qEACE,iBAAkB,KAClB,MAAO,KAET,6DAEE,iBAAkB,QAClB,cAAe,IACf,OAAQ,IACR,MAAO,KACP,UAAW,IACX,OAAQ,MACR,SAAU,MACV,MAAO,IACP,MAAO,MACP,YAAa,OACb,QAAS,KACT,gBAAiB,OAEnB,gDACE,6DACE,UAAW,OAGf,wGACE,OAAQ,MACR,SAAU,OAEZ,+GACE,OAAQ,KAEV,oGACE,QAAS,KAMX,6CACE,QAAS,KAEX,4GACE,2FACE,OAAQ","file":"skin.mobile.min.css","sourcesContent":["/**\n * Copyright (c) Tiny Technologies, Inc. All rights reserved.\n * Licensed under the LGPL or a commercial license.\n * For LGPL see License.txt in the project root for license information.\n * For commercial licenses see https://www.tiny.cloud/\n */\n/* RESET all the things! */\n.tinymce-mobile-outer-container {\n all: initial;\n display: block;\n}\n.tinymce-mobile-outer-container * {\n border: 0;\n box-sizing: initial;\n cursor: inherit;\n float: none;\n line-height: 1;\n margin: 0;\n outline: 0;\n padding: 0;\n -webkit-tap-highlight-color: transparent;\n /* TBIO-3691, stop the gray flicker on touch. */\n text-shadow: none;\n white-space: nowrap;\n}\n.tinymce-mobile-icon-arrow-back::before {\n content: \"\\e5cd\";\n}\n.tinymce-mobile-icon-image::before {\n content: \"\\e412\";\n}\n.tinymce-mobile-icon-cancel-circle::before {\n content: \"\\e5c9\";\n}\n.tinymce-mobile-icon-full-dot::before {\n content: \"\\e061\";\n}\n.tinymce-mobile-icon-align-center::before {\n content: \"\\e234\";\n}\n.tinymce-mobile-icon-align-left::before {\n content: \"\\e236\";\n}\n.tinymce-mobile-icon-align-right::before {\n content: \"\\e237\";\n}\n.tinymce-mobile-icon-bold::before {\n content: \"\\e238\";\n}\n.tinymce-mobile-icon-italic::before {\n content: \"\\e23f\";\n}\n.tinymce-mobile-icon-unordered-list::before {\n content: \"\\e241\";\n}\n.tinymce-mobile-icon-ordered-list::before {\n content: \"\\e242\";\n}\n.tinymce-mobile-icon-font-size::before {\n content: \"\\e245\";\n}\n.tinymce-mobile-icon-underline::before {\n content: \"\\e249\";\n}\n.tinymce-mobile-icon-link::before {\n content: \"\\e157\";\n}\n.tinymce-mobile-icon-unlink::before {\n content: \"\\eca2\";\n}\n.tinymce-mobile-icon-color::before {\n content: \"\\e891\";\n}\n.tinymce-mobile-icon-previous::before {\n content: \"\\e314\";\n}\n.tinymce-mobile-icon-next::before {\n content: \"\\e315\";\n}\n.tinymce-mobile-icon-large-font::before,\n.tinymce-mobile-icon-style-formats::before {\n content: \"\\e264\";\n}\n.tinymce-mobile-icon-undo::before {\n content: \"\\e166\";\n}\n.tinymce-mobile-icon-redo::before {\n content: \"\\e15a\";\n}\n.tinymce-mobile-icon-removeformat::before {\n content: \"\\e239\";\n}\n.tinymce-mobile-icon-small-font::before {\n content: \"\\e906\";\n}\n.tinymce-mobile-icon-readonly-back::before,\n.tinymce-mobile-format-matches::after {\n content: \"\\e5ca\";\n}\n.tinymce-mobile-icon-small-heading::before {\n content: \"small\";\n}\n.tinymce-mobile-icon-large-heading::before {\n content: \"large\";\n}\n.tinymce-mobile-icon-small-heading::before,\n.tinymce-mobile-icon-large-heading::before {\n font-family: sans-serif;\n font-size: 80%;\n}\n.tinymce-mobile-mask-edit-icon::before {\n content: \"\\e254\";\n}\n.tinymce-mobile-icon-back::before {\n content: \"\\e5c4\";\n}\n.tinymce-mobile-icon-heading::before {\n /* TODO: Translate */\n content: \"Headings\";\n font-family: sans-serif;\n font-size: 80%;\n font-weight: bold;\n}\n.tinymce-mobile-icon-h1::before {\n content: \"H1\";\n font-weight: bold;\n}\n.tinymce-mobile-icon-h2::before {\n content: \"H2\";\n font-weight: bold;\n}\n.tinymce-mobile-icon-h3::before {\n content: \"H3\";\n font-weight: bold;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {\n align-items: center;\n display: flex;\n justify-content: center;\n background: rgba(51, 51, 51, 0.5);\n height: 100%;\n position: absolute;\n top: 0;\n width: 100%;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {\n align-items: center;\n border-radius: 50%;\n display: flex;\n flex-direction: column;\n font-family: sans-serif;\n font-size: 1em;\n justify-content: space-between;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {\n align-items: center;\n display: flex;\n justify-content: center;\n border-radius: 50%;\n height: 2.1em;\n width: 2.1em;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {\n align-items: center;\n display: flex;\n justify-content: center;\n flex-direction: column;\n font-size: 1em;\n}\n@media only screen and (min-device-width:700px) {\n .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {\n font-size: 1.2em;\n }\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {\n align-items: center;\n display: flex;\n justify-content: center;\n border-radius: 50%;\n height: 2.1em;\n width: 2.1em;\n background-color: white;\n color: #207ab7;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {\n content: \"\\e900\";\n font-family: 'tinymce-mobile', sans-serif;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {\n z-index: 2;\n}\n.tinymce-mobile-android-container.tinymce-mobile-android-maximized {\n background: #ffffff;\n border: none;\n bottom: 0;\n display: flex;\n flex-direction: column;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n}\n.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {\n position: relative;\n}\n.tinymce-mobile-android-container .tinymce-mobile-editor-socket {\n display: flex;\n flex-grow: 1;\n}\n.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {\n display: flex !important;\n flex-grow: 1;\n height: auto !important;\n}\n.tinymce-mobile-android-scroll-reload {\n overflow: hidden;\n}\n:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {\n margin-top: 23px;\n}\n.tinymce-mobile-toolstrip {\n background: #fff;\n display: flex;\n flex: 0 0 auto;\n z-index: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {\n align-items: center;\n background-color: #fff;\n border-bottom: 1px solid #cccccc;\n display: flex;\n flex: 1;\n height: 2.5em;\n width: 100%;\n /* Make it no larger than the toolstrip, so that it needs to scroll */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {\n align-items: center;\n display: flex;\n height: 100%;\n flex-shrink: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {\n background: #f44336;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {\n flex-grow: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {\n align-items: center;\n display: flex;\n height: 80%;\n margin-left: 2px;\n margin-right: 2px;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {\n background: #c8cbcf;\n color: #cccccc;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {\n background: #207ab7;\n color: #eceff1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {\n /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n padding-bottom: 0.4em;\n padding-top: 0.4em;\n /* Make any buttons aplaytping on the left and right display in the centre (e.g. color edges) */\n /* For widgets like the colour picker, use the whole height */\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {\n display: flex;\n min-height: 1.5em;\n overflow: hidden;\n padding-left: 0;\n padding-right: 0;\n position: relative;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {\n display: flex;\n height: 100%;\n transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {\n display: flex;\n flex: 0 0 auto;\n justify-content: space-between;\n width: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {\n font-family: Sans-serif;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {\n display: flex;\n flex-grow: 1;\n position: relative;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {\n -ms-grid-row-align: center;\n align-self: center;\n background: inherit;\n border: none;\n border-radius: 50%;\n color: #888;\n font-size: 0.6em;\n font-weight: bold;\n height: 100%;\n padding-right: 2px;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {\n display: none;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {\n align-items: center;\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {\n align-items: center;\n display: flex;\n font-weight: bold;\n height: 100%;\n padding-left: 0.5em;\n padding-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {\n visibility: hidden;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {\n color: #cccccc;\n font-size: 10px;\n line-height: 10px;\n margin: 0 2px;\n padding-top: 3px;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {\n color: #c8cbcf;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {\n margin-left: 0.5em;\n margin-right: 0.9em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {\n margin-left: 0.9em;\n margin-right: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {\n display: flex;\n flex: 1;\n margin-left: 0;\n margin-right: 0;\n padding: 0.28em 0;\n position: relative;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {\n background: #cccccc;\n display: flex;\n flex: 1;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {\n padding-left: 2em;\n padding-right: 2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {\n align-items: center;\n display: flex;\n flex-grow: 1;\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {\n background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);\n display: flex;\n flex: 1;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {\n /* Not part of theming */\n background: black;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n width: 1.2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {\n /* Not part of theming */\n background: white;\n height: 0.2em;\n margin-bottom: 0.3em;\n margin-top: 0.3em;\n width: 1.2em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {\n /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave\n * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is\n * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without\n * this approach.\n */\n align-items: center;\n background-clip: padding-box;\n background-color: #455a64;\n border: 0.5em solid rgba(136, 136, 136, 0);\n border-radius: 3em;\n bottom: 0;\n color: #fff;\n display: flex;\n height: 0.5em;\n justify-content: center;\n left: -10px;\n margin: auto;\n position: absolute;\n top: 0;\n transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);\n width: 0.5em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {\n border: 0.5em solid rgba(136, 136, 136, 0.39);\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {\n align-items: center;\n display: flex;\n height: 100%;\n flex: 1;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {\n flex-direction: column;\n justify-content: center;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {\n align-items: center;\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {\n height: 100%;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {\n display: flex;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {\n background: #ffffff;\n border: none;\n border-radius: 0;\n color: #455a64;\n flex-grow: 1;\n font-size: 0.85em;\n padding-bottom: 0.1em;\n padding-left: 5px;\n padding-top: 0.1em;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {\n /* WebKit, Blink, Edge */\n color: #888;\n}\n.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {\n /* WebKit, Blink, Edge */\n color: #888;\n}\n/* dropup */\n.tinymce-mobile-dropup {\n background: white;\n display: flex;\n overflow: hidden;\n width: 100%;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {\n transition: height 0.3s ease-out;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {\n transition: height 0.3s ease-in;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {\n flex-grow: 0;\n}\n.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {\n flex-grow: 1;\n}\n/* TODO min-height for device size and orientation */\n.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 200px;\n}\n@media only screen and (orientation: landscape) {\n .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 200px;\n }\n}\n@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {\n .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {\n min-height: 150px;\n }\n}\n/* styles menu */\n.tinymce-mobile-styles-menu {\n font-family: sans-serif;\n outline: 4px solid black;\n overflow: hidden;\n position: relative;\n width: 100%;\n}\n.tinymce-mobile-styles-menu [role=\"menu\"] {\n display: flex;\n flex-direction: column;\n height: 100%;\n position: absolute;\n width: 100%;\n}\n.tinymce-mobile-styles-menu [role=\"menu\"].transitioning {\n transition: transform 0.5s ease-in-out;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {\n border-bottom: 1px solid #ddd;\n color: #455a64;\n cursor: pointer;\n display: flex;\n padding: 1em 1em;\n position: relative;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {\n color: #455a64;\n content: \"\\e314\";\n font-family: 'tinymce-mobile', sans-serif;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {\n color: #455a64;\n content: \"\\e315\";\n font-family: 'tinymce-mobile', sans-serif;\n padding-left: 1em;\n padding-right: 1em;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {\n font-family: 'tinymce-mobile', sans-serif;\n padding-left: 1em;\n padding-right: 1em;\n position: absolute;\n right: 0;\n}\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,\n.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {\n align-items: center;\n background: #fff;\n border-top: #455a64;\n color: #455a64;\n display: flex;\n min-height: 2.5em;\n padding-left: 1em;\n padding-right: 1em;\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"before\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"before\"] {\n transform: translate(-100%);\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"current\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"current\"] {\n transform: translate(0%);\n}\n.tinymce-mobile-styles-menu [data-transitioning-destination=\"after\"][data-transitioning-state],\n.tinymce-mobile-styles-menu [data-transitioning-state=\"after\"] {\n transform: translate(100%);\n}\n@font-face {\n font-family: 'tinymce-mobile';\n font-style: normal;\n font-weight: normal;\n src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');\n}\n@media (min-device-width: 700px) {\n .tinymce-mobile-outer-container,\n .tinymce-mobile-outer-container input {\n font-size: 25px;\n }\n}\n@media (max-device-width: 700px) {\n .tinymce-mobile-outer-container,\n .tinymce-mobile-outer-container input {\n font-size: 18px;\n }\n}\n.tinymce-mobile-icon {\n font-family: 'tinymce-mobile', sans-serif;\n}\n.mixin-flex-and-centre {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n.mixin-flex-bar {\n align-items: center;\n display: flex;\n height: 100%;\n}\n.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {\n background-color: #fff;\n width: 100%;\n}\n.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n /* Note, on the iPod touch in landscape, this isn't visible when the navbar aplaytps */\n background-color: #207ab7;\n border-radius: 50%;\n bottom: 1em;\n color: white;\n font-size: 1em;\n height: 2.1em;\n position: fixed;\n right: 2em;\n width: 2.1em;\n align-items: center;\n display: flex;\n justify-content: center;\n}\n@media only screen and (min-device-width:700px) {\n .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n font-size: 1.2em;\n }\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {\n height: 300px;\n overflow: hidden;\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {\n height: 100%;\n}\n.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {\n display: none;\n}\n/*\n Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets\n increased and the whole body becomes scrollable. It's important!\n */\ninput[type=\"file\"]::-webkit-file-upload-button {\n display: none;\n}\n@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {\n .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {\n bottom: 50%;\n }\n}\n"]} \ No newline at end of file diff --git a/public/static/component/laytp/module/tinymce/tinymce/themes/mobile/theme.js b/public/static/component/laytp/module/tinymce/tinymce/themes/mobile/theme.js index 1f1ec5592e9c3bc4a5b2aa38de3b041b9cefd17e..be00d0bb1a20fd7127f2734362c89c9532ecda86 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/themes/mobile/theme.js +++ b/public/static/component/laytp/module/tinymce/tinymce/themes/mobile/theme.js @@ -9536,7 +9536,7 @@ var styleselect = function () { return forToolbar('style-formats', function (button) { editor.fire('toReading'); - realm.dropup.appear(styleFormatsMenu, Toggling.on, button); + realm.dropup.aplaytp(styleFormatsMenu, Toggling.on, button); }, derive$1([ Toggling.config({ toggleClass: resolve('toolbar-button-selected'), @@ -11185,11 +11185,11 @@ } }), orientation(function (_component, _data) { - disappear(noop); + disaplaytp(noop); }) ]) })); - var appear = function (menu, update, component) { + var aplaytp = function (menu, update, component) { if (Sliding.hasShrunk(dropup) === true && Sliding.isTransitioning(dropup) === false) { window.requestAnimationFrame(function () { update(component); @@ -11198,15 +11198,15 @@ }); } }; - var disappear = function (onReadyToShrink) { + var disaplaytp = function (onReadyToShrink) { window.requestAnimationFrame(function () { onReadyToShrink(); Sliding.shrink(dropup); }); }; return { - appear: appear, - disappear: disappear, + aplaytp: aplaytp, + disaplaytp: disaplaytp, component: dropup, element: dropup.element }; @@ -13501,7 +13501,7 @@ } }); var hideDropup = function () { - realm.dropup.disappear(function () { + realm.dropup.disaplaytp(function () { realm.system.broadcastOn([dropupDismissed], {}); }); }; diff --git a/public/static/component/laytp/module/tinymce/tinymce/themes/silver/theme.js b/public/static/component/laytp/module/tinymce/tinymce/themes/silver/theme.js index 920f4fefe5ac84e8fa678e47679e1ccbd3833b88..987e587eff18d4e1231c18ab4c0a06badf73b931 100644 --- a/public/static/component/laytp/module/tinymce/tinymce/themes/silver/theme.js +++ b/public/static/component/laytp/module/tinymce/tinymce/themes/silver/theme.js @@ -25728,14 +25728,14 @@ { absolute: ['positionCss'] }, { fixed: ['positionCss'] } ]); - var appear = function (component, contextualInfo) { + var aplaytp = function (component, contextualInfo) { var elem = component.element; add$2(elem, contextualInfo.transitionClass); remove$4(elem, contextualInfo.fadeOutClass); add$2(elem, contextualInfo.fadeInClass); contextualInfo.onShow(component); }; - var disappear = function (component, contextualInfo) { + var disaplaytp = function (component, contextualInfo) { var elem = component.element; add$2(elem, contextualInfo.transitionClass); remove$4(elem, contextualInfo.fadeInClass); @@ -25860,7 +25860,7 @@ add$3(component.element, [contextInfo.fadeOutClass]); contextInfo.onHide(component); } else { - var method = isVisible ? appear : disappear; + var method = isVisible ? aplaytp : disaplaytp; method(component, contextInfo); } } diff --git a/public/static/component/laytp/module/toast.js b/public/static/component/laytp/module/toast.js new file mode 100644 index 0000000000000000000000000000000000000000..57c8ca5c7c9cc4dff04a7daf5d8aa25a2a6027f5 --- /dev/null +++ b/public/static/component/laytp/module/toast.js @@ -0,0 +1,1225 @@ +(function (root, factory) { + if(typeof define === 'function' && define.amd) { + define([], factory(root)); + } else if(typeof exports === 'object') { + module.exports = factory(root); + } else if (window.layui && layui.define) { + layui.define(function(exports){ + exports('toast',factory(root)) + }) + }else { + root.iziToast = factory(root); + } +})(typeof global !== 'undefined' ? global : window || this.window || this.global, function (root) { + + 'use strict'; + + var $iziToast = {}, + PLUGIN_NAME = 'iziToast', + BODY = document.querySelector('body'), + ISMOBILE = (/Mobi/.test(navigator.userAgent)) ? true : false, + ISCHROME = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor), + ISFIREFOX = typeof InstallTrigger !== 'undefined', + ACCEPTSTOUCH = 'ontouchstart' in document.documentElement, + POSITIONS = ['bottomRight','bottomLeft','bottomCenter','topRight','topLeft','topCenter','center'], + THEMES = { + info: { + color: 'blue', + icon: 'ico-info' + }, + success: { + color: 'green', + icon: 'ico-success' + }, + warning: { + color: 'orange', + icon: 'ico-warning' + }, + error: { + color: 'red', + icon: 'ico-error' + }, + question: { + color: 'yellow', + icon: 'ico-question' + } + }, + MOBILEWIDTH = 568, + CONFIG = {}; + + $iziToast.children = {}; + + // Default settings + var defaults = { + id: null, + class: '', + title: '', + titleColor: '', + titleSize: '', + titleLineHeight: '', + message: '', + messageColor: '', + messageSize: '', + messageLineHeight: '', + backgroundColor: '', + theme: 'light', // dark + color: '', // blue, red, green, yellow + icon: '', + iconText: '', + iconColor: '', + iconUrl: null, + image: '', + imageWidth: 50, + maxWidth: null, + zindex: null, + layout: 2, + balloon: false, + close: true, + closeOnEscape: false, + closeOnClick: false, + displayMode: 0, + position: 'topCenter', // bottomRight, bottomLeft, topRight, topLeft, topCenter, bottomCenter, center + target: '', + targetFirst: true, + timeout: 3000, // 默认3秒 + rtl: false, + animateInside: false, // 动画效果 + drag: true, + pauseOnHover: true, + resetOnHover: false, + progressBar: false, + progressBarColor: '', + progressBarEasing: 'linear', + overlay: false, + overlayClose: false, + overlayColor: 'rgba(0, 0, 0, 0.6)', + transitionIn: 'fadeInDown', // bounceInLeft, bounceInRight, bounceInUp, bounceInDown, fadeIn, fadeInDown, fadeInUp, fadeInLeft, fadeInRight, flipInX + transitionOut: 'fadeOut', // fadeOut, fadeOutUp, fadeOutDown, fadeOutLeft, fadeOutRight, flipOutX + transitionInMobile: 'bounceInDown', + transitionOutMobile: 'fadeOutUp', + buttons: {}, + inputs: {}, + onOpening: function () {}, + onOpened: function () {}, + onClosing: function () {}, + onClosed: function () {} + }; + + if(!('remove' in Element.prototype)) { + Element.prototype.remove = function() { + if(this.parentNode) { + this.parentNode.removeChild(this); + } + }; + } + + if(typeof window.CustomEvent !== 'function') { + var CustomEventPolyfill = function (event, params) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + var evt = document.createEvent('CustomEvent'); + evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); + return evt; + }; + + CustomEventPolyfill.prototype = window.Event.prototype; + + window.CustomEvent = CustomEventPolyfill; + } + + var forEach = function (collection, callback, scope) { + if(Object.prototype.toString.call(collection) === '[object Object]') { + for (var prop in collection) { + if(Object.prototype.hasOwnProperty.call(collection, prop)) { + callback.call(scope, collection[prop], prop, collection); + } + } + } else { + if(collection){ + for (var i = 0, len = collection.length; i < len; i++) { + callback.call(scope, collection[i], i, collection); + } + } + } + }; + + var extend = function (defaults, options) { + var extended = {}; + forEach(defaults, function (value, prop) { + extended[prop] = defaults[prop]; + }); + forEach(options, function (value, prop) { + extended[prop] = options[prop]; + }); + return extended; + }; + + var createFragElem = function(htmlStr) { + var frag = document.createDocumentFragment(), + temp = document.createElement('div'); + temp.innerHTML = htmlStr; + while (temp.firstChild) { + frag.appendChild(temp.firstChild); + } + return frag; + }; + + var generateId = function(params) { + var newId = btoa(encodeURIComponent(params)); + return newId.replace(/=/g, ""); + }; + + var isColor = function(color){ + if( color.substring(0,1) == '#' || color.substring(0,3) == 'rgb' || color.substring(0,3) == 'hsl' ){ + return true; + } else { + return false; + } + }; + + var isBase64 = function(str) { + try { + return btoa(atob(str)) == str; + } catch (err) { + return false; + } + }; + + var drag = function() { + + return { + move: function(toast, instance, settings, xpos) { + + var opacity, + opacityRange = 0.3, + distance = 180; + + if(xpos !== 0){ + + toast.classList.add(PLUGIN_NAME+'-dragged'); + + toast.style.transform = 'translateX('+xpos + 'px)'; + + if(xpos > 0){ + opacity = (distance-xpos) / distance; + if(opacity < opacityRange){ + instance.hide(extend(settings, { transitionOut: 'fadeOutRight', transitionOutMobile: 'fadeOutRight' }), toast, 'drag'); + } + } else { + opacity = (distance+xpos) / distance; + if(opacity < opacityRange){ + instance.hide(extend(settings, { transitionOut: 'fadeOutLeft', transitionOutMobile: 'fadeOutLeft' }), toast, 'drag'); + } + } + toast.style.opacity = opacity; + + if(opacity < opacityRange){ + + if(ISCHROME || ISFIREFOX) + toast.style.left = xpos+'px'; + + toast.parentNode.style.opacity = opacityRange; + + this.stopMoving(toast, null); + } + } + + + }, + startMoving: function(toast, instance, settings, e) { + + e = e || window.event; + var posX = ((ACCEPTSTOUCH) ? e.touches[0].clientX : e.clientX), + toastLeft = toast.style.transform.replace('px)', ''); + toastLeft = toastLeft.replace('translateX(', ''); + var offsetX = posX - toastLeft; + + if(settings.transitionIn){ + toast.classList.remove(settings.transitionIn); + } + if(settings.transitionInMobile){ + toast.classList.remove(settings.transitionInMobile); + } + toast.style.transition = ''; + + if(ACCEPTSTOUCH) { + document.ontouchmove = function(e) { + e.preventDefault(); + e = e || window.event; + var posX = e.touches[0].clientX, + finalX = posX - offsetX; + drag.move(toast, instance, settings, finalX); + }; + } else { + document.onmousemove = function(e) { + e.preventDefault(); + e = e || window.event; + var posX = e.clientX, + finalX = posX - offsetX; + drag.move(toast, instance, settings, finalX); + }; + } + + }, + stopMoving: function(toast, e) { + + if(ACCEPTSTOUCH) { + document.ontouchmove = function() {}; + } else { + document.onmousemove = function() {}; + } + + toast.style.opacity = ''; + toast.style.transform = ''; + + if(toast.classList.contains(PLUGIN_NAME+'-dragged')){ + + toast.classList.remove(PLUGIN_NAME+'-dragged'); + + toast.style.transition = 'transform 0.4s ease, opacity 0.4s ease'; + setTimeout(function() { + toast.style.transition = ''; + }, 400); + } + + } + }; + + }(); + + $iziToast.setSetting = function (ref, option, value) { + + $iziToast.children[ref][option] = value; + + }; + + $iziToast.getSetting = function (ref, option) { + + return $iziToast.children[ref][option]; + + }; + + $iziToast.destroy = function () { + + forEach(document.querySelectorAll('.'+PLUGIN_NAME+'-overlay'), function(element, index) { + element.remove(); + }); + + forEach(document.querySelectorAll('.'+PLUGIN_NAME+'-wrapper'), function(element, index) { + element.remove(); + }); + + forEach(document.querySelectorAll('.'+PLUGIN_NAME), function(element, index) { + element.remove(); + }); + + this.children = {}; + + // Remove event listeners + document.removeEventListener(PLUGIN_NAME+'-opened', {}, false); + document.removeEventListener(PLUGIN_NAME+'-opening', {}, false); + document.removeEventListener(PLUGIN_NAME+'-closing', {}, false); + document.removeEventListener(PLUGIN_NAME+'-closed', {}, false); + document.removeEventListener('keyup', {}, false); + + // Reset variables + CONFIG = {}; + }; + + /** + * Initialize Plugin + * @public + * @param {Object} options User settings + */ + $iziToast.settings = function (options) { + + // Destroy any existing initializations + $iziToast.destroy(); + + CONFIG = options; + defaults = extend(defaults, options || {}); + }; + + + /** + * Building themes functions. + * @public + * @param {Object} options User settings + */ + forEach(THEMES, function (theme, name) { + + $iziToast[name] = function (options) { + + var settings = extend(CONFIG, options || {}); + settings = extend(theme, settings || {}); + + this.show(settings); + }; + + }); + + + /** + * Do the calculation to move the progress bar + * @private + */ + $iziToast.progress = function (options, $toast, callback) { + + + var that = this, + ref = $toast.getAttribute('data-iziToast-ref'), + settings = extend(this.children[ref], options || {}), + $elem = $toast.querySelector('.'+PLUGIN_NAME+'-progressbar div'); + + return { + start: function() { + + if(typeof settings.time.REMAINING == 'undefined'){ + + $toast.classList.remove(PLUGIN_NAME+'-reseted'); + + if($elem !== null){ + $elem.style.transition = 'width '+ settings.timeout +'ms '+settings.progressBarEasing; + $elem.style.width = '0%'; + } + + settings.time.START = new Date().getTime(); + settings.time.END = settings.time.START + settings.timeout; + settings.time.TIMER = setTimeout(function() { + + clearTimeout(settings.time.TIMER); + + if(!$toast.classList.contains(PLUGIN_NAME+'-closing')){ + + that.hide(settings, $toast, 'timeout'); + + if(typeof callback === 'function'){ + callback.apply(that); + } + } + + }, settings.timeout); + that.setSetting(ref, 'time', settings.time); + } + }, + pause: function() { + + if(typeof settings.time.START !== 'undefined' && !$toast.classList.contains(PLUGIN_NAME+'-paused') && !$toast.classList.contains(PLUGIN_NAME+'-reseted')){ + + $toast.classList.add(PLUGIN_NAME+'-paused'); + + settings.time.REMAINING = settings.time.END - new Date().getTime(); + + clearTimeout(settings.time.TIMER); + + that.setSetting(ref, 'time', settings.time); + + if($elem !== null){ + var computedStyle = window.getComputedStyle($elem), + propertyWidth = computedStyle.getPropertyValue('width'); + + $elem.style.transition = 'none'; + $elem.style.width = propertyWidth; + } + + if(typeof callback === 'function'){ + setTimeout(function() { + callback.apply(that); + }, 10); + } + } + }, + resume: function() { + + if(typeof settings.time.REMAINING !== 'undefined'){ + + $toast.classList.remove(PLUGIN_NAME+'-paused'); + + if($elem !== null){ + $elem.style.transition = 'width '+ settings.time.REMAINING +'ms '+settings.progressBarEasing; + $elem.style.width = '0%'; + } + + settings.time.END = new Date().getTime() + settings.time.REMAINING; + settings.time.TIMER = setTimeout(function() { + + clearTimeout(settings.time.TIMER); + + if(!$toast.classList.contains(PLUGIN_NAME+'-closing')){ + + that.hide(settings, $toast, 'timeout'); + + if(typeof callback === 'function'){ + callback.apply(that); + } + } + + + }, settings.time.REMAINING); + + that.setSetting(ref, 'time', settings.time); + } else { + this.start(); + } + }, + reset: function(){ + + clearTimeout(settings.time.TIMER); + + delete settings.time.REMAINING; + + that.setSetting(ref, 'time', settings.time); + + $toast.classList.add(PLUGIN_NAME+'-reseted'); + + $toast.classList.remove(PLUGIN_NAME+'-paused'); + + if($elem !== null){ + $elem.style.transition = 'none'; + $elem.style.width = '100%'; + } + + if(typeof callback === 'function'){ + setTimeout(function() { + callback.apply(that); + }, 10); + } + } + }; + + }; + + + /** + * Close the specific Toast + * @public + * @param {Object} options User settings + */ + $iziToast.hide = function (options, $toast, closedBy) { + + if(typeof $toast != 'object'){ + $toast = document.querySelector($toast); + } + + var that = this, + settings = extend(this.children[$toast.getAttribute('data-iziToast-ref')], options || {}); + settings.closedBy = closedBy || null; + + delete settings.time.REMAINING; + + $toast.classList.add(PLUGIN_NAME+'-closing'); + + // Overlay + (function(){ + + var $overlay = document.querySelector('.'+PLUGIN_NAME+'-overlay'); + if($overlay !== null){ + var refs = $overlay.getAttribute('data-iziToast-ref'); + refs = refs.split(','); + var index = refs.indexOf(String(settings.ref)); + + if(index !== -1){ + refs.splice(index, 1); + } + $overlay.setAttribute('data-iziToast-ref', refs.join()); + + if(refs.length === 0){ + $overlay.classList.remove('fadeIn'); + $overlay.classList.add('fadeOut'); + setTimeout(function() { + $overlay.remove(); + }, 700); + } + } + + })(); + + if(settings.transitionIn){ + $toast.classList.remove(settings.transitionIn); + } + + if(settings.transitionInMobile){ + $toast.classList.remove(settings.transitionInMobile); + } + + if(ISMOBILE || window.innerWidth <= MOBILEWIDTH){ + if(settings.transitionOutMobile) + $toast.classList.add(settings.transitionOutMobile); + } else { + if(settings.transitionOut) + $toast.classList.add(settings.transitionOut); + } + var H = $toast.parentNode.offsetHeight; + $toast.parentNode.style.height = H+'px'; + $toast.style.pointerEvents = 'none'; + + if(!ISMOBILE || window.innerWidth > MOBILEWIDTH){ + $toast.parentNode.style.transitionDelay = '0.2s'; + } + + try { + var event = new CustomEvent(PLUGIN_NAME+'-closing', {detail: settings, bubbles: true, cancelable: true}); + document.dispatchEvent(event); + } catch(ex){ + console.warn(ex); + } + + setTimeout(function() { + + $toast.parentNode.style.height = '0px'; + $toast.parentNode.style.overflow = ''; + + setTimeout(function(){ + + delete that.children[settings.ref]; + + $toast.parentNode.remove(); + + try { + var event = new CustomEvent(PLUGIN_NAME+'-closed', {detail: settings, bubbles: true, cancelable: true}); + document.dispatchEvent(event); + } catch(ex){ + console.warn(ex); + } + + if(typeof settings.onClosed !== 'undefined'){ + settings.onClosed.apply(null, [settings, $toast, closedBy]); + } + + }, 1000); + }, 200); + + + if(typeof settings.onClosing !== 'undefined'){ + settings.onClosing.apply(null, [settings, $toast, closedBy]); + } + }; + + /** + * Create and show the Toast + * @public + * @param {Object} options User settings + */ + $iziToast.show = function (options) { + + var that = this; + + // Merge user options with defaults + var settings = extend(CONFIG, options || {}); + settings = extend(defaults, settings); + settings.time = {}; + + if(settings.id === null){ + settings.id = generateId(settings.title+settings.message+settings.color); + } + + if(settings.displayMode === 1 || settings.displayMode == 'once'){ + try { + if(document.querySelectorAll('.'+PLUGIN_NAME+'#'+settings.id).length > 0){ + return false; + } + } catch (exc) { + console.warn('['+PLUGIN_NAME+'] Could not find an element with this selector: '+'#'+settings.id+'. Try to set an valid id.'); + } + } + + if(settings.displayMode === 2 || settings.displayMode == 'replace'){ + try { + forEach(document.querySelectorAll('.'+PLUGIN_NAME+'#'+settings.id), function(element, index) { + that.hide(settings, element, 'replaced'); + }); + } catch (exc) { + console.warn('['+PLUGIN_NAME+'] Could not find an element with this selector: '+'#'+settings.id+'. Try to set an valid id.'); + } + } + + settings.ref = new Date().getTime() + Math.floor((Math.random() * 10000000) + 1); + + $iziToast.children[settings.ref] = settings; + + var $DOM = { + body: document.querySelector('body'), + overlay: document.createElement('div'), + toast: document.createElement('div'), + toastBody: document.createElement('div'), + toastTexts: document.createElement('div'), + toastCapsule: document.createElement('div'), + cover: document.createElement('div'), + buttons: document.createElement('div'), + inputs: document.createElement('div'), + icon: !settings.iconUrl ? document.createElement('i') : document.createElement('img'), + wrapper: null + }; + + $DOM.toast.setAttribute('data-iziToast-ref', settings.ref); + $DOM.toast.appendChild($DOM.toastBody); + $DOM.toastCapsule.appendChild($DOM.toast); + + // CSS Settings + (function(){ + + $DOM.toast.classList.add(PLUGIN_NAME); + $DOM.toast.classList.add(PLUGIN_NAME+'-opening'); + $DOM.toastCapsule.classList.add(PLUGIN_NAME+'-capsule'); + $DOM.toastBody.classList.add(PLUGIN_NAME + '-body'); + $DOM.toastTexts.classList.add(PLUGIN_NAME + '-texts'); + + if(ISMOBILE || window.innerWidth <= MOBILEWIDTH){ + if(settings.transitionInMobile) + $DOM.toast.classList.add(settings.transitionInMobile); + } else { + if(settings.transitionIn) + $DOM.toast.classList.add(settings.transitionIn); + } + + if(settings.class){ + var classes = settings.class.split(' '); + forEach(classes, function (value, index) { + $DOM.toast.classList.add(value); + }); + } + + if(settings.id){ $DOM.toast.id = settings.id; } + + if(settings.rtl){ + $DOM.toast.classList.add(PLUGIN_NAME + '-rtl'); + $DOM.toast.setAttribute('dir', 'rtl'); + } + + if(settings.layout > 1){ $DOM.toast.classList.add(PLUGIN_NAME+'-layout'+settings.layout); } + + if(settings.balloon){ $DOM.toast.classList.add(PLUGIN_NAME+'-balloon'); } + + if(settings.maxWidth){ + if( !isNaN(settings.maxWidth) ){ + $DOM.toast.style.maxWidth = settings.maxWidth+'px'; + } else { + $DOM.toast.style.maxWidth = settings.maxWidth; + } + } + + if(settings.theme !== '' || settings.theme !== 'light') { + + $DOM.toast.classList.add(PLUGIN_NAME+'-theme-'+settings.theme); + } + + if(settings.color) { //#, rgb, rgba, hsl + + if( isColor(settings.color) ){ + $DOM.toast.style.background = settings.color; + } else { + $DOM.toast.classList.add(PLUGIN_NAME+'-color-'+settings.color); + } + } + + if(settings.backgroundColor) { + $DOM.toast.style.background = settings.backgroundColor; + if(settings.balloon){ + $DOM.toast.style.borderColor = settings.backgroundColor; + } + } + })(); + + // Cover image + (function(){ + if(settings.image) { + $DOM.cover.classList.add(PLUGIN_NAME + '-cover'); + $DOM.cover.style.width = settings.imageWidth + 'px'; + + if(isBase64(settings.image.replace(/ /g,''))){ + $DOM.cover.style.backgroundImage = 'url(data:image/png;base64,' + settings.image.replace(/ /g,'') + ')'; + } else { + $DOM.cover.style.backgroundImage = 'url(' + settings.image + ')'; + } + + if(settings.rtl){ + $DOM.toastBody.style.marginRight = (settings.imageWidth + 10) + 'px'; + } else { + $DOM.toastBody.style.marginLeft = (settings.imageWidth + 10) + 'px'; + } + $DOM.toast.appendChild($DOM.cover); + } + })(); + + // Button close + (function(){ + if(settings.close){ + + $DOM.buttonClose = document.createElement('button'); + $DOM.buttonClose.type = 'button'; + $DOM.buttonClose.classList.add(PLUGIN_NAME + '-close'); + $DOM.buttonClose.addEventListener('click', function (e) { + var button = e.target; + that.hide(settings, $DOM.toast, 'button'); + }); + $DOM.toast.appendChild($DOM.buttonClose); + } else { + if(settings.rtl){ + $DOM.toast.style.paddingLeft = '18px'; + } else { + $DOM.toast.style.paddingRight = '18px'; + } + } + })(); + + // Progress Bar & Timeout + (function(){ + + if(settings.progressBar){ + $DOM.progressBar = document.createElement('div'); + $DOM.progressBarDiv = document.createElement('div'); + $DOM.progressBar.classList.add(PLUGIN_NAME + '-progressbar'); + $DOM.progressBarDiv.style.background = settings.progressBarColor; + $DOM.progressBar.appendChild($DOM.progressBarDiv); + $DOM.toast.appendChild($DOM.progressBar); + } + + if(settings.timeout) { + + if(settings.pauseOnHover && !settings.resetOnHover){ + + $DOM.toast.addEventListener('mouseenter', function (e) { + that.progress(settings, $DOM.toast).pause(); + }); + $DOM.toast.addEventListener('mouseleave', function (e) { + that.progress(settings, $DOM.toast).resume(); + }); + } + + if(settings.resetOnHover){ + + $DOM.toast.addEventListener('mouseenter', function (e) { + that.progress(settings, $DOM.toast).reset(); + }); + $DOM.toast.addEventListener('mouseleave', function (e) { + that.progress(settings, $DOM.toast).start(); + }); + } + } + })(); + + // Icon + (function(){ + + if(settings.iconUrl) { + + $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon'); + $DOM.icon.setAttribute('src', settings.iconUrl); + + } else if(settings.icon) { + $DOM.icon.setAttribute('class', PLUGIN_NAME + '-icon ' + settings.icon); + + if(settings.iconText){ + $DOM.icon.appendChild(document.createTextNode(settings.iconText)); + } + + if(settings.iconColor){ + $DOM.icon.style.color = settings.iconColor; + } + } + + if(settings.icon || settings.iconUrl) { + + if(settings.rtl){ + $DOM.toastBody.style.paddingRight = '33px'; + } else { + $DOM.toastBody.style.paddingLeft = '33px'; + } + + $DOM.toastBody.appendChild($DOM.icon); + } + + })(); + + // Title & Message + (function(){ + if(settings.title.length > 0) { + + $DOM.strong = document.createElement('strong'); + $DOM.strong.classList.add(PLUGIN_NAME + '-title'); + $DOM.strong.appendChild(createFragElem(settings.title)); + $DOM.toastTexts.appendChild($DOM.strong); + + if(settings.titleColor) { + $DOM.strong.style.color = settings.titleColor; + } + if(settings.titleSize) { + if( !isNaN(settings.titleSize) ){ + $DOM.strong.style.fontSize = settings.titleSize+'px'; + } else { + $DOM.strong.style.fontSize = settings.titleSize; + } + } + if(settings.titleLineHeight) { + if( !isNaN(settings.titleSize) ){ + $DOM.strong.style.lineHeight = settings.titleLineHeight+'px'; + } else { + $DOM.strong.style.lineHeight = settings.titleLineHeight; + } + } + } + + if(settings.message.length > 0) { + + $DOM.p = document.createElement('p'); + $DOM.p.classList.add(PLUGIN_NAME + '-message'); + $DOM.p.appendChild(createFragElem(settings.message)); + $DOM.toastTexts.appendChild($DOM.p); + + if(settings.messageColor) { + $DOM.p.style.color = settings.messageColor; + } + if(settings.messageSize) { + if( !isNaN(settings.titleSize) ){ + $DOM.p.style.fontSize = settings.messageSize+'px'; + } else { + $DOM.p.style.fontSize = settings.messageSize; + } + } + if(settings.messageLineHeight) { + + if( !isNaN(settings.titleSize) ){ + $DOM.p.style.lineHeight = settings.messageLineHeight+'px'; + } else { + $DOM.p.style.lineHeight = settings.messageLineHeight; + } + } + } + + if(settings.title.length > 0 && settings.message.length > 0) { + if(settings.rtl){ + $DOM.strong.style.marginLeft = '10px'; + } else if(settings.layout !== 2 && !settings.rtl) { + $DOM.strong.style.marginRight = '10px'; + } + } + })(); + + $DOM.toastBody.appendChild($DOM.toastTexts); + + // Inputs + var $inputs; + (function(){ + if(settings.inputs.length > 0) { + + $DOM.inputs.classList.add(PLUGIN_NAME + '-inputs'); + + forEach(settings.inputs, function (value, index) { + $DOM.inputs.appendChild(createFragElem(value[0])); + + $inputs = $DOM.inputs.childNodes; + + $inputs[index].classList.add(PLUGIN_NAME + '-inputs-child'); + + if(value[3]){ + setTimeout(function() { + $inputs[index].focus(); + }, 300); + } + + $inputs[index].addEventListener(value[1], function (e) { + var ts = value[2]; + return ts(that, $DOM.toast, this, e); + }); + }); + $DOM.toastBody.appendChild($DOM.inputs); + } + })(); + + // Buttons + (function(){ + if(settings.buttons.length > 0) { + + $DOM.buttons.classList.add(PLUGIN_NAME + '-buttons'); + + forEach(settings.buttons, function (value, index) { + $DOM.buttons.appendChild(createFragElem(value[0])); + + var $btns = $DOM.buttons.childNodes; + + $btns[index].classList.add(PLUGIN_NAME + '-buttons-child'); + + if(value[2]){ + setTimeout(function() { + $btns[index].focus(); + }, 300); + } + + $btns[index].addEventListener('click', function (e) { + e.preventDefault(); + var ts = value[1]; + return ts(that, $DOM.toast, this, e, $inputs); + }); + }); + } + $DOM.toastBody.appendChild($DOM.buttons); + })(); + + if(settings.message.length > 0 && (settings.inputs.length > 0 || settings.buttons.length > 0)) { + $DOM.p.style.marginBottom = '0'; + } + + if(settings.inputs.length > 0 || settings.buttons.length > 0){ + if(settings.rtl){ + $DOM.toastTexts.style.marginLeft = '10px'; + } else { + $DOM.toastTexts.style.marginRight = '10px'; + } + if(settings.inputs.length > 0 && settings.buttons.length > 0){ + if(settings.rtl){ + $DOM.inputs.style.marginLeft = '8px'; + } else { + $DOM.inputs.style.marginRight = '8px'; + } + } + } + + // Wrap + (function(){ + $DOM.toastCapsule.style.visibility = 'hidden'; + setTimeout(function() { + var H = $DOM.toast.offsetHeight; + var style = $DOM.toast.currentStyle || window.getComputedStyle($DOM.toast); + var marginTop = style.marginTop; + marginTop = marginTop.split('px'); + marginTop = parseInt(marginTop[0]); + var marginBottom = style.marginBottom; + marginBottom = marginBottom.split('px'); + marginBottom = parseInt(marginBottom[0]); + + $DOM.toastCapsule.style.visibility = ''; + $DOM.toastCapsule.style.height = (H+marginBottom+marginTop)+'px'; + + setTimeout(function() { + $DOM.toastCapsule.style.height = 'auto'; + if(settings.target){ + $DOM.toastCapsule.style.overflow = 'visible'; + } + }, 500); + + if(settings.timeout) { + that.progress(settings, $DOM.toast).start(); + } + }, 100); + })(); + + // Target + (function(){ + var position = settings.position; + + if(settings.target){ + + $DOM.wrapper = document.querySelector(settings.target); + $DOM.wrapper.classList.add(PLUGIN_NAME + '-target'); + + if(settings.targetFirst) { + $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); + } else { + $DOM.wrapper.appendChild($DOM.toastCapsule); + } + + } else { + + if( POSITIONS.indexOf(settings.position) == -1 ){ + console.warn('['+PLUGIN_NAME+'] Incorrect position.\nIt can be › ' + POSITIONS); + return; + } + + if(ISMOBILE || window.innerWidth <= MOBILEWIDTH){ + if(settings.position == 'bottomLeft' || settings.position == 'bottomRight' || settings.position == 'bottomCenter'){ + position = PLUGIN_NAME+'-wrapper-bottomCenter'; + } + else if(settings.position == 'topLeft' || settings.position == 'topRight' || settings.position == 'topCenter'){ + position = PLUGIN_NAME+'-wrapper-topCenter'; + } + else { + position = PLUGIN_NAME+'-wrapper-center'; + } + } else { + position = PLUGIN_NAME+'-wrapper-'+position; + } + $DOM.wrapper = document.querySelector('.' + PLUGIN_NAME + '-wrapper.'+position); + + if(!$DOM.wrapper) { + $DOM.wrapper = document.createElement('div'); + $DOM.wrapper.classList.add(PLUGIN_NAME + '-wrapper'); + $DOM.wrapper.classList.add(position); + document.body.appendChild($DOM.wrapper); + } + if(settings.position == 'topLeft' || settings.position == 'topCenter' || settings.position == 'topRight'){ + $DOM.wrapper.insertBefore($DOM.toastCapsule, $DOM.wrapper.firstChild); + } else { + $DOM.wrapper.appendChild($DOM.toastCapsule); + } + } + + if(!isNaN(settings.zindex)) { + $DOM.wrapper.style.zIndex = settings.zindex; + } else { + console.warn('['+PLUGIN_NAME+'] Invalid zIndex.'); + } + })(); + + // Overlay + (function(){ + + if(settings.overlay) { + + if( document.querySelector('.'+PLUGIN_NAME+'-overlay.fadeIn') !== null ){ + + $DOM.overlay = document.querySelector('.'+PLUGIN_NAME+'-overlay'); + $DOM.overlay.setAttribute('data-iziToast-ref', $DOM.overlay.getAttribute('data-iziToast-ref') + ',' + settings.ref); + + if(!isNaN(settings.zindex) && settings.zindex !== null) { + $DOM.overlay.style.zIndex = settings.zindex-1; + } + + } else { + + $DOM.overlay.classList.add(PLUGIN_NAME+'-overlay'); + $DOM.overlay.classList.add('fadeIn'); + $DOM.overlay.style.background = settings.overlayColor; + $DOM.overlay.setAttribute('data-iziToast-ref', settings.ref); + if(!isNaN(settings.zindex) && settings.zindex !== null) { + $DOM.overlay.style.zIndex = settings.zindex-1; + } + document.querySelector('body').appendChild($DOM.overlay); + } + + if(settings.overlayClose) { + + $DOM.overlay.removeEventListener('click', {}); + $DOM.overlay.addEventListener('click', function (e) { + that.hide(settings, $DOM.toast, 'overlay'); + }); + } else { + $DOM.overlay.removeEventListener('click', {}); + } + } + })(); + + // Inside animations + (function(){ + if(settings.animateInside){ + $DOM.toast.classList.add(PLUGIN_NAME+'-animateInside'); + + var animationTimes = [200, 100, 300]; + if(settings.transitionIn == 'bounceInLeft' || settings.transitionIn == 'bounceInRight'){ + animationTimes = [400, 200, 400]; + } + + if(settings.title.length > 0) { + setTimeout(function(){ + $DOM.strong.classList.add('slideIn'); + }, animationTimes[0]); + } + + if(settings.message.length > 0) { + setTimeout(function(){ + $DOM.p.classList.add('slideIn'); + }, animationTimes[1]); + } + + if(settings.icon || settings.iconUrl) { + setTimeout(function(){ + $DOM.icon.classList.add('revealIn'); + }, animationTimes[2]); + } + + var counter = 150; + if(settings.buttons.length > 0 && $DOM.buttons) { + + setTimeout(function(){ + + forEach($DOM.buttons.childNodes, function(element, index) { + + setTimeout(function(){ + element.classList.add('revealIn'); + }, counter); + counter = counter + 150; + }); + + }, settings.inputs.length > 0 ? 150 : 0); + } + + if(settings.inputs.length > 0 && $DOM.inputs) { + counter = 150; + forEach($DOM.inputs.childNodes, function(element, index) { + + setTimeout(function(){ + element.classList.add('revealIn'); + }, counter); + counter = counter + 150; + }); + } + } + })(); + + settings.onOpening.apply(null, [settings, $DOM.toast]); + + try { + var event = new CustomEvent(PLUGIN_NAME + '-opening', {detail: settings, bubbles: true, cancelable: true}); + document.dispatchEvent(event); + } catch(ex){ + console.warn(ex); + } + + setTimeout(function() { + + $DOM.toast.classList.remove(PLUGIN_NAME+'-opening'); + $DOM.toast.classList.add(PLUGIN_NAME+'-opened'); + + try { + var event = new CustomEvent(PLUGIN_NAME + '-opened', {detail: settings, bubbles: true, cancelable: true}); + document.dispatchEvent(event); + } catch(ex){ + console.warn(ex); + } + + settings.onOpened.apply(null, [settings, $DOM.toast]); + }, 1000); + + if(settings.drag){ + + if(ACCEPTSTOUCH) { + + $DOM.toast.addEventListener('touchstart', function(e) { + drag.startMoving(this, that, settings, e); + }, false); + + $DOM.toast.addEventListener('touchend', function(e) { + drag.stopMoving(this, e); + }, false); + } else { + + $DOM.toast.addEventListener('mousedown', function(e) { + e.preventDefault(); + drag.startMoving(this, that, settings, e); + }, false); + + $DOM.toast.addEventListener('mouseup', function(e) { + e.preventDefault(); + drag.stopMoving(this, e); + }, false); + } + } + + if(settings.closeOnEscape) { + + document.addEventListener('keyup', function (evt) { + evt = evt || window.event; + if(evt.keyCode == 27) { + that.hide(settings, $DOM.toast, 'esc'); + } + }); + } + + if(settings.closeOnClick) { + $DOM.toast.addEventListener('click', function (evt) { + that.hide(settings, $DOM.toast, 'toast'); + }); + } + + that.toast = $DOM.toast; + }; + return $iziToast; +}); \ No newline at end of file diff --git a/public/static/component/laytp/module/treeTable.js b/public/static/component/laytp/module/treeTable.js deleted file mode 100644 index 19895f197928899a5fbc47d79042959364232c77..0000000000000000000000000000000000000000 --- a/public/static/component/laytp/module/treeTable.js +++ /dev/null @@ -1,2177 +0,0 @@ -/** 树形表格3.x Created by wangfan on 2020-05-12 https://gitee.com/whvse/treetable-lay */ -layui.define(["laytpl", "form", "util"], - function(s) { - var g = layui.jquery; - var d = layui.laytpl; - var c = layui.form; - var b = layui.util; - var o = layui.device(); - var h = "treeTable"; - var k = {}; - var e = { - elem: undefined, - cols: undefined, - url: undefined, - method: undefined, - where: undefined, - contentType: undefined, - headers: undefined, - parseData: undefined, - request: { - pidName: "pid" - }, - toolbar: undefined, - defaultToolbar: undefined, - width: undefined, - height: undefined, - cellMinWidth: 90, - done: undefined, - data: undefined, - title: undefined, - skin: undefined, - even: undefined, - size: undefined, - text: { - none: "无数据" - }, - reqData: undefined, - useAdmin: false, - tree: { - idName: "id", - pidName: "pid", - childName: "children", - haveChildName: "haveChild", - openName: "open", - iconIndex: 0, - arrowType: undefined, - onlyIconControl: undefined, - getIcon: function(u) { - var t = u[this.haveChildName]; - if (t !== undefined) { - t = t === true || t === "true" - } else { - if (u[this.childName]) { - t = u[this.childName].length > 0 - } - } - if (t) { - return '' - } else { - return '' - } - } - } - }; - var r = { - field: undefined, - title: undefined, - width: undefined, - minWidth: undefined, - type: "normal", - fixed: undefined, - hide: undefined, - unresize: undefined, - style: undefined, - align: undefined, - colspan: undefined, - rowspan: undefined, - templet: undefined, - toolbar: undefined, - "class": undefined, - singleLine: undefined - }; - var p = function(t) { - k[t.elem.substring(1)] = this; - this.reload(t) - }; - p.prototype.initOptions = function(t) { - var D = this; - function B(J) { - if (!J.INIT_OK) { - J = g.extend({ - INIT_OK: true - }, - r, J) - } - if (J.type === "space") { - if (!J.width) { - J.width = 15 - } - J.minWidth = J.width - } else { - if (J.type === "numbers") { - if (!J.width) { - J.width = 40 - } - J.minWidth = J.width; - if (!J.singleLine) { - J.singleLine = false - } - if (!J.unresize) { - J.unresize = true - } - if (!J.align) { - J.align = "center" - } - } else { - if (J.type === "checkbox" || J.type === "radio") { - if (!J.width) { - J.width = 48 - } - J.minWidth = J.width; - if (!J.singleLine) { - J.singleLine = false - } - if (!J.unresize) { - J.unresize = true - } - if (!J.align) { - J.align = "center" - } - } - } - } - if (J.toolbar) { - J.type = "tool" - } - return J - } - if ("Array" !== l(t.cols[0])) { - t.cols = [t.cols] - } - for (var w = 0; w < t.cols.length; w++) { - for (var u = 0; u < t.cols[w].length; u++) { - t.cols[w][u].INIT_OK = undefined; - t.cols[w][u].key = undefined; - t.cols[w][u].colGroup = undefined; - t.cols[w][u].HAS_PARENT = undefined; - t.cols[w][u].parentKey = undefined; - t.cols[w][u].PARENT_COL_INDEX = undefined - } - } - var F = [], - G = 0; - for (var y = 0; y < t.cols.length; y++) { - var C = t.cols[y]; - for (var x = 0; x < C.length; x++) { - var A = C[x]; - if (!A) { - C.splice(x, 1); - continue - } - A = B(A); - A.key = y + "-" + x; - var I = undefined; - if (A.colGroup || A.colspan > 1) { - A.colGroup = true; - A.type = "group"; - I = []; - G++; - var z = 0; - for (var v = 0; v < t.cols[y + 1].length; v++) { - var H = g.extend({ - INIT_OK: true - }, - r, t.cols[y + 1][v]); - if (H.HAS_PARENT || (z > 1 && z == A.colspan)) { - t.cols[y + 1][v] = H; - continue - } - H.HAS_PARENT = true; - H.parentKey = y + "-" + x; - H.key = (y + 1) + "-" + v; - H.PARENT_COL_INDEX = G; - H = B(H); - I.push(H); - z = z + parseInt(H.colspan > 1 ? H.colspan: 1); - t.cols[y + 1][v] = H - } - } - A.CHILD_COLS = I; - if (!A.PARENT_COL_INDEX) { - F.push(A) - } - t.cols[y][x] = A - } - } - this.options = g.extend(true, {}, - e, t); - this.options.colArrays = F; - if (this.options.url) { - this.options.reqData = function(J, K) { - if (!D.options.where) { - D.options.where = {} - } - if (J) { - D.options.where[D.options.request.pidName] = J[D.options.tree.idName] - } - (D.options.useAdmin ? layui.admin: g).ajax({ - url: D.options.url, - data: D.options.contentType && D.options.contentType.indexOf("application/json") === 0 ? JSON.stringify(D.options.where) : D.options.where, - headers: D.options.headers, - type: D.options.method, - dataType: "json", - contentType: D.options.contentType, - // ajax请求无需cookie,此处禁止携带cookie进行请求 - xhrFields : { - withCredentials : false - }, - // async: true, - success: function(L) { - if (D.options.parseData) { - L = D.options.parseData(L) - } - if (L.code === 0) { - K(L.data) - } else { - K(L.msg || "加载失败") - } - }, - error: function(L) { - K(L.status + " - " + L.statusText) - } - }); - } - } else { - if (this.options.data && this.options.data.length > 0 && this.options.tree.isPidData) { - this.options.data = a.pidToChildren(this.options.data, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName) - } - } - if ("default" === this.options.toolbar) { - this.options.toolbar = ["
    ", '
    ', ' ', "
    ", '
    ', ' ', "
    ", '
    ', ' ', "
    ", "
    "].join("") - } - if (this.options.defaultToolbar === undefined) { - this.options.defaultToolbar = ["filter", "exports", "print"] - } - if (typeof this.options.tree.getIcon === "string") { - var E = this.options.tree.getIcon; - this.options.tree.getIcon = function(K) { - if (E !== "laytp-tree-icon-style2") { - return E - } - var J = K[this.haveChildName]; - if (J !== undefined) { - J = J === true || J === "true" - } else { - if (K[this.childName]) { - J = K[this.childName].length > 0 - } - } - if (J) { - return '' - } else { - return '' - } - } - } - }; - p.prototype.init = function() { - var E = this.options; - var u = g(E.elem); - var B = E.elem.substring(1); - u.removeAttr("lay-filter"); - if (u.next(".laytp-tree-table").length === 0) { - u.css("display", "none"); - // u.after(['
    ', ' ', '
    ', '
    ', "
    ", '
    ', '
    ', '
    ', ' ', "
    ", '
    ', E.text.none || "", "
    ", "
    ", "
    "].join("")) - u.after(['
    ', ' ', '
    ', '
    ', "
    ", '
    ', '
    ', '
    ', ' ', "
    ", '
    ', E.text.none || "", "
    ", "
    ", "
    "].join("")) - } - var A = this.getComponents(); - if (E.skin) { - A.$table.attr("lay-skin", E.skin) - } - if (E.size) { - A.$table.attr("lay-size", E.size) - } - if (E.even) { - A.$table.attr("lay-even", E.even) - } - A.$toolbar.empty(); - if (E.toolbar === false || E.toolbar === undefined) { - A.$toolbar.hide() - } else { - A.$toolbar.show(); - if (typeof E.toolbar === "string") { - d(g(E.toolbar).html()).render({}, - function(F) { - // A.$toolbar.html('
    ' + F + "
    ") - A.$toolbar.html('
    ' + F + "
    ") - }) - } - // var C = ['
    ']; - var C = ['
    ']; - for (var y = 0; y < E.defaultToolbar.length; y++) { - var w; - if ("filter" === E.defaultToolbar[y]) { - w = { - title: "筛选", - layEvent: "LAYTABLE_COLS", - icon: "layui-icon-cols" - } - } else { - if ("exports" === E.defaultToolbar[y]) { - w = { - title: "导出", - layEvent: "LAYTABLE_EXPORT", - icon: "layui-icon-export" - } - } else { - if ("print" === E.defaultToolbar[y]) { - w = { - title: "打印", - layEvent: "LAYTABLE_PRINT", - icon: "layui-icon-print" - } - } else { - w = E.defaultToolbar[y] - } - } - } - if (w) { - // C.push('
    '); - C.push('
    ') - } - } - A.$toolbar.append(C.join("") + "
    ") - } - if (E.width) { - A.$view.css("width", E.width); - A.$tHeadGroup.css("width", E.width); - A.$tBodyGroup.css("width", E.width) - } - var v = this.resize(true); - var D = "" + this.renderBodyTh() + ""; - A.$tBodyGroup.children("style").remove(); - if (E.height) { - A.$tHead.html(v + D); - A.$tBody.html(v + ""); - if (E.height.indexOf("full-") === 0) { - var z = parseFloat(E.height.substring(5)) + A.$toolbar.outerHeight() + A.$tHeadGroup.outerHeight() + 1; - A.$tBodyGroup.append(['"].join("")); - A.$tBodyGroup.data("full", z); - A.$tBodyGroup.css("height", "") - } else { - A.$tBodyGroup.css("height", E.height); - A.$tBodyGroup.data("full", "") - } - A.$tHeadGroup.show() - } else { - A.$tHeadGroup.hide(); - var x = { - lg: 50, - sm: 30, - md: 38 - }; - A.$tBodyGroup.append(['"].join("")); - A.$tBody.html(v + D + "") - } - c.render("checkbox", B); - function t(H) { - var F = H.data("parent"), - G; - if (!F) { - return - } - var I = A.$table.children("thead").children("tr").children('[data-key="' + F + '"]'); - var J = I.attr("colspan") - 1; - I.attr("colspan", J); - if (J === 0) { - I.addClass("layui-hide") - } - t(I) - } - A.$table.children("thead").children("tr").children("th.layui-hide").each(function() { - t(g(this)) - }); - if (E.reqData) { - this.options.data = undefined; - this.renderBodyAsync(); - } else { - if (E.data && E.data.length > 0) { - this.renderBodyData(E.data) - } else { - A.$loading.hide(); - A.$empty.show() - } - } - }; - p.prototype.bindEvents = function() { - var v = this; - var t = this.options; - var u = this.getComponents(); - var w = u.$table.children("tbody"); - var x = function(y) { - var z = g(this); - if (!z.is("tr")) { - var C = z.parent("tr"); - if (C.length > 0) { - z = C - } else { - z = z.parentsUntil("tr").last().parent() - } - } - var A = v.getDataByTr(z); - var B = { - tr: z, - data: A, - del: function() { - var F = z.data("index"); - var D = parseInt(z.data("indent")); - z.nextAll("tr").each(function() { - if (parseInt(g(this).data("indent")) <= D) { - return false - } - g(this).remove() - }); - var G = (typeof F === "number" ? 1 : F.split("-").length); - z.nextAll("tr").each(function() { - var H = g(this); - if (parseInt(H.data("indent")) < D) { - return false - } - var I = H.data("index").toString().split("-"); - I[G - 1] = parseInt(I[G - 1]) - 1; - H.data("index", I.join("-")) - }); - var E = z.prevAll("tr"); - v.del(undefined, F); - z.remove(); - v.renderNumberCol(); - E.each(function() { - var H = parseInt(g(this).data("indent")); - if (H >= D) { - return true - } - v.checkParentCB(g(this)); - D = H - }); - v.checkChooseAllCB(); - if (t.data.length === 0) { - u.$empty.show() - } - f(u.$view) - }, - update: function(E) { - A = g.extend(true, A, E); - var D = parseInt(z.data("indent")); - v.renderBodyTr(A, D, undefined, z); - c.render(null, u.filter); - v.renderNumberCol(); - z.prevAll("tr").each(function() { - var F = parseInt(g(this).data("indent")); - if (F >= D) { - return true - } - v.checkParentCB(g(this)); - D = F - }); - v.checkChooseAllCB() - } - }; - return g.extend(B, y) - }; - w.off("click.fold").on("click.fold", ".laytp-tree-pack", - function(C) { - layui.stope(C); - var A = g(this).parentsUntil("tr").last().parent(); - if (A.hasClass("laytp-tree-table-loading")) { - return - } - var y = A.data("have-child"); - if (y !== true && y !== "true") { - return - } - var z = A.hasClass("laytp-tree-table-open"); - var B = v.getDataByTr(A); - // if (!z && !B[t.tree.childName]) { - // 去掉!B[t.tree.childName]这个非的判断,让点击展开节点的事件渲染子级节点 - edit by JunStar - if (!z && B[t.tree.childName]) { - var hasShow = A.data("show"); - if(hasShow){ - B[t.tree.openName] = i(A) - }else{ - A.addClass("laytp-tree-table-open"); - A.attr("data-show", 1); - var level = parseInt(A.data('indent')) + 1; - B[t.tree.openName] = true; - var res = v.renderBody(B[t.tree.childName], level, B); - A.after(res); - layui.form.render(); - } - } else { - B[t.tree.openName] = i(A) - } - }); - w.off("click.tool").on("click.tool", "*[lay-event]", - function(z) { - layui.stope(z); - var y = g(this); - layui.event.call(this, h, "tool(" + u.filter + ")", x.call(this, { - event: y.attr("lay-event") - })) - }); - c.on("radio(" + u.radioFilter + ")", - function(y) { - var z = v.getDataByTr(g(y.elem).parentsUntil("tr").last().parent()); - v.removeAllChecked(); - z.LAY_CHECKED = true; - z.LAY_INDETERMINATE = false; - layui.event.call(this, h, "checkbox(" + u.filter + ")", { - checked: true, - data: z, - type: "one" - }) - }); - c.on("checkbox(" + u.checkboxFilter + ")", - function(C) { - var B = C.elem.checked; - var E = g(C.elem); - var z = E.next(".layui-form-checkbox"); - if (!B && E.hasClass("laytp-form-indeterminate")) { - B = true; - E.prop("checked", B); - z.addClass("layui-form-checked"); - E.removeClass("laytp-form-indeterminate") - } - var A = E.parentsUntil("tr").last().parent(); - var D = v.getDataByTr(A); - D.LAY_CHECKED = B; - D.LAY_INDETERMINATE = false; - if (D[t.tree.childName] && D[t.tree.childName].length > 0) { - v.checkSubCB(A, B) - } - var y = parseInt(A.data("indent")); - A.prevAll("tr").each(function() { - var F = parseInt(g(this).data("indent")); - if (F < y) { - v.checkParentCB(g(this)); - y = F - } - }); - v.checkChooseAllCB(); - layui.event.call(this, h, "checkbox(" + u.filter + ")", { - checked: B, - data: D, - type: "more" - }) - }); - c.on("checkbox(" + u.chooseAllFilter + ")", - function(A) { - var z = A.elem.checked; - var B = g(A.elem); - var y = B.next(".layui-form-checkbox"); - if (!t.data || t.data.length === 0) { - B.prop("checked", false); - y.removeClass("layui-form-checked"); - B.removeClass("laytp-form-indeterminate"); - return - } - if (!z && B.hasClass("laytp-form-indeterminate")) { - z = true; - B.prop("checked", z); - y.addClass("layui-form-checked"); - B.removeClass("laytp-form-indeterminate") - } - layui.event.call(this, h, "checkbox(" + u.filter + ")", { - checked: z, - type: "all" - }); - v.checkSubCB(u.$tBody.children("tbody"), z) - }); - w.off("click.row").on("click.row", "tr", - function() { - layui.event.call(this, h, "row(" + u.filter + ")", x.call(this, {})) - }); - w.off("dblclick.rowDouble").on("dblclick.rowDouble", "tr", - function() { - layui.event.call(this, h, "rowDouble(" + u.filter + ")", x.call(this, {})) - }); - w.off("click.cell").on("click.cell", "td", - function(C) { - var y = g(this); - var E = y.data("type"); - if (E === "checkbox" || E === "radio") { - return layui.stope(C) - } - var H = y.data("edit"); - var G = y.data("field"); - if (H) { - layui.stope(C); - if (w.find(".laytp-tree-table-edit").length > 0) { - return - } - var B = y.data("index"); - var z = y.find(".laytp-tree-table-indent").length; - var D = v.getDataByTr(y.parent()); - if ("text" === H || "number" === H) { - var F = g(''); - F[0].value = D[G]; - y.append(F); - F.focus(); - F.blur(function() { - var K = g(this).val(); - if (K == D[G]) { - return g(this).remove() - } - var I = layui.event.call(this, h, "edit(" + u.filter + ")", x.call(this, { - value: K, - field: G - })); - if (I === false) { - g(this).addClass("layui-form-danger"); - g(this).focus() - } else { - D[G] = K; - var J = y.data("key").split("-"); - v.renderBodyTd(D, z, B, y, t.cols[J[0]][J[1]]) - } - }) - } else { - console.error("不支持的单元格编辑类型:" + H) - } - } else { - var A = layui.event.call(this, h, "cell(" + u.filter + ")", x.call(this, { - td: y, - field: G - })); - if (A === false) { - layui.stope(C) - } - } - }); - w.off("dblclick.cellDouble").on("dblclick.cellDouble", "td", - function(C) { - var D = g(this); - var z = D.data("type"); - if (z === "checkbox" || z === "radio") { - return layui.stope(C) - } - var A = D.data("edit"); - var B = D.data("field"); - if (A) { - return layui.stope(C) - } - var y = layui.event.call(this, h, "cellDouble(" + u.filter + ")", x.call(this, { - td: D, - field: B - })); - if (y === false) { - layui.stope(C) - } - }); - u.$toolbar.off("click.toolbar").on("click.toolbar", "*[lay-event]", - function(A) { - layui.stope(A); - var z = g(this); - var y = z.attr("lay-event"); - if ("LAYTABLE_COLS" === y) { - v.toggleCol() - } else { - if ("LAYTABLE_EXPORT" === y) { - v.exportData("show") - } else { - if ("LAYTABLE_PRINT" === y) { - v.printTable() - } else { - layui.event.call(this, h, "toolbar(" + u.filter + ")", { - event: y, - elem: z - }) - } - } - } - }); - u.$tBodyGroup.on("scroll", - function() { - var y = g(this); - u.$tHeadGroup.scrollLeft(y.scrollLeft()) - }); - u.$toolbar.off("click.export").on("click.export", ".layui-table-tool-panel>[data-type]", - function() { - var y = g(this).data("type"); - if ("csv" === y || "xls" === y) { - v.exportData(y) - } - }); - u.$toolbar.off("click.panel").on("click.panel", ".layui-table-tool-panel", - function(y) { - layui.stope(y) - }); - c.on("checkbox(" + u.colsToggleFilter + ")", - function(y) { - v.toggleCol(y.elem.checked, undefined, y.value) - }) - }; - p.prototype.getComponents = function() { - var v = g(this.options.elem).next(".laytp-tree-table"); - var t = v.attr("lay-filter"); - var w = v.children(".laytp-tree-table-head"); - var u = v.children(".laytp-tree-table-box"); - return { - $view: v, - filter: t, - $tHeadGroup: w, - $tBodyGroup: u, - $tHead: w.children(".layui-table"), - $tBody: u.children(".layui-table"), - $table: v.find(".layui-table"), - $toolbar: v.children(".laytp-tree-table-tool"), - $empty: u.children(".laytp-tree-table-empty"), - $loading: u.children(".laytp-tree-table-loading"), - checkboxFilter: "ew_tb_checkbox_" + t, - radioFilter: "ew_tb_radio_" + t, - chooseAllFilter: "ew_tb_choose_all_" + t, - colsToggleFilter: "ew_tb_toggle_cols" + t - } - }; - p.prototype.eachCols = function(w, v) { - if (!v) { - v = this.options.colArrays - } - for (var t = 0; t < v.length; t++) { - var u = v[t]; - w && w(t, u); - if (u.CHILD_COLS) { - this.eachCols(w, u.CHILD_COLS) - } - } - }; - p.prototype.eachData = function(w, v) { - if (!v) { - v = this.options.data - } - for (var t = 0; t < v.length; t++) { - var u = v[t]; - w && w(t, u); - if (u[this.options.tree.childName]) { - this.eachData(w, u[this.options.tree.childName]) - } - } - }; - p.prototype.renderBodyAsync = function(x, w) { - var v = this; - var t = this.options; - var u = this.getComponents(); - if (w) { - w.addClass("laytp-tree-table-loading"); - w.find(".laytp-tree-pack").children(".laytp-tree-table-arrow").addClass("layui-anim layui-anim-rotate layui-anim-loop") - } else { - u.$empty.hide(); - if (t.data && t.data.length > 0) { - u.$loading.addClass("laytp-loading-float") - } - u.$loading.show() - } - t.reqData(x, - function(y) { - if (typeof y !== "string" && y && y.length > 0 && t.tree.isPidData) { - y = a.pidToChildren(y, t.tree.idName, t.tree.pidName, t.tree.childName) - } - v.renderBodyData(y, x, w) - }) - }; - p.prototype.renderBodyData = function(w, A, x) { - var u; - if (typeof w === "string") { - u = w; - w = [] - } - var z = this; - var C = this.options; - var y = this.getComponents(); - if (A === undefined) { - C.data = w - } else { - A[C.tree.childName] = w - } - var v; - if (x) { - v = parseInt(x.data("indent")) + 1; - A[C.tree.openName] = true - } - var t = this.renderBody(w, v, A); - if (x) { - x.nextAll("tr").each(function() { - if (parseInt(g(this).data("indent")) <= (v - 1)) { - return false - } - g(this).remove() - }); - x.after(t).addClass("laytp-tree-table-open") - } else { - y.$tBody.children("tbody").html(t) - } - c.render(null, y.filter); - this.renderNumberCol(); - if (x) { - this.checkParentCB(x); - x.prevAll("tr").each(function() { - var D = parseInt(g(this).data("indent")); - if (D < (v - 1)) { - z.checkParentCB(g(this)); - v = D + 1 - } - }); - x.removeClass("laytp-tree-table-loading"); - var B = x.find(".laytp-tree-pack").children(".laytp-tree-table-arrow"); - B.removeClass("layui-anim layui-anim-rotate layui-anim-loop"); - if (u) { - x.removeClass("laytp-tree-table-open") - } else { - if (w && w.length === 0) { - A[C.tree.haveChildName] = false; - x.data("have-child", false); - B.addClass("laytp-tree-table-arrow-hide"); - B.next(".laytp-tree-icon").after(C.tree.getIcon(A)).remove() - } - } - } else { - y.$loading.hide(); - y.$loading.removeClass("laytp-loading-float"); - if (w && w.length > 0) { - y.$empty.hide() - } else { - y.$empty.show(); - if (u) { - y.$empty.text(u) - } else { - y.$empty.html(C.text.none) - } - } - } - this.checkChooseAllCB(); - f(y.$view); - C.done && C.done(w) - }; - // p.prototype.renderBody = function(z, t, y) { - // var u = this.options; - // if (!t) { - // t = 0 - // } - // var x = ""; - // if (!z || z.length === 0) { - // return x - // } - // var w = y ? !y[u.tree.openName] : undefined; - // for (var v = 0; v < z.length; v++) { - // var A = z[v]; - // A.LAY_INDEX = (y ? y.LAY_INDEX + "-": "") + v; - // x += this.renderBodyTr(A, t, w); - // x += this.renderBody(A[u.tree.childName], t + 1, A); - // } - // return x - // }; - // 需要修改的地方 - p.prototype.renderBody = function(z, t, y) { - var u = this.options; - if (!t) { - t = 0 - } - var x = ""; - if (!z || z.length === 0) { - return x - } - var w = y ? !y[u.tree.openName] : undefined; - for (var v = 0; v < z.length; v++) { - var A = z[v]; - A.LAY_INDEX = (y ? y.LAY_INDEX + "-": "") + v; - x += this.renderBodyTr(A, t, w); - // 这一行先注释掉,不要递归渲染全部节点,修改下点击展开子项后再进行节点的渲染 - edit by JunStar - // x += this.renderBody(A[u.tree.childName], t + 1, A); - } - return x - }; - p.prototype.renderBodyTr = function(B, u, x, w) { - var z = this; - var C = this.options; - if (!u) { - u = 0 - } - var A = B[C.tree.haveChildName]; - if (A === undefined) { - A = B[C.tree.childName] && B[C.tree.childName].length > 0 - } - if (w) { - w.data("have-child", A ? "true": "false"); - w.data("indent", u); - w.removeClass("laytp-tree-table-loading") - } - var v = "'); - var y = 0; - this.eachCols(function(E, D) { - if (D.colGroup) { - return - } - v += z.renderBodyTd(B, u, y, w ? w.children("td").eq(y) : undefined, D); - y++ - }); - v += ""; - return v - }; - p.prototype.renderBodyTd = function(C, v, A, t, u) { - if (u.colGroup) { - return "" - } - var F = this.options; - var y = this.getComponents(); - if (!v) { - v = 0 - } - var B = "", - E = "", - D = ""; - if (u.type === "numbers") { - B = '' - } else { - if (u.type === "checkbox") { - B = [''].join("") - } else { - if (u.type === "radio") { - B = [''].join("") - } else { - if (u.templet) { - if (typeof u.templet === "function") { - B = u.templet(C) - } else { - if (typeof u.templet === "string") { - d(g(u.templet).html()).render(C, - function(G) { - B = G - }) - } - } - } else { - if (u.toolbar) { - if (typeof u.toolbar === "function") { - B = u.toolbar(C) - } else { - if (typeof u.toolbar === "string") { - d(g(u.toolbar).html()).render(C, - function(G) { - B = G - }) - } - } - } else { - if (u.field && C[u.field] !== undefined && C[u.field] !== null) { - B = b.escape(C[u.field] === 0 ? "0": C[u.field]) - } - } - } - } - } - } - if (A === F.tree.iconIndex) { - for (var w = 0; w < v; w++) { - D += '' - } - D += ''; - var z = C[F.tree.haveChildName]; - if (z === undefined) { - z = C[F.tree.childName] && C[F.tree.childName].length > 0 - } - D += (''); - D += F.tree.getIcon(C); - B = "" + B + ""; - if (F.tree.onlyIconControl) { - B = D + "" + B - } else { - B = D + B + "" - } - } - E = ['
    ", '
    ', B, "
    ", ' ', ' ', "
    "].join(""); - if (t) { - t.html(E) - } - var x = "" + E + ""); - return x - }; - p.prototype.renderBodyTh = function() { - var t = this.options; - var v = this.getComponents(); - var u = []; - g.each(t.cols, - function(x, w) { - u.push(""); - g.each(w, - function(A, z) { - u.push(""); - u.push('
    "); - u.push('
    '); - var y = ''; - if (z.type === "checkbox") { - u.push(y) - } else { - u.push(z.title || "") - } - u.push('
    '); - u.push('
    '); - if (!z.colGroup && !z.unresize) { - u.push('') - } - u.push("") - }); - u.push("") - }); - return u.join("") - }; - p.prototype.resize = function(z) { - var t = this.options; - var x = this.getComponents(); - var v = 1, - u = 1, - A = true, - w = 0; - this.eachCols(function(B, C) { - if (C.colGroup || C.hide) { - return - } - if (C.width) { - u += (C.width + 1); - if (C.minWidth) { - if (C.width < C.minWidth) { - C.width = C.minWidth - } - } else { - if (C.width < t.cellMinWidth) { - C.width = t.cellMinWidth - } - } - } else { - A = false - } - if (C.width) { - v += (C.width + 1) - } else { - if (C.minWidth) { - v += (C.minWidth + 1); - w += C.minWidth - } else { - v += (t.cellMinWidth + 1); - w += t.cellMinWidth - } - } - }); - if (v) { - x.$tHead.css("min-width", v); - x.$tBody.css("min-width", v) - } else { - x.$tHead.css("min-width", "auto"); - x.$tBody.css("min-width", "auto") - } - if (A) { - x.$tHead.css("width", u); - x.$tBody.css("width", u) - } else { - x.$tHead.css("width", "100%"); - x.$tBody.css("width", "100%") - } - var y = []; - this.eachCols(function(B, C) { - if (C.colGroup || C.hide) { - return - } - y.push("") - }); - y = y.join(""); - if (z) { - return "" + y + "" - } - x.$table.children("colgroup").html(y) - }; - p.prototype.getDataByTr = function(v) { - var w, t; - if (typeof v !== "string" && typeof v !== "number") { - if (v) { - t = v.data("index") - } - } else { - t = v - } - if (t === undefined) { - return - } - if (typeof t === "number") { - t = [t] - } else { - t = t.split("-") - } - for (var u = 0; u < t.length; u++) { - if (w) { - w = w[this.options.tree.childName][t[u]] - } else { - w = this.options.data[t[u]] - } - } - return w - }; - p.prototype.checkSubCB = function(y, x) { - var w = this; - var v = this.getComponents(); - var t = -1, - u; - if (y.is("tbody")) { - u = y.children("tr") - } else { - t = parseInt(y.data("indent")); - u = y.nextAll("tr") - } - u.each(function() { - if (parseInt(g(this).data("indent")) <= t) { - return false - } - var A = g(this).children("td").find('input[lay-filter="' + v.checkboxFilter + '"]'); - A.prop("checked", x); - A.removeClass("laytp-form-indeterminate"); - if (x) { - A.next(".layui-form-checkbox").addClass("layui-form-checked") - } else { - A.next(".layui-form-checkbox").removeClass("layui-form-checked") - } - var z = w.getDataByTr(g(this)); - z.LAY_CHECKED = x; - z.LAY_INDETERMINATE = false - }) - }; - p.prototype.checkParentCB = function(x) { - var u = this.options; - var w = this.getComponents(); - var z = this.getDataByTr(x); - var y = 0, - v = 0; - if (z[u.tree.childName]) { - function t(C) { - for (var B = 0; B < C.length; B++) { - if (C[B].LAY_CHECKED) { - y++ - } else { - v++ - } - if (C[B][u.tree.childName]) { - t(C[B][u.tree.childName]) - } - } - } - t(z[u.tree.childName]) - } - var A = x.children("td").find('input[lay-filter="' + w.checkboxFilter + '"]'); - if (y > 0 && v === 0) { - A.prop("checked", true); - A.removeClass("laytp-form-indeterminate"); - A.next(".layui-form-checkbox").addClass("layui-form-checked"); - z.LAY_CHECKED = true; - z.LAY_INDETERMINATE = false - } else { - if (y === 0 && v > 0) { - A.prop("checked", false); - A.removeClass("laytp-form-indeterminate"); - A.next(".layui-form-checkbox").removeClass("layui-form-checked"); - z.LAY_CHECKED = false; - z.LAY_INDETERMINATE = false - } else { - if (y > 0 && v > 0) { - A.prop("checked", true); - A.data("indeterminate", "true"); - A.addClass("laytp-form-indeterminate"); - A.next(".layui-form-checkbox").addClass("layui-form-checked"); - z.LAY_CHECKED = true; - z.LAY_INDETERMINATE = true - } - } - } - }; - p.prototype.checkChooseAllCB = function() { - var u = this.options; - var w = this.getComponents(); - var x = 0, - v = 0; - function t(A) { - for (var z = 0; z < A.length; z++) { - if (A[z].LAY_CHECKED) { - x++ - } else { - v++ - } - if (A[z][u.tree.childName]) { - t(A[z][u.tree.childName]) - } - } - } - t(u.data); - var y = w.$view.find('input[lay-filter="' + w.chooseAllFilter + '"]'); - if (x > 0 && v === 0) { - y.prop("checked", true); - y.removeClass("laytp-form-indeterminate"); - y.next(".layui-form-checkbox").addClass("layui-form-checked") - } else { - if ((x === 0 && v > 0) || (x === 0 && v === 0)) { - y.prop("checked", false); - y.removeClass("laytp-form-indeterminate"); - y.next(".layui-form-checkbox").removeClass("layui-form-checked") - } else { - if (x > 0 && v > 0) { - y.prop("checked", true); - y.addClass("laytp-form-indeterminate"); - y.next(".layui-form-checkbox").addClass("layui-form-checked") - } - } - } - }; - p.prototype.renderNumberCol = function() { - this.getComponents().$tBody.children("tbody").children("tr").each(function(t) { - g(this).children("td").find(".laytp-tree-table-numbers").text(t + 1) - }) - }; - p.prototype.getIndexById = function(v) { - var t = this.options; - function u(x, y) { - for (var w = 0; w < x.length; w++) { - if (x[w][t.tree.idName] == v) { - return y !== undefined ? y + "-" + w: w - } - if (x[w][t.tree.childName]) { - return u(x[w][t.tree.childName], y !== undefined ? y + "-" + w: w) - } - } - } - return u(t.data) - }; - p.prototype.expand = function(x, u) { - var w = this.getComponents(); - var v = w.$table.children("tbody").children('tr[data-index="' + this.getIndexById(x) + '"]'); - if (!v.hasClass("laytp-tree-table-open")) { - v.children("td").find(".laytp-tree-pack").trigger("click") - } - if (u === false) { - return - } - var t = parseInt(v.data("indent")); - v.prevAll("tr").each(function() { - var y = parseInt(g(this).data("indent")); - if (y < t) { - if (!g(this).hasClass("laytp-tree-table-open")) { - g(this).children("td").find(".laytp-tree-pack").trigger("click") - } - t = y - } - }) - }; - p.prototype.fold = function(v) { - var u = this.getComponents(); - var t = u.$table.children("tbody").children('tr[data-index="' + this.getIndexById(v) + '"]'); - if (t.hasClass("laytp-tree-table-open")) { - t.children("td").find(".laytp-tree-pack").trigger("click") - } - }; - p.prototype.expandAll = function() { - this.getComponents().$table.children("tbody").children("tr").each(function() { - if (!g(this).hasClass("laytp-tree-table-open")) { - g(this).children("td").find(".laytp-tree-pack").trigger("click") - } - }) - }; - p.prototype.foldAll = function() { - this.getComponents().$table.children("tbody").children("tr").each(function() { - if (g(this).hasClass("laytp-tree-table-open")) { - g(this).children("td").find(".laytp-tree-pack").trigger("click") - } - }) - }; - p.prototype.getData = function() { - return this.options.data - }; - p.prototype.reload = function(t) { - this.initOptions(this.options ? g.extend(true, this.options, t) : t); - this.init(); - this.bindEvents() - }; - p.prototype.checkStatus = function(t) { - if (t === undefined) { - t = true - } - var u = []; - this.eachData(function(v, w) { - if ((t || !w.LAY_INDETERMINATE) && w.LAY_CHECKED) { - u.push(g.extend({ - isIndeterminate: w.LAY_INDETERMINATE - }, - w)) - } - }); - return u - }; - p.prototype.setChecked = function(u) { - var w = this; - var v = this.getComponents(); - var t = v.$table.find('input[lay-filter="' + v.radioFilter + '"]'); - if (t.length > 0) { - t.each(function() { - var x = w.getDataByTr(g(this).parentsUntil("tr").parent()); - if (x && u[u.length - 1] == x[w.options.tree.idName]) { - g(this).next(".layui-form-radio").trigger("click"); - return false - } - }) - } else { - v.$table.find('input[lay-filter="' + v.checkboxFilter + '"]').each(function() { - var C = g(this); - var y = C.next(".layui-form-checkbox"); - var z = C.prop("checked"); - var B = C.hasClass("laytp-form-indeterminate"); - var A = w.getDataByTr(C.parentsUntil("tr").parent()); - for (var x = 0; x < u.length; x++) { - if (A && u[x] == A[w.options.tree.idName]) { - if (A[w.options.tree.childName] && A[w.options.tree.childName].length > 0) { - continue - } - if (!z || B) { - y.trigger("click") - } - } - } - }) - } - }; - p.prototype.removeAllChecked = function() { - this.checkSubCB(this.getComponents().$table.children("tbody"), false) - }; - p.prototype.exportData = function(w) { - var y = this.getComponents(); - if ("show" === w) { - y.$toolbar.find(".layui-table-tool-panel").remove(); - y.$toolbar.find('[lay-event="LAYTABLE_EXPORT"]').append(['
      ', '
    • 导出到 Csv 文件
    • ', '
    • 导出到 Excel 文件
    • ', "
    "].join("")) - } else { - if (o.ie) { - return layer.msg("不支持ie导出") - } - if (!w) { - w = "xls" - } - var u = [], - t = []; - this.eachCols(function(A, B) { - if (B.type !== "normal" || B.hide) { - return - } - u.push(B.title || "") - }); - y.$tBody.children("tbody").children("tr").each(function() { - var A = []; - g(this).children("td").each(function() { - var B = g(this); - if (B.data("type") !== "normal" || B.hasClass("layui-hide")) { - return true - } - A.push(B.text().trim().replace(/,/g, ",")) - }); - t.push(A.join(",")) - }); - var v = document.createElement("a"); - var x = encodeURIComponent(u.join(",") + "\r\n" + t.join("\r\n")); - var z = ({ - csv: "text/csv", - xls: "application/vnd.ms-excel" - })[w]; - v.href = "data:" + z + ";charset=utf-8,\ufeff" + x; - v.download = (this.options.title || "table") + "." + w; - document.body.appendChild(v); - v.click(); - document.body.removeChild(v) - } - }; - p.prototype.printTable = function() { - var w = this.getComponents(); - var z = w.$tHead.children("thead").html(); - if (!z) { - z = w.$tBody.children("thead").html() - } - var x = w.$tBody.children("tbody").html(); - var v = w.$tBody.children("colgroup").html(); - var u = g(['', " ", v, "", " ", z, "", " ", x, "", "
    "].join("")); - u.find('col[data-type="checkbox"],col[data-type="radio"],col[data-type="tool"]').remove(); - u.find('td[data-type="checkbox"],td[data-type="radio"],td[data-type="tool"],.layui-hide').remove(); - function A(F) { - var C = F.data("parent"), - D; - if (!C) { - return - } - var E = u.children("thead").children("tr").children('[data-key="' + C + '"]'); - var G = parseInt(E.attr("colspan")) - 1; - E.attr("colspan", G); - if (G === 0) { - E.remove() - } - A(E) - } - u.find('th[data-type="checkbox"],th[data-type="radio"],th[data-type="tool"]').each(function() { - A(g(this)) - }).remove(); - var t = [""].join(""); - var y = window.open("", "_blank"); - y.focus(); - var B = y.document; - B.open(); - B.write(u[0].outerHTML + t); - B.close(); - y.print(); - y.close() - }; - p.prototype.toggleCol = function(A, z, B) { - var w = this.getComponents(); - if (A === undefined) { - w.$toolbar.find(".layui-table-tool-panel").remove(); - var x = ['
      ']; - this.eachCols(function(D, E) { - if (E.type !== "normal") { - return - } - x.push('
    • ") - }); - w.$toolbar.find('[lay-event="LAYTABLE_COLS"]').append(x.join("") + "
    "); - c.render("checkbox", w.filter) - } else { - if (B) { - var u = w.$table.children("tbody").children("tr").children('[data-key="' + B + '"]'); - var C = w.$table.children("thead").children("tr").children('[data-key="' + B + '"]'); - if (A) { - u.removeClass("layui-hide"); - C.removeClass("layui-hide") - } else { - u.addClass("layui-hide"); - C.addClass("layui-hide") - } - var y = B.split("-"); - var v = this.options.cols[y[0]][y[1]]; - v.hide = !A; - function t(G) { - var D = G.data("parent"), - E; - if (!D) { - return - } - var F = w.$table.children("thead").children("tr").children('[data-key="' + D + '"]'); - var H = F.attr("colspan"); - A ? H++:H--; - F.attr("colspan", H); - if (H === 0) { - F.addClass("layui-hide") - } else { - F.removeClass("layui-hide") - } - t(F) - } - t(C); - this.eachCols(function(D, E) { - if (E.key === B) { - E.hide = v.hide - } - }); - this.resize() - } - } - }; - p.prototype.filterData = function(y) { - var A = this.getComponents(); - A.$loading.show(); - if (this.options.data.length > 0) { - A.$loading.addClass("laytp-loading-float") - } - var x = A.$table.children("tbody").children("tr"); - var u = []; - if (typeof y === "string") { - x.each(function() { - var B = g(this).data("index"); - g(this).children("td").each(function() { - if (g(this).text().indexOf(y) !== -1) { - u.push(B); - return false - } - }) - }) - } else { - for (var w = 0; w < y.length; w++) { - u.push(this.getIndexById(y[w])) - } - } - x.addClass("laytp-tree-table-filter-hide"); - for (var v = 0; v < u.length; v++) { - var z = x.filter('[data-index="' + u[v] + '"]'); - z.removeClass("laytp-tree-table-filter-hide"); - var t = parseInt(z.data("indent")); - z.nextAll("tr").each(function() { - if (parseInt(g(this).data("indent")) <= t) { - return false - } - g(this).removeClass("laytp-tree-table-filter-hide") - }); - if (z.hasClass("laytp-tree-table-open")) { - i(z) - } - z.prevAll("tr").each(function() { - var B = parseInt(g(this).data("indent")); - if (B < t) { - g(this).removeClass("laytp-tree-table-filter-hide"); - if (!g(this).hasClass("laytp-tree-table-open")) { - i(g(this)) - } - t = B - } - }) - } - A.$loading.hide(); - A.$loading.removeClass("laytp-loading-float"); - if (u.length === 0) { - A.$empty.show() - } - f(A.$view) - }; - p.prototype.clearFilter = function() { - var t = this.getComponents(); - t.$table.children("tbody").children("tr").removeClass("laytp-tree-table-filter-hide"); - if (this.options.data.length > 0) { - t.$empty.hide() - } - f(t.$view) - }; - p.prototype.refresh = function(x, v) { - if (l(x) === "Array") { - v = x; - x = undefined - } - var u = this.getComponents(); - var w, t; - if (x !== undefined) { - t = u.$table.children("tbody").children('tr[data-index="' + this.getIndexById(x) + '"]'); - w = this.getDataByTr(t) - } - if (v) { - if (this.data.length > 0) { - u.$loading.addClass("laytp-loading-float") - } - u.$loading.show(); - if (v.length > 0 && this.options.tree.isPidData) { - this.renderBodyData(a.pidToChildren(v, this.options.tree.idName, this.options.tree.pidName, this.options.tree.childName), w, t) - } else { - this.renderBodyData(v, w, t) - } - } else { - this.renderBodyAsync(w, t) - } - }; - p.prototype.del = function(x, u) { - if (u === undefined) { - u = this.getIndexById(x) - } - var t = (typeof u === "number" ? [u] : u.split("-")); - var w = this.options.data; - if (t.length > 1) { - for (var v = 0; v < t.length - 1; v++) { - w = w[parseInt(t[v])][this.options.tree.childName] - } - } - w.splice(t[t.length - 1], 1) - }; - p.prototype.update = function(u, t) { - g.extend(true, this.getDataByTr(this.getIndexById(u)), t) - }; - function i(v) { - var t = parseInt(v.data("indent")); - var u = v.hasClass("laytp-tree-table-open"); - if (u) { - v.removeClass("laytp-tree-table-open"); - v.nextAll("tr").each(function() { - if (parseInt(g(this).data("indent")) <= t) { - return false - } - g(this).addClass("laytp-tree-tb-hide") - }) - } else { - v.addClass("laytp-tree-table-open"); - var w; - v.nextAll("tr").each(function() { - var x = parseInt(g(this).data("indent")); - if (x <= t) { - return false - } - if (w !== undefined && x > w) { - return true - } - g(this).removeClass("laytp-tree-tb-hide"); - if (!g(this).hasClass("laytp-tree-table-open")) { - w = parseInt(g(this).data("indent")) - } else { - w = undefined - } - }) - } - f(v.parentsUntil(".laytp-tree-table").last().parent()); - return u - } - function f(w) { - var t = w.children(".laytp-tree-table-head"); - var u = w.children(".laytp-tree-table-box"); - var v = u.width() - u.prop("clientWidth"); - t.css("border-right", (v > 0 ? v: 0) + "px solid #f2f2f2") - } - g(window).resize(function() { - g(".laytp-tree-table").each(function() { - f(g(this)); - var u = g(this).children(".laytp-tree-table-box"); - var t = u.data("full"); - if (t && o.ie && o.ie < 10) { - u.css("height", m() - t) - } - }) - }); - g(document).on("mouseenter", ".laytp-tree-table-cell.single-line", - function() { - var t = g(this).children(".laytp-tree-table-cell-content"); - if (t.prop("scrollWidth") > t.outerWidth()) { - g(this).children(".layui-table-grid-down").show() - } - }).on("mouseleave", ".laytp-tree-table-cell.single-line", - function() { - g(this).children(".layui-table-grid-down").hide() - }); - g(document).on("click", ".laytp-tree-table-cell>.layui-table-grid-down", - function(w) { - w.stopPropagation(); - j(); - var u = g(this).parent(); - u.addClass("laytp-tree-tips-open"); - u.children(".layui-table-grid-down").hide(); - var t = u.parent().outerWidth() + 4; - if (u.outerWidth() < t) { - u.children(".laytp-tree-table-cell-content").css({ - "width": t, - "max-width": t - }) - } - var v = u.parents().filter(".laytp-tree-table-box"); - if (v.length === 0) { - v = u.parents().filter(".laytp-tree-table-head") - } - if (v.length === 0) { - return - } - if ((u.outerWidth() + u.offset().left) + 20 > v.offset().left + v.outerWidth()) { - u.addClass("laytp-show-left") - } - if ((u.outerHeight() + u.offset().top + 10) > v.offset().top + v.outerHeight()) { - u.addClass("laytp-show-bottom") - } - }); - g(document).on("click", ".laytp-tree-table-cell>.laytp-tree-tips-c", - function() { - j() - }); - g(document).on("click", - function() { - j(); - g(".laytp-tree-table .layui-table-tool-panel").remove() - }); - g(document).on("click", ".laytp-tree-table-cell.laytp-tree-tips-open", - function(t) { - t.stopPropagation() - }); - function j() { - g(".laytp-tree-table-cell").removeClass("laytp-tree-tips-open laytp-show-left laytp-show-bottom"); - g(".laytp-tree-table-cell>.laytp-tree-table-cell-content").css({ - "width": "", - "max-width": "" - }) - } - g(document).on("mousedown", ".laytp-tb-resize", - function(x) { - layui.stope(x); - var v = g(this); - v.attr("move", "true"); - var u = v.parent().data("key"); - v.data("x", x.clientX); - var t = v.parent().parent().parent().parent().children("colgroup").children('col[data-key="' + u + '"]').attr("width"); - if (!t || t.toString().indexOf("%") !== -1) { - t = v.parent().outerWidth() - } - v.data("width", t); - g("body").addClass("laytp-tree-table-resizing") - }).on("mousemove", - function(B) { - var y = g('.laytp-tree-table .laytp-tb-resize[move="true"]'); - if (y.length === 0) { - return - } - layui.stope(B); - var t = y.data("x"); - var v = y.data("width"); - var u = parseFloat(v) + B.clientX - parseFloat(t); - if (u <= 0) { - u = 1 - } - var z = k[y.parentsUntil(".laytp-tree-table").last().parent().attr("lay-filter")]; - var A = y.parent().data("key"); - var C = A.split("-"); - z.options.cols[C[0]][C[1]].width = u; - z.eachCols(function(w, x) { - if (x.key === A) { - x.width = u - } - }); - z.resize() - }).on("mouseup", - function(t) { - g('.laytp-tree-table .laytp-tb-resize[move="true"]').attr("move", "false"); - g("body").removeClass("laytp-tree-table-resizing") - }).on("mouseleave", - function(t) { - g('.laytp-tree-table .laytp-tb-resize[move="true"]').attr("move", "false"); - g("body").removeClass("laytp-tree-table-resizing") - }); - function q(x, u, z) { - var y = []; - for (var w = 0; w < x.length; w++) { - var t = false; - for (var v = 0; v < x.length; v++) { - if (x[w][z] == x[v][u]) { - t = true; - break - } - } - if (!t) { - y.push(x[w][z]) - } - } - return y - } - function n(u, v) { - if (l(v) === "Array") { - for (var t = 0; t < v.length; t++) { - if (u == v[t]) { - return true - } - } - } - return u == v - } - function l(t) { - if (t === null) { - return "Null" - } - if (t === undefined) { - return "Undefined" - } - return Object.prototype.toString.call(t).slice(8, -1) - } - function m() { - return document.documentElement.clientHeight || document.body.clientHeight - } - var a = { - render: function(t) { - return new p(t) - }, - reload: function(u, t) { - k[u].reload(t) - }, - on: function(t, u) { - return layui.onevent.call(this, h, t, u) - }, - pidToChildren: function(z, u, A, t, x) { - if (!t) { - t = "children" - } - var y = []; - for (var w = 0; w < z.length; w++) { - if (z[w][u] == z[w][A]) { - return console.error("第" + w + "条数据的" + u + "与" + A + "相同", z[w]) - } - if (x === undefined) { - x = q(z, u, A) - } - if (n(z[w][A], x)) { - var v = this.pidToChildren(z, u, A, t, z[w][u]); - if (v.length > 0) { - z[w][t] = v - } - y.push(z[w]) - } - } - return y - } - }; - g("head").append(['"].join("")); - // g("head").append(['"].join("")); - s("treeTable", a) - }); \ No newline at end of file diff --git a/public/static/component/laytp/module/watermark/watermark.js b/public/static/component/laytp/module/watermark/watermark.js new file mode 100644 index 0000000000000000000000000000000000000000..6c23455eaa9d30a32f61eabc0e747ccebd46fb91 --- /dev/null +++ b/public/static/component/laytp/module/watermark/watermark.js @@ -0,0 +1,224 @@ +/* global Watermark */ +layui.define(['jquery', 'element'], function(exports) { + var $=layui.$; + var _parentEle; + var _wmContainer; + var _wmObserver; + var _wmParentObserver; + var _resizeHandler; + var _windowsWidth = window.outerWidth; + var _windowsHeight = window.outerHeight; + + var _left = 0; + var _top = 0; + + /** + * Create DOM of watermark's container + * @param {Watermark} watermark + */ + var _createContainer = function (watermark) { + watermark._container = document.createElement('div'); + watermark._container.classList.add('cell-watermark-container'); + watermark._container.style.cssText = 'display: block; pointer-events: none;'; + watermark._container.setAttribute('aria-hidden', true); + _parentEle = document.querySelector(watermark.options.appendTo) || document.body; + //获取页面最大宽度 + _windowsWidth = Math.min(_parentEle.scrollWidth, _parentEle.clientWidth); + //获取页面最大高度 + _windowsHeight = Math.min(_parentEle.scrollHeight, _parentEle.clientHeight); + _parentEle.appendChild(watermark._container); + }; + + /** + * Create watermark's DOM + * @param {Watermark} watermark + * @param {Object} options + */ + var _createWatermark = function (watermark, options) { + options.rowSpacing = options.rowSpacing || 60; + options.colSpacing = options.colSpacing || 30; + options.width = options.width || 150; + options.height = options.height || 20; + + let rows = parseInt(_windowsHeight / (options.height + options.rowSpacing)); + let cols = parseInt(_windowsWidth / (options.width + options.colSpacing)); + let offsetLeft =_left+ (_windowsWidth - options.width * cols - options.colSpacing * (cols - 1)) / 2; + let offsetTop = _top+(_windowsHeight - options.height * rows - options.rowSpacing * (rows - 1)) / 2; + let watermarkBase = document.createElement('div'); + watermarkBase.classList.add('cell-watermark'); + watermarkBase.style.cssText = + 'transform: rotate(15deg); opacity: 0.1; font-size: 0.85rem; text-align: center;' + + 'position: absolute; user-select: none; word-break: break-all; overflow: hidden; z-index: 999999;'; + for (let row = 0; row < rows; row++) { + let top = offsetTop + (options.rowSpacing + options.height) * row; + let tempCols = cols; + row % 2 !== 0 && tempCols++; + for (let col = 0; col < tempCols; col++) { + let left = offsetLeft + (options.colSpacing + options.width) * col; + tempCols !== cols && (left -= (options.colSpacing + options.width) / 2); + let watermarkEle = watermarkBase.cloneNode(); + watermarkEle.style.cssText += `left: ${left}px; top: ${top}px; width: ${options.width}px; height: ${options.height}px`; + watermarkEle.style.transform = `rotate(${options.rotate}deg)`; + watermarkEle.style.opacity = options.opacity; + watermarkEle.style.fontSize = `${options.fontSize}rem`; + watermarkEle.style.fontFamily = options.fontFamily; + watermarkEle.innerHTML = options.content; + watermark._container.appendChild(watermarkEle); + } + } + //Backup for recover the watermark's container when the its DOM is removed + _wmContainer = watermark._container; + }; + + /** + * Rerender watermark + * @param {Watermark} watermark + * @param {Object} options + */ + var _render = function (watermark, options) { + _wmObserver.disconnect(); + watermark._container.innerHTML = ''; + _createWatermark(watermark, options); + _wmObserver.observe(watermark._container, { + attributes: true, + childList: true, + characterData: true, + subtree: true + }); + }; + + /** + * Observe watermark and watermark's parentNode mutations + * @param {Watermark} watermark + */ + var _addObserve = function (watermark) { + //Observe watermark element and its child element + _wmObserver = new MutationObserver(function (mutations, observer) { + _render(watermark, watermark.options); + }); + _wmObserver.observe(watermark._container, { + attributes: true, + childList: true, + characterData: true, + subtree: true + }); + //Observe parent element, recreate if the element is deleted + _wmParentObserver = new MutationObserver(function (mutations) { + for (let m of mutations) { + if ( + m.type === 'childList' && + m.removedNodes.length > 0 && + document.querySelectorAll('.cell-watermark-container').length === 0 + ) { + _parentEle.appendChild(_wmContainer); + } + } + }); + _wmParentObserver.observe(watermark._container.parentNode, { + childList: true, + subtree: true + }); + }; + + /** + * Window's resize listener + * @param {Watermark} watermark + */ + var _addResizeListener = function (watermark) { + _resizeHandler = function () { + + //获取页面最大宽度 + var _windowsWidth_n = Math.max(_parentEle.scrollWidth, _parentEle.clientWidth); + //获取页面最大高度 + var _windowsHeight_n = Math.max(_parentEle.scrollHeight, _parentEle.clientHeight); + + + /*if (window.outerHeight !== _windowsHeight || window.outerWidth !== _windowsWidth) { + _windowsHeight = window.outerHeight; + _windowsWidth = window.outerWidth; + _render(watermark, watermark.options); + }*/ + if (_windowsHeight_n !== _windowsHeight || _windowsWidth_n !== _windowsWidth) { + _windowsHeight = _windowsHeight_n; + _windowsWidth = _windowsWidth_n; + _render(watermark, watermark.options); + } + + + }; + window.addEventListener('resize', _resizeHandler); + }; + + /** + * Watermark. + * Create watermark for webpage and automatic adjust when windows resize. + * @param {Object} options + * @param {String} [options.content] watermark's text + * @param {String} [options.appendTo='body'] parent of watermark's container + * @param {Number} [options.width=150] watermark's width. unit: px + * @param {Number} [options.height=20] watermark's height. unit: px + * @param {Number} [options.rowSpacing=60] row spacing of watermarks. unit: px + * @param {Number} [options.colSpacing=30] col spacing of watermarks. unit: px + * @param {Number} [options.rotate=15] watermark's tangent angle. unit: deg + * @param {Number} [options.opacity=0.1] watermark's transparency + * @param {Number} [options.fontSize=0.85] watermark's fontSize. unit: rem + * @param {Number} [options.fontFamily='inherit'] watermark's fontFamily. + * @namespace Watermark + * @class Watermark + * @version 1.0.3 + * @author @Lruihao https://lruihao.cn + */ + function Watermark(options = {}) { + var _proto = Watermark.prototype; + this.options = options; + _createContainer(this); + _createWatermark(this, this.options); + _addObserve(this); + _addResizeListener(this); + + /** + * Upload watermark's text content + * @param {String} content watermark's text + */ + _proto.upload = function (content) { + if (!content) { + return; + } + _wmParentObserver.disconnect(); + _wmObserver.disconnect(); + this.options.content = content; + for (const watermark of this._container.querySelectorAll('.cell-watermark')) { + watermark.innerHTML = content; + } + _wmParentObserver.observe(this._container.parentNode, { + childList: true, + subtree: true + }); + _wmObserver.observe(this._container, { + attributes: true, + childList: true, + characterData: true, + subtree: true + }); + }; + + /** + * Rerender watermark + * @param {Object} options + */ + _proto.render = function (options = {}) { + _render(this, Object.assign(this.options, options)); + }; + + /** + * Force destroy watermark + */ + _proto.destroy = function () { + _wmObserver.disconnect(); + _wmParentObserver.disconnect(); + window.removeEventListener('resize', _resizeHandler); + this._container.parentNode.removeChild(this._container); + }; + } + exports("watermark",Watermark); +}) \ No newline at end of file diff --git a/public/static/component/laytp/module/xmSelect.js b/public/static/component/laytp/module/xmSelect.js index b6340f310fdf199c8656aa4d79aaa3310c1debff..411586df5adb115da505bee50cd709694fd4ab63 100644 --- a/public/static/component/laytp/module/xmSelect.js +++ b/public/static/component/laytp/module/xmSelect.js @@ -367,7 +367,7 @@ n(28)(o, r); o.locals && (e.exports = o.locals) }, - 220 : function(e, t, n) { (t = n(27)(!1)).push([e.i, "@-webkit-keyframes xm-upbit {\n from {\n -webkit-transform: translate3d(0, 30px, 0);\n opacity: 0.3;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n@keyframes xm-upbit {\n from {\n transform: translate3d(0, 30px, 0);\n opacity: 0.3;\n }\n to {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n@-webkit-keyframes loader {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes loader {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\nxm-select {\n background-color: #FFF;\n position: relative;\n border: 1px solid #E6E6E6;\n border-radius: 2px;\n display: block;\n width: 100%;\n cursor: pointer;\n outline: none;\n}\nxm-select * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-size: 14px;\n font-weight: 400;\n text-overflow: ellipsis;\n user-select: none;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n}\nxm-select:hover,\nxm-select:focus {\n border-color: #C0C4CC;\n}\nxm-select > .xm-tips {\n color: #999999;\n padding: 0 10px;\n position: absolute;\n display: flex;\n height: 100%;\n align-items: center;\n}\nxm-select > .xm-icon {\n display: inline-block;\n overflow: hidden;\n position: absolute;\n width: 0;\n height: 0;\n right: 10px;\n top: 50%;\n margin-top: -3px;\n cursor: pointer;\n border: 6px dashed transparent;\n border-top-color: #C2C2C2;\n border-top-style: solid;\n transition: all 0.3s;\n -webkit-transition: all 0.3s;\n}\nxm-select > .xm-icon-expand {\n margin-top: -9px;\n transform: rotate(180deg);\n}\nxm-select > .xm-label.single-row {\n position: absolute;\n top: 0;\n bottom: 0px;\n left: 0px;\n right: 30px;\n overflow: auto hidden;\n}\nxm-select > .xm-label.single-row .scroll {\n overflow-y: hidden;\n}\nxm-select > .xm-label.single-row .label-content {\n flex-wrap: nowrap;\n white-space: nowrap;\n}\nxm-select > .xm-label.auto-row .label-content {\n flex-wrap: wrap;\n padding-right: 30px !important;\n}\nxm-select > .xm-label.auto-row .xm-label-block > span {\n white-space: unset;\n height: 100%;\n}\nxm-select > .xm-label .scroll .label-content {\n display: flex;\n padding: 3px 10px;\n}\nxm-select > .xm-label .xm-label-block {\n display: flex;\n position: relative;\n padding: 0px 5px;\n margin: 2px 5px 2px 0;\n border-radius: 3px;\n align-items: baseline;\n color: #FFF;\n}\nxm-select > .xm-label .xm-label-block > span {\n display: flex;\n color: #FFF;\n white-space: nowrap;\n}\nxm-select > .xm-label .xm-label-block > i {\n color: #FFF;\n margin-left: 8px;\n font-size: 12px;\n cursor: pointer;\n display: flex;\n}\nxm-select > .xm-label .xm-label-block.disabled {\n background-color: #C2C2C2 !important;\n cursor: no-drop !important;\n}\nxm-select > .xm-label .xm-label-block.disabled > i {\n cursor: no-drop !important;\n}\nxm-select > .xm-body {\n position: absolute;\n left: 0;\n top: 42px;\n padding: 5px 0;\n z-index: 999;\n width: 100%;\n min-width: fit-content;\n border: 1px solid #E6E6E6;\n background-color: #fff;\n border-radius: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);\n animation-name: xm-upbit;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n}\nxm-select > .xm-body .scroll-body {\n overflow-x: hidden;\n overflow-y: auto;\n}\nxm-select > .xm-body .scroll-body::-webkit-scrollbar {\n width: 8px;\n}\nxm-select > .xm-body .scroll-body::-webkit-scrollbar-track {\n -webkit-border-radius: 2em;\n -moz-border-radius: 2em;\n -ms-border-radius: 2em;\n border-radius: 2em;\n background-color: #FFF;\n}\nxm-select > .xm-body .scroll-body::-webkit-scrollbar-thumb {\n -webkit-border-radius: 2em;\n -moz-border-radius: 2em;\n -ms-border-radius: 2em;\n border-radius: 2em;\n background-color: #C2C2C2;\n}\nxm-select > .xm-body.up {\n top: auto;\n bottom: 42px;\n}\nxm-select > .xm-body.relative {\n position: relative;\n display: block !important;\n top: 0;\n box-shadow: none;\n border: none;\n animation-name: none;\n animation-duration: 0;\n min-width: 100%;\n}\nxm-select > .xm-body .xm-group {\n cursor: default;\n}\nxm-select > .xm-body .xm-group-item {\n display: inline-block;\n cursor: pointer;\n padding: 0 10px;\n color: #999;\n font-size: 12px;\n}\nxm-select > .xm-body .xm-option {\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 10px;\n cursor: pointer;\n}\nxm-select > .xm-body .xm-option-icon {\n color: transparent;\n display: flex;\n border: 1px solid #E6E6E6;\n border-radius: 3px;\n justify-content: center;\n align-items: center;\n}\nxm-select > .xm-body .xm-option-icon.xm-custom-icon {\n color: unset;\n border: unset;\n}\nxm-select > .xm-body .xm-option-icon-hidden {\n margin-right: -10px;\n}\nxm-select > .xm-body .xm-option-icon.xm-icon-danx {\n border-radius: 100%;\n}\nxm-select > .xm-body .xm-option-content {\n display: flex;\n position: relative;\n padding-left: 15px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #666;\n width: calc(100% - 20px);\n}\nxm-select > .xm-body .xm-option.hide-icon .xm-option-content {\n padding-left: 0;\n}\nxm-select > .xm-body .xm-option.selected.hide-icon .xm-option-content {\n color: #FFF !important;\n}\nxm-select > .xm-body .xm-option .loader {\n width: 0.8em;\n height: 0.8em;\n margin-right: 6px;\n color: #C2C2C2;\n}\nxm-select > .xm-body .xm-select-empty {\n text-align: center;\n color: #999;\n}\nxm-select > .xm-body .disabled {\n cursor: no-drop;\n}\nxm-select > .xm-body .disabled:hover {\n background-color: #FFF;\n}\nxm-select > .xm-body .disabled .xm-option-icon {\n border-color: #C2C2C2 !important;\n}\nxm-select > .xm-body .disabled .xm-option-content {\n color: #C2C2C2 !important;\n}\nxm-select > .xm-body .disabled.selected > .xm-option-icon {\n color: #C2C2C2 !important;\n}\nxm-select > .xm-body .xm-search {\n background-color: #FFF !important;\n position: relative;\n padding: 0 10px;\n margin-bottom: 5px;\n cursor: pointer;\n}\nxm-select > .xm-body .xm-search > i {\n position: absolute;\n color: #666;\n}\nxm-select > .xm-body .xm-search-input {\n border: none;\n border-bottom: 1px solid #E6E6E6;\n padding-left: 27px;\n cursor: text;\n}\nxm-select > .xm-body .xm-paging {\n padding: 0 10px;\n display: flex;\n margin-top: 5px;\n}\nxm-select > .xm-body .xm-paging > span:first-child {\n border-radius: 2px 0 0 2px;\n}\nxm-select > .xm-body .xm-paging > span:last-child {\n border-radius: 0 2px 2px 0;\n}\nxm-select > .xm-body .xm-paging > span {\n display: flex;\n flex: auto;\n justify-content: center;\n vertical-align: middle;\n margin: 0 -1px 0 0;\n background-color: #fff;\n color: #333;\n font-size: 12px;\n border: 1px solid #e2e2e2;\n flex-wrap: nowrap;\n width: 100%;\n overflow: hidden;\n min-width: 50px;\n}\nxm-select > .xm-body .xm-toolbar {\n padding: 0 10px;\n display: flex;\n margin: -3px 0;\n cursor: default;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag {\n cursor: pointer;\n display: flex;\n margin-right: 20px;\n color: #666;\n align-items: baseline;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag:hover {\n opacity: 0.8;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag:active {\n opacity: 1;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag > i {\n margin-right: 2px;\n font-size: 14px;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag:last-child {\n margin-right: 0;\n}\nxm-select > .xm-body .xm-body-custom {\n line-height: initial;\n cursor: default;\n}\nxm-select > .xm-body .xm-body-custom * {\n box-sizing: initial;\n}\nxm-select > .xm-body .xm-tree {\n position: relative;\n}\nxm-select > .xm-body .xm-tree-icon {\n display: inline-block;\n margin-right: 3px;\n cursor: pointer;\n border: 6px dashed transparent;\n border-left-color: #C2C2C2;\n border-left-style: solid;\n transition: all 0.3s;\n -webkit-transition: all 0.3s;\n z-index: 2;\n visibility: hidden;\n}\nxm-select > .xm-body .xm-tree-icon.expand {\n margin-top: 3px;\n margin-right: 5px;\n margin-left: -2px;\n transform: rotate(90deg);\n}\nxm-select > .xm-body .xm-tree-icon.xm-visible {\n visibility: visible;\n}\nxm-select > .xm-body .xm-tree .left-line {\n position: absolute;\n left: 13px;\n width: 0;\n z-index: 1;\n border-left: 1px dotted #c0c4cc !important;\n}\nxm-select > .xm-body .xm-tree .top-line {\n position: absolute;\n left: 13px;\n height: 0;\n z-index: 1;\n border-top: 1px dotted #c0c4cc !important;\n}\nxm-select > .xm-body .xm-tree .xm-tree-icon + .top-line {\n margin-left: 1px;\n}\nxm-select > .xm-body .scroll-body > .xm-tree > .xm-option > .top-line,\nxm-select > .xm-body .scroll-body > .xm-option > .top-line {\n width: 0 !important;\n}\nxm-select > .xm-body .xm-cascader-box {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n padding: 5px 0;\n border: 1px solid #E6E6E6;\n background-color: #fff;\n border-radius: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);\n margin: -1px;\n}\nxm-select > .xm-body .xm-cascader-box::before {\n content: ' ';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n border-right-color: #E6E6E6;\n top: 10px;\n left: -12px;\n}\nxm-select > .xm-body .xm-cascader-box::after {\n content: ' ';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n border-right-color: #fff;\n top: 10px;\n left: -11px;\n}\nxm-select > .xm-body .xm-cascader-scroll {\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n}\nxm-select > .xm-body.cascader {\n width: unset;\n min-width: unset;\n}\nxm-select > .xm-body.cascader .xm-option-content {\n padding-left: 8px;\n}\nxm-select > .xm-body.cascader .disabled .xm-right-arrow {\n color: #C2C2C2 !important;\n}\nxm-select > .xm-body.cascader .hide-icon.disabled .xm-right-arrow {\n color: #999 !important;\n}\nxm-select .xm-input {\n cursor: pointer;\n border-radius: 2px;\n border-width: 1px;\n border-style: solid;\n border-color: #E6E6E6;\n display: block;\n width: 100%;\n box-sizing: border-box;\n background-color: #FFF;\n line-height: 1.3;\n padding-left: 10px;\n outline: 0;\n user-select: text;\n -ms-user-select: text;\n -moz-user-select: text;\n -webkit-user-select: text;\n}\nxm-select .dis {\n display: none;\n}\nxm-select .loading {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(255, 255, 255, 0.6);\n display: flex;\n align-items: center;\n justify-content: center;\n}\nxm-select .loader {\n border: 0.2em dotted currentcolor;\n border-radius: 50%;\n -webkit-animation: 1s loader linear infinite;\n animation: 1s loader linear infinite;\n display: inline-block;\n width: 1em;\n height: 1em;\n color: inherit;\n vertical-align: middle;\n pointer-events: none;\n}\nxm-select .xm-select-default {\n position: absolute;\n width: 100%;\n height: 100%;\n border: none;\n visibility: hidden;\n}\nxm-select .xm-select-disabled {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n cursor: no-drop;\n z-index: 2;\n opacity: 0.3;\n background-color: #FFF;\n}\nxm-select .item--divided {\n border-top: 1px solid #ebeef5;\n width: calc(100% - 20px);\n cursor: initial;\n}\nxm-select .xm-right-arrow {\n position: absolute;\n color: #666;\n right: 5px;\n top: -1px;\n font-weight: 700;\n transform: scale(0.6, 1);\n}\nxm-select .xm-right-arrow::after {\n content: '>';\n}\nxm-select[size='large'] {\n min-height: 40px;\n line-height: 40px;\n}\nxm-select[size='large'] .xm-input {\n height: 40px;\n}\nxm-select[size='large'] .xm-label .scroll .label-content {\n line-height: 34px;\n}\nxm-select[size='large'] .xm-label .xm-label-block {\n height: 30px;\n line-height: 30px;\n}\nxm-select[size='large'] .xm-body .xm-option .xm-option-icon {\n height: 20px;\n width: 20px;\n font-size: 20px;\n}\nxm-select[size='large'] .xm-paging > span {\n height: 34px;\n line-height: 34px;\n}\nxm-select[size='large'] .xm-tree .left-line {\n height: 100%;\n bottom: 20px;\n}\nxm-select[size='large'] .xm-tree .left-line-group {\n height: calc(100% - 40px);\n}\nxm-select[size='large'] .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 19px;\n}\nxm-select[size='large'] .item--divided {\n margin: 10px;\n}\nxm-select {\n min-height: 36px;\n line-height: 36px;\n}\nxm-select .xm-input {\n height: 36px;\n}\nxm-select .xm-label .scroll .label-content {\n line-height: 30px;\n}\nxm-select .xm-label .xm-label-block {\n height: 26px;\n line-height: 26px;\n}\nxm-select .xm-body .xm-option .xm-option-icon {\n height: 18px;\n width: 18px;\n font-size: 18px;\n}\nxm-select .xm-paging > span {\n height: 30px;\n line-height: 30px;\n}\nxm-select .xm-tree .left-line {\n height: 100%;\n bottom: 18px;\n}\nxm-select .xm-tree .left-line-group {\n height: calc(100% - 36px);\n}\nxm-select .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 17px;\n}\nxm-select .item--divided {\n margin: 9px;\n}\nxm-select[size='small'] {\n min-height: 32px;\n line-height: 32px;\n}\nxm-select[size='small'] .xm-input {\n height: 32px;\n}\nxm-select[size='small'] .xm-label .scroll .label-content {\n line-height: 26px;\n}\nxm-select[size='small'] .xm-label .xm-label-block {\n height: 22px;\n line-height: 22px;\n}\nxm-select[size='small'] .xm-body .xm-option .xm-option-icon {\n height: 16px;\n width: 16px;\n font-size: 16px;\n}\nxm-select[size='small'] .xm-paging > span {\n height: 26px;\n line-height: 26px;\n}\nxm-select[size='small'] .xm-tree .left-line {\n height: 100%;\n bottom: 16px;\n}\nxm-select[size='small'] .xm-tree .left-line-group {\n height: calc(100% - 32px);\n}\nxm-select[size='small'] .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 15px;\n}\nxm-select[size='small'] .item--divided {\n margin: 8px;\n}\nxm-select[size='mini'] {\n min-height: 28px;\n line-height: 28px;\n}\nxm-select[size='mini'] .xm-input {\n height: 28px;\n}\nxm-select[size='mini'] .xm-label .scroll .label-content {\n line-height: 22px;\n}\nxm-select[size='mini'] .xm-label .xm-label-block {\n height: 18px;\n line-height: 18px;\n}\nxm-select[size='mini'] .xm-body .xm-option .xm-option-icon {\n height: 14px;\n width: 14px;\n font-size: 14px;\n}\nxm-select[size='mini'] .xm-paging > span {\n height: 22px;\n line-height: 22px;\n}\nxm-select[size='mini'] .xm-tree .left-line {\n height: 100%;\n bottom: 14px;\n}\nxm-select[size='mini'] .xm-tree .left-line-group {\n height: calc(100% - 28px);\n}\nxm-select[size='mini'] .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 13px;\n}\nxm-select[size='mini'] .item--divided {\n margin: 7px;\n}\n.layui-form-pane xm-select {\n margin: -1px -1px -1px 0;\n}\n", ""]), + 220 : function(e, t, n) { (t = n(27)(!1)).push([e.i, "@-webkit-keyframes xm-upbit {\n from {\n -webkit-transform: translate3d(0, 30px, 0);\n opacity: 0.3;\n }\n to {\n -webkit-transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n@keyframes xm-upbit {\n from {\n transform: translate3d(0, 30px, 0);\n opacity: 0.3;\n }\n to {\n transform: translate3d(0, 0, 0);\n opacity: 1;\n }\n}\n@-webkit-keyframes loader {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes loader {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\nxm-select {\n background-color: #FFF;\n position: relative;\n border: 1px solid #E6E6E6;\n border-radius: 2px;\n display: block;\n width: 100%;\n cursor: pointer;\n outline: none;\n}\nxm-select * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n font-size: 12px;\n font-weight: 400;\n text-overflow: ellipsis;\n user-select: none;\n -ms-user-select: none;\n -moz-user-select: none;\n -webkit-user-select: none;\n}\nxm-select:hover,\nxm-select:focus {\n border-color: #C0C4CC;\n}\nxm-select > .xm-tips {\n color: #c6c6c6;\n padding: 0 10px;\n position: absolute;\n display: flex;\n height: 100%;\n align-items: center;\n}\nxm-select > .xm-icon {\n display: inline-block;\n overflow: hidden;\n position: absolute;\n width: 0;\n height: 0;\n right: 10px;\n top: 50%;\n margin-top: -3px;\n cursor: pointer;\n border: 6px dashed transparent;\n border-top-color: #C2C2C2;\n border-top-style: solid;\n transition: all 0.3s;\n -webkit-transition: all 0.3s;\n}\nxm-select > .xm-icon-expand {\n margin-top: -9px;\n transform: rotate(180deg);\n}\nxm-select > .xm-label.single-row {\n position: absolute;\n top: 0;\n bottom: 0px;\n left: 0px;\n right: 30px;\n overflow: auto hidden;\n}\nxm-select > .xm-label.single-row .scroll {\n overflow-y: hidden;\n}\nxm-select > .xm-label.single-row .label-content {\n flex-wrap: nowrap;\n white-space: nowrap;\n}\nxm-select > .xm-label.auto-row .label-content {\n flex-wrap: wrap;\n padding-right: 30px !important;\n}\nxm-select > .xm-label.auto-row .xm-label-block > span {\n white-space: unset;\n height: 100%;\n}\nxm-select > .xm-label .scroll .label-content {\n display: flex;\n padding: 3px 10px;\n}\nxm-select > .xm-label .xm-label-block {\n display: flex;\n position: relative;\n padding: 0px 5px;\n margin: 2px 5px 2px 0;\n border-radius: 3px;\n align-items: baseline;\n color: #FFF;\n}\nxm-select > .xm-label .xm-label-block > span {\n display: flex;\n color: #FFF;\n white-space: nowrap;\n}\nxm-select > .xm-label .xm-label-block > i {\n color: #FFF;\n margin-left: 8px;\n font-size: 12px;\n cursor: pointer;\n display: flex;\n}\nxm-select > .xm-label .xm-label-block.disabled {\n background-color: #C2C2C2 !important;\n cursor: no-drop !important;\n}\nxm-select > .xm-label .xm-label-block.disabled > i {\n cursor: no-drop !important;\n}\nxm-select > .xm-body {\n position: absolute;\n left: 0;\n top: 42px;\n padding: 5px 0;\n z-index: 999;\n width: 100%;\n min-width: fit-content;\n border: 1px solid #E6E6E6;\n background-color: #fff;\n border-radius: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);\n animation-name: xm-upbit;\n animation-duration: 0.3s;\n animation-fill-mode: both;\n}\nxm-select > .xm-body .scroll-body {\n overflow-x: hidden;\n overflow-y: auto;\n}\nxm-select > .xm-body .scroll-body::-webkit-scrollbar {\n width: 8px;\n}\nxm-select > .xm-body .scroll-body::-webkit-scrollbar-track {\n -webkit-border-radius: 2em;\n -moz-border-radius: 2em;\n -ms-border-radius: 2em;\n border-radius: 2em;\n background-color: #FFF;\n}\nxm-select > .xm-body .scroll-body::-webkit-scrollbar-thumb {\n -webkit-border-radius: 2em;\n -moz-border-radius: 2em;\n -ms-border-radius: 2em;\n border-radius: 2em;\n background-color: #C2C2C2;\n}\nxm-select > .xm-body.up {\n top: auto;\n bottom: 42px;\n}\nxm-select > .xm-body.relative {\n position: relative;\n display: block !important;\n top: 0;\n box-shadow: none;\n border: none;\n animation-name: none;\n animation-duration: 0;\n min-width: 100%;\n}\nxm-select > .xm-body .xm-group {\n cursor: default;\n}\nxm-select > .xm-body .xm-group-item {\n display: inline-block;\n cursor: pointer;\n padding: 0 10px;\n color: #999;\n font-size: 12px;\n}\nxm-select > .xm-body .xm-option {\n display: flex;\n align-items: center;\n position: relative;\n padding: 0 10px;\n cursor: pointer;\n}\nxm-select > .xm-body .xm-option-icon {\n color: transparent;\n display: flex;\n border: 1px solid #E6E6E6;\n border-radius: 3px;\n justify-content: center;\n align-items: center;\n}\nxm-select > .xm-body .xm-option-icon.xm-custom-icon {\n color: unset;\n border: unset;\n}\nxm-select > .xm-body .xm-option-icon-hidden {\n margin-right: -10px;\n}\nxm-select > .xm-body .xm-option-icon.xm-icon-danx {\n border-radius: 100%;\n}\nxm-select > .xm-body .xm-option-content {\n display: flex;\n position: relative;\n padding-left: 15px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n color: #666;\n width: calc(100% - 20px);\n}\nxm-select > .xm-body .xm-option.hide-icon .xm-option-content {\n padding-left: 0;\n}\nxm-select > .xm-body .xm-option.selected.hide-icon .xm-option-content {\n color: #FFF !important;\n}\nxm-select > .xm-body .xm-option .loader {\n width: 0.8em;\n height: 0.8em;\n margin-right: 6px;\n color: #C2C2C2;\n}\nxm-select > .xm-body .xm-select-empty {\n text-align: center;\n color: #999;\n}\nxm-select > .xm-body .disabled {\n cursor: no-drop;\n}\nxm-select > .xm-body .disabled:hover {\n background-color: #FFF;\n}\nxm-select > .xm-body .disabled .xm-option-icon {\n border-color: #C2C2C2 !important;\n}\nxm-select > .xm-body .disabled .xm-option-content {\n color: #C2C2C2 !important;\n}\nxm-select > .xm-body .disabled.selected > .xm-option-icon {\n color: #C2C2C2 !important;\n}\nxm-select > .xm-body .xm-search {\n background-color: #FFF !important;\n position: relative;\n padding: 0 10px;\n margin-bottom: 5px;\n cursor: pointer;\n}\nxm-select > .xm-body .xm-search > i {\n position: absolute;\n color: #666;\n}\nxm-select > .xm-body .xm-search-input {\n border: none;\n border-bottom: 1px solid #E6E6E6;\n padding-left: 27px;\n cursor: text;\n}\nxm-select > .xm-body .xm-paging {\n padding: 0 10px;\n display: flex;\n margin-top: 5px;\n}\nxm-select > .xm-body .xm-paging > span:first-child {\n border-radius: 2px 0 0 2px;\n}\nxm-select > .xm-body .xm-paging > span:last-child {\n border-radius: 0 2px 2px 0;\n}\nxm-select > .xm-body .xm-paging > span {\n display: flex;\n flex: auto;\n justify-content: center;\n vertical-align: middle;\n margin: 0 -1px 0 0;\n background-color: #fff;\n color: #333;\n font-size: 12px;\n border: 1px solid #e2e2e2;\n flex-wrap: nowrap;\n width: 100%;\n overflow: hidden;\n min-width: 50px;\n}\nxm-select > .xm-body .xm-toolbar {\n padding: 0 10px;\n display: flex;\n margin: -3px 0;\n cursor: default;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag {\n cursor: pointer;\n display: flex;\n margin-right: 20px;\n color: #666;\n align-items: baseline;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag:hover {\n opacity: 0.8;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag:active {\n opacity: 1;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag > i {\n margin-right: 2px;\n font-size: 14px;\n}\nxm-select > .xm-body .xm-toolbar .toolbar-tag:last-child {\n margin-right: 0;\n}\nxm-select > .xm-body .xm-body-custom {\n line-height: initial;\n cursor: default;\n}\nxm-select > .xm-body .xm-body-custom * {\n box-sizing: initial;\n}\nxm-select > .xm-body .xm-tree {\n position: relative;\n}\nxm-select > .xm-body .xm-tree-icon {\n display: inline-block;\n margin-right: 3px;\n cursor: pointer;\n border: 9px dashed transparent;\n border-left-color: #C2C2C2;\n border-left-style: solid;\n transition: all 0.3s;\n -webkit-transition: all 0.3s;\n z-index: 2;\n visibility: hidden;\n}\nxm-select > .xm-body .xm-tree-icon.expand {\n margin-top: 3px;\n margin-right: 5px;\n margin-left: -5px;\n transform: rotate(90deg);\n}\nxm-select > .xm-body .xm-tree-icon.xm-visible {\n visibility: visible;\n}\nxm-select > .xm-body .xm-tree .left-line {\n position: absolute;\n left: 13px;\n width: 0;\n z-index: 1;\n border-left: 1px dotted #c0c4cc !important;\n}\nxm-select > .xm-body .xm-tree .top-line {\n position: absolute;\n left: 13px;\n height: 0;\n z-index: 1;\n border-top: 1px dotted #c0c4cc !important;\n}\nxm-select > .xm-body .xm-tree .xm-tree-icon + .top-line {\n margin-left: 1px;\n}\nxm-select > .xm-body .scroll-body > .xm-tree > .xm-option > .top-line,\nxm-select > .xm-body .scroll-body > .xm-option > .top-line {\n width: 0 !important;\n}\nxm-select > .xm-body .xm-cascader-box {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n padding: 5px 0;\n border: 1px solid #E6E6E6;\n background-color: #fff;\n border-radius: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12);\n margin: -1px;\n}\nxm-select > .xm-body .xm-cascader-box::before {\n content: ' ';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n border-right-color: #E6E6E6;\n top: 10px;\n left: -12px;\n}\nxm-select > .xm-body .xm-cascader-box::after {\n content: ' ';\n position: absolute;\n width: 0;\n height: 0;\n border: 6px solid transparent;\n border-right-color: #fff;\n top: 10px;\n left: -11px;\n}\nxm-select > .xm-body .xm-cascader-scroll {\n height: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n}\nxm-select > .xm-body.cascader {\n width: unset;\n min-width: unset;\n}\nxm-select > .xm-body.cascader .xm-option-content {\n padding-left: 8px;\n}\nxm-select > .xm-body.cascader .disabled .xm-right-arrow {\n color: #C2C2C2 !important;\n}\nxm-select > .xm-body.cascader .hide-icon.disabled .xm-right-arrow {\n color: #999 !important;\n}\nxm-select .xm-input {\n cursor: pointer;\n border-radius: 2px;\n border-width: 1px;\n border-style: solid;\n border-color: #E6E6E6;\n display: block;\n width: 100%;\n box-sizing: border-box;\n background-color: #FFF;\n line-height: 1.3;\n padding-left: 10px;\n outline: 0;\n user-select: text;\n -ms-user-select: text;\n -moz-user-select: text;\n -webkit-user-select: text;\n}\nxm-select .dis {\n display: none;\n}\nxm-select .loading {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(255, 255, 255, 0.6);\n display: flex;\n align-items: center;\n justify-content: center;\n}\nxm-select .loader {\n border: 0.2em dotted currentcolor;\n border-radius: 50%;\n -webkit-animation: 1s loader linear infinite;\n animation: 1s loader linear infinite;\n display: inline-block;\n width: 1em;\n height: 1em;\n color: inherit;\n vertical-align: middle;\n pointer-events: none;\n}\nxm-select .xm-select-default {\n position: absolute;\n width: 100%;\n height: 100%;\n visibility: hidden;\n}\nxm-select .xm-select-disabled {\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n cursor: no-drop;\n z-index: 2;\n opacity: 0.3;\n background-color: #FFF;\n}\nxm-select .item--divided {\n border-top: 1px solid #ebeef5;\n width: calc(100% - 20px);\n cursor: initial;\n}\nxm-select .xm-right-arrow {\n position: absolute;\n color: #666;\n right: 5px;\n top: -1px;\n font-weight: 700;\n transform: scale(0.6, 1);\n}\nxm-select .xm-right-arrow::after {\n content: '>';\n}\nxm-select[size='large'] {\n min-height: 40px;\n line-height: 40px;\n}\nxm-select[size='large'] .xm-input {\n height: 40px;\n}\nxm-select[size='large'] .xm-label .scroll .label-content {\n line-height: 34px;\n}\nxm-select[size='large'] .xm-label .xm-label-block {\n height: 30px;\n line-height: 30px;\n}\nxm-select[size='large'] .xm-body .xm-option .xm-option-icon {\n height: 20px;\n width: 20px;\n font-size: 20px;\n}\nxm-select[size='large'] .xm-paging > span {\n height: 34px;\n line-height: 34px;\n}\nxm-select[size='large'] .xm-tree .left-line {\n height: 100%;\n bottom: 20px;\n}\nxm-select[size='large'] .xm-tree .left-line-group {\n height: calc(100% - 40px);\n}\nxm-select[size='large'] .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 19px;\n}\nxm-select[size='large'] .item--divided {\n margin: 10px;\n}\nxm-select {\n min-height: 36px;\n line-height: 36px;\n}\nxm-select .xm-input {\n height: 36px;\n}\nxm-select .xm-label .scroll .label-content {\n line-height: 30px;\n}\nxm-select .xm-label .xm-label-block {\n height: 26px;\n line-height: 26px;\n}\nxm-select .xm-body .xm-option .xm-option-icon {\n height: 18px;\n width: 18px;\n font-size: 18px;\n}\nxm-select .xm-paging > span {\n height: 30px;\n line-height: 30px;\n}\nxm-select .xm-tree .left-line {\n height: 100%;\n bottom: 18px;\n}\nxm-select .xm-tree .left-line-group {\n height: calc(100% - 36px);\n}\nxm-select .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 17px;\n}\nxm-select .item--divided {\n margin: 9px;\n}\nxm-select[size='small'] {\n min-height: 32px;\n line-height: 32px;\n}\nxm-select[size='small'] .xm-input {\n height: 32px;\n}\nxm-select[size='small'] .xm-label .scroll .label-content {\n line-height: 26px;\n}\nxm-select[size='small'] .xm-label .xm-label-block {\n height: 22px;\n line-height: 22px;\n}\nxm-select[size='small'] .xm-body .xm-option .xm-option-icon {\n height: 16px;\n width: 16px;\n font-size: 16px;\n}\nxm-select[size='small'] .xm-paging > span {\n height: 26px;\n line-height: 26px;\n}\nxm-select[size='small'] .xm-tree .left-line {\n height: 100%;\n bottom: 16px;\n}\nxm-select[size='small'] .xm-tree .left-line-group {\n height: calc(100% - 32px);\n}\nxm-select[size='small'] .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 15px;\n}\nxm-select[size='small'] .item--divided {\n margin: 8px;\n}\nxm-select[size='mini'] {\n min-height: 28px;\n line-height: 28px;\n}\nxm-select[size='mini'] .xm-input {\n height: 28px;\n}\nxm-select[size='mini'] .xm-label .scroll .label-content {\n line-height: 22px;\n}\nxm-select[size='mini'] .xm-label .xm-label-block {\n height: 18px;\n line-height: 18px;\n}\nxm-select[size='mini'] .xm-body .xm-option .xm-option-icon {\n height: 14px;\n width: 14px;\n font-size: 14px;\n}\nxm-select[size='mini'] .xm-paging > span {\n height: 22px;\n line-height: 22px;\n}\nxm-select[size='mini'] .xm-tree .left-line {\n height: 100%;\n bottom: 14px;\n}\nxm-select[size='mini'] .xm-tree .left-line-group {\n height: calc(100% - 28px);\n}\nxm-select[size='mini'] .xm-tree .xm-tree-icon.xm-hidden + .top-line {\n top: 13px;\n}\nxm-select[size='mini'] .item--divided {\n margin: 7px;\n}\n.layui-form-pane xm-select {\n margin: -1px -1px -1px 0;\n}\n", ""]), e.exports = t }, 221 : function(e, t) { (function(t) { @@ -1418,7 +1418,11 @@ value: function(e) { var t = this, n = e.target.value; - n !== this.__value && (this.searchCid && clearTimeout(this.searchCid), this.inputOver && (this.__value = n, this.searchCid = setTimeout((function() { + // edit by JunStar 2022年8月30日15:46:36 + // 远程搜索有一个BUG,先输入搜索值,然后隐藏xmSelect,然后再展开,之前输入的搜索关键字不存在,但是列表是搜索后的结果 + // laytpForm.js中封装的xmSelect增加了show回调,把之前的搜索值重新赋值了,但是直接删除,因为下面这句不会进行ajax请求,所以先注释掉 + // n !== this.__value && + (this.searchCid && clearTimeout(this.searchCid), this.inputOver && (this.__value = n, this.searchCid = setTimeout((function() { t.callback = !0, t.setState({ filterValue: t.__value, diff --git a/public/static/component/layui/css/layui.css b/public/static/component/layui/css/layui.css index c784a25ea4348cee2e0a407a1569a4d41240941d..f2a4cf3a249dca4ae123d619c60a5c7b6863c27e 100644 --- a/public/static/component/layui/css/layui.css +++ b/public/static/component/layui/css/layui.css @@ -1 +1 @@ -.layui-inline,img{display:inline-block;vertical-align:middle}h1,h2,h3,h4,h5,h6{font-weight:400}a,body{color:#333}.layui-edge,.layui-header,.layui-inline,.layui-main{position:relative}.layui-edge,hr{height:0;overflow:hidden}.layui-layout-body,.layui-side,.layui-side-scroll{overflow-x:hidden}.layui-edge,.layui-elip,hr{overflow:hidden}.layui-btn,.layui-edge,.layui-inline,img{vertical-align:middle}.layui-btn,.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{border:none}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h4,h5,h6{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{line-height:0;margin:10px 0;padding:0;border:none!important;border-bottom:1px solid #eee!important;clear:both;background:0 0}a{text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-inline{*display:inline;*zoom:1}.layui-btn,.layui-btn-group,.layui-edge{display:inline-block}.layui-edge{width:0;border-width:6px;border-style:dashed;border-color:transparent}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;white-space:nowrap}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=256);src:url(../font/iconfont.eot?v=256#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=256) format('woff2'),url(../font/iconfont.woff?v=256) format('woff'),url(../font/iconfont.ttf?v=256) format('truetype'),url(../font/iconfont.svg?v=256#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-search:before{content:"\e615"}.layui-icon-share:before{content:"\e641"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-engine:before{content:"\e628"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-star:before{content:"\e600"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-chat:before{content:"\e606"}.layui-icon-release:before{content:"\e609"}.layui-icon-list:before{content:"\e60a"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-ok-circle:before{content:"\1005"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-table:before{content:"\e62d"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-edit:before{content:"\e642"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-down:before{content:"\e61a"}.layui-icon-file:before{content:"\e621"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-read:before{content:"\e705"}.layui-icon-404:before{content:"\e61c"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-help:before{content:"\e607"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-water:before{content:"\e636"}.layui-icon-username:before{content:"\e66f"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-about:before{content:"\e60b"}.layui-icon-location:before{content:"\e715"}.layui-icon-up:before{content:"\e619"}.layui-icon-pause:before{content:"\e651"}.layui-icon-date:before{content:"\e637"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-delete:before{content:"\e640"}.layui-icon-play:before{content:"\e652"}.layui-icon-top:before{content:"\e604"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-friends:before{content:"\e612"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-ok:before{content:"\e605"}.layui-icon-layer:before{content:"\e638"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-group:before{content:"\e613"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-link:before{content:"\e64c"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-log:before{content:"\e60e"}.layui-icon-key:before{content:"\e683"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-return:before{content:"\e65c"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-form:before{content:"\e63c"}.layui-icon-cart:before{content:"\e657"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-ios:before{content:"\e680"}.layui-icon-at:before{content:"\e687"}.layui-icon-fire:before{content:"\e756"}.layui-icon-set:before{content:"\e716"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-tips:before{content:"\e702"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-addition:before{content:"\e624"}.layui-icon-home:before{content:"\e68e"}.layui-icon-time:before{content:"\e68d"}.layui-icon-user:before{content:"\e770"}.layui-icon-notice:before{content:"\e667"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-voice:before{content:"\e688"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-logout:before{content:"\e682"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-template:before{content:"\e663"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-auz:before{content:"\e672"}.layui-icon-console:before{content:"\e665"}.layui-icon-app:before{content:"\e653"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-next:before{content:"\e65b"}.layui-icon-component:before{content:"\e857"}.layui-icon-android:before{content:"\e684"}.layui-icon-more:before{content:"\e65f"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-camera:before{content:"\e660"}.layui-icon-note:before{content:"\e66e"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-password:before{content:"\e673"}.layui-icon-senior:before{content:"\e674"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-service:before{content:"\e626"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-print:before{content:"\e66d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-export:before{content:"\e67d"}.layui-icon-rss:before{content:"\e808"}.layui-icon-slider:before{content:"\e714"}.layui-icon-email:before{content:"\e618"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-light:before{content:"\e748"}.layui-icon-gift:before{content:"\e627"}.layui-icon-mute:before{content:"\e685"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-music:before{content:"\e690"}.layui-main{width:1140px;margin:0 auto}.layui-header{z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px}.layui-side-scroll{position:relative;width:220px;height:100%}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23262E}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#FAFAFA}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#009688;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;padding:0 15px;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:768px){.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:750px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:970px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1170px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.6;border-left:5px solid #5FB878;border-radius:0 2px 2px 0;background-color:#FAFAFA}.layui-quote-nm{border-style:solid;border-width:1px 1px 1px 5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px;font-weight:300}.layui-field-title{margin:10px 0 20px;border-width:1px 0 0}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#5FB878;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#666}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#FAFAFA;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#666}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card-body,.layui-card-header,.layui-form-label,.layui-form-mid,.layui-form-select,.layui-input-block,.layui-input-inline,.layui-panel,.layui-textarea{position:relative}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-form-select dl,.layui-panel{box-shadow:1px 1px 4px rgb(0 0 0 / 8%)}.layui-card:last-child{margin-bottom:0}.layui-card-header{height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f6f6f6;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{border-width:1px;border-style:solid;border-radius:2px;background-color:#fff;color:#666}.layui-bg-black,.layui-bg-blue,.layui-bg-cyan,.layui-bg-green,.layui-bg-orange,.layui-bg-red{color:#fff!important}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-border,.layui-border-black,.layui-border-blue,.layui-border-cyan,.layui-border-green,.layui-border-orange,.layui-border-red{border-width:1px;border-style:solid}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-bg-red{background-color:#FF5722!important}.layui-bg-orange{background-color:#FFB800!important}.layui-bg-green{background-color:#009688!important}.layui-bg-cyan{background-color:#2F4056!important}.layui-bg-blue{background-color:#1E9FFF!important}.layui-bg-black{background-color:#393D49!important}.layui-bg-gray{background-color:#FAFAFA!important;color:#666!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-layedit,.layui-layedit-tool,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{color:#666!important}.layui-border-red{border-color:#FF5722!important;color:#FF5722!important}.layui-border-orange{border-color:#FFB800!important;color:#FFB800!important}.layui-border-green{border-color:#009688!important;color:#009688!important}.layui-border-cyan{border-color:#2F4056!important;color:#2F4056!important}.layui-border-blue{border-color:#1E9FFF!important;color:#1E9FFF!important}.layui-border-black{border-color:#393D49!important;color:#393D49!important}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.6;font-size:14px;color:#666}.layui-text h1,.layui-text h2,.layui-text h3{font-weight:500;color:#333}.layui-text h1{font-size:30px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text a:not(.layui-btn){color:#01AAED}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text ul{padding:5px 0 5px 15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:10px 0}.layui-text p:first-child{margin-top:0}.layui-font-12{font-size:12px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-red{color:#FF5722!important}.layui-font-orange{color:#FFB800!important}.layui-font-green{color:#009688!important}.layui-font-cyan{color:#2F4056!important}.layui-font-blue{color:#01AAED!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#009688;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{font-size:0}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\9;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#666}.layui-btn-primary:hover{border-color:#009688;color:#333}.layui-btn-normal{background-color:#1E9FFF}.layui-btn-warm{background-color:#FFB800}.layui-btn-danger{background-color:#FF5722}.layui-btn-checked{background-color:#5FB878}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#FBFBFB!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#009688}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#eee!important}.layui-input:focus,.layui-textarea:focus{border-color:#d2d2d2!important}.layui-textarea{min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#FF5722!important}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#F6F6F6;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#5FB878;color:#fff}.layui-form-checkbox,.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-checkbox,.layui-form-checkbox *,.layui-form-switch{display:inline-block;vertical-align:middle}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-top:-3px\9}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;height:30px;line-height:30px;margin-right:10px;padding-right:30px;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox span{padding:0 10px;height:100%;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;top:0;width:30px;height:28px;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;font-size:20px;text-align:center}.layui-form-checkbox:hover i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#5FB878}.layui-form-checked span,.layui-form-checked:hover span{background-color:#5FB878}.layui-form-checked i,.layui-form-checked:hover i{color:#5FB878}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:28px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#666}.layui-form-checkbox[lay-skin=primary] i{right:auto;left:0;width:16px;height:16px;line-height:16px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover i{border-color:#5FB878;color:#fff}.layui-form-checked[lay-skin=primary] i{border-color:#5FB878!important;background-color:#5FB878;color:#fff}.layui-checkbox-disabled[lay-skin=primary] span{background:0 0!important;color:#c2c2c2!important}.layui-checkbox-disabled[lay-skin=primary]:hover i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-switch{position:relative;height:22px;line-height:22px;min-width:35px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch em{position:relative;top:0;width:25px;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#5FB878;background-color:#5FB878}.layui-checkbox-disabled,.layui-checkbox-disabled i{border-color:#eee!important}.layui-form-onswitch i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch em{margin-left:5px;margin-right:21px;color:#fff!important}.layui-checkbox-disabled span{background-color:#eee!important}.layui-checkbox-disabled em{color:#d2d2d2!important}.layui-checkbox-disabled:hover i{color:#fff!important}[lay-radio]{display:none}.layui-form-radio,.layui-form-radio *{display:inline-block;vertical-align:middle}.layui-form-radio{line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio *{font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover *,.layui-form-radioed,.layui-form-radioed>i{color:#5FB878}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled *{color:#c2c2c2!important}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#FAFAFA;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0 1px 0 0}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-layedit{border-width:1px;border-style:solid;border-radius:2px}.layui-layedit-tool{padding:3px 5px;border-bottom-width:1px;border-bottom-style:solid;font-size:0}.layedit-tool-fixed{position:fixed;top:0;border-top:1px solid #eee}.layui-layedit-tool .layedit-tool-mid,.layui-layedit-tool .layui-icon{display:inline-block;vertical-align:middle;text-align:center;font-size:14px}.layui-layedit-tool .layui-icon{position:relative;width:32px;height:30px;line-height:30px;margin:3px 5px;color:#777;cursor:pointer;border-radius:2px}.layui-layedit-tool .layui-icon:hover{color:#393D49}.layui-layedit-tool .layui-icon:active{color:#000}.layui-layedit-tool .layedit-tool-active{background-color:#eee;color:#000}.layui-layedit-tool .layui-disabled,.layui-layedit-tool .layui-disabled:hover{color:#d2d2d2;cursor:not-allowed}.layui-layedit-tool .layedit-tool-mid{width:1px;height:18px;margin:0 10px;background-color:#d2d2d2}.layedit-tool-html{width:50px!important;font-size:30px!important}.layedit-tool-b,.layedit-tool-code,.layedit-tool-help{font-size:16px!important}.layedit-tool-d,.layedit-tool-face,.layedit-tool-image,.layedit-tool-unlink{font-size:18px!important}.layedit-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-layedit-iframe iframe{display:block;width:100%}#LAY_layedit_code{overflow:hidden}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-flow-more a *,.layui-laypage input,.layui-table-view select[lay-ignore]{display:inline-block}.layui-laypage a:hover{color:#009688}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage a{text-decoration:none}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#009688}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#009688!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-table,.layui-table-view{margin:10px 0}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;background-color:#fff;color:#666}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:400}.layui-table tbody tr:hover,.layui-table thead tr,.layui-table-click,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool,.layui-table-total,.layui-table-total tr,.layui-table[lay-even] tr:nth-child(even){background-color:#FAFAFA}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0 0 1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0 1px 0 0}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding:15px 30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:40px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{font-size:12px;padding:5px 10px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:20px;line-height:20px}.layui-table[lay-data]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view .layui-table{position:relative;width:auto;margin:0}.layui-table-view .layui-table[lay-skin=line]{border-width:0 1px 0 0}.layui-table-view .layui-table[lay-skin=row]{border-width:0 0 1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:5px 0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{cursor:default}.layui-table-view .layui-table td[data-edit=text]{cursor:text}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:110}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0 0 1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;padding:5px 0;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-cell,.layui-table-tool-panel li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-table-tool-panel li{padding:0 10px;line-height:30px;-webkit-transition:.5s all;transition:.5s all}.layui-menu li,.layui-menu-body-title a:hover,.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%;padding-left:28px}.layui-table-tool-panel li:hover{background-color:#F6F6F6}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0 0 0 1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#666}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#666}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:28px;line-height:28px;padding:0 15px;position:relative;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01AAED}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{padding:0;text-align:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0 0 0 1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px}.layui-table-tool{position:relative;z-index:890;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0 0 1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-page,.layui-table-total{border-width:1px 0 0;margin-bottom:-1px;overflow:hidden}.layui-table-page{position:relative;width:100%;padding:7px 7px 0;height:41px;font-size:12px;white-space:nowrap}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-7px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;width:100%;height:100%;padding:0 14px 1px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15)}.layui-table-edit:focus{border-color:#5FB878!important}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0;box-sizing:content-box}.layui-colorpicker-alpha-slider,.layui-colorpicker-side-slider,.layui-menu,.layui-menu *,.layui-nav{box-sizing:border-box}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:26px;height:100%;padding:5px 0;border-width:0 0 0 1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.layui-table-grid-down:hover{background-color:#fbfbfb}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-44px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#666}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#666;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-drag,.layui-upload-form,.layui-upload-wrap{display:inline-block}.layui-upload-list{margin:10px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#009688}.layui-upload-drag[lay-over]{border-color:#009688}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff}.layui-menu li,.layui-menu-body-title a{padding:5px 15px}.layui-menu li{position:relative;margin:1px 0;width:calc(100% + 1px);line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer}.layui-menu li:hover{background-color:#F6F6F6}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group .layui-menu-body-title,.layui-menu-item-parent .layui-menu-body-title{padding-right:25px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default;text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:rgba(0,0,0,1)}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-breadcrumb,.layui-tree-btnGroup{visibility:hidden}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#F6F6F6!important;color:#5FB878}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#5FB878}.layui-menu .layui-menu-item-checked:after{position:absolute;right:0;top:0;bottom:0;border-right:3px solid #5FB878;content:""}.layui-menu-body-title{position:relative;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title>.layui-icon{position:absolute;right:0;top:0;font-size:14px}.layui-menu-body-title>.layui-icon-right{right:-1px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#5FB878}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:66666666;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-nav{position:relative;padding:0 20px;background-color:#393D49;color:#fff;border-radius:2px;font-size:0}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:5px;background-color:#5FB878;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap}.layui-nav .layui-nav-child a{color:#666;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#F6F6F6;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#F6F6F6;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0;background-color:#009688}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#009688;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child{display:block;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-breadcrumb{font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#5FB878!important}.layui-breadcrumb a cite{color:#666;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s;position:relative;line-height:40px;min-width:65px;padding:0 15px;text-align:center;cursor:pointer}.layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\9;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#FF5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#009688}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #5FB878}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#FAFAFA}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#5FB878}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#5FB878;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#FF5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#FF5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#666}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\9;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add],.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\9;opacity:1;left:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown]>[carousel-item]>*,.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:15px;bottom:15px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9F9F9F;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-transfer-active,.layui-transfer-box{display:inline-block;vertical-align:middle}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #D9D9D9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#FAFAFA;color:#333;font-family:Courier New;font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 10px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:10px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;margin-top:-8px;color:#666}.layui-transfer-active{margin:0 15px}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#5FB878;border-color:#5FB878;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#FBFBFB;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;padding:0 10px}.layui-transfer-data li:hover{background-color:#F6F6F6;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 10px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:10px 5px 10px 0;font-size:0}.layui-rate li i.layui-icon{font-size:20px;color:#FFB800;margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:26px;height:26px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:34px;height:34px;line-height:32px}.layui-colorpicker.layui-colorpicker-sm{width:24px;height:24px;line-height:22px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:20px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#FFF;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:66666666;width:280px;margin:5px 0;padding:7px;background:#FFF;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#FFF,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #FFF;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#FF0,#0F0,#0FF,#00F,#F0F,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#666}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#FFF;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#FFF;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:66666666;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#FFF;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none}.layui-slider-input-btn i:hover{color:#009688}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-iconClick,.layui-tree-main{display:inline-block;vertical-align:middle}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:20px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:12px;line-height:12px;width:12px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#666}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-btnGroup,.layui-tree-editInput{position:relative;vertical-align:middle;display:inline-block}.layui-tree-spread>.layui-tree-entry>.layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#666}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{height:20px;line-height:20px;padding:0 3px;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout} \ No newline at end of file +blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{display:inline-block;border:none;vertical-align:middle}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h1,h2,h3,h4{font-weight:700}h5,h6{font-weight:500;font-size:100%}button,input,select,textarea{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:1.6;color:#333;color:rgba(0,0,0,.85);font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:0;line-height:0;margin:10px 0;padding:0;border:none;border-bottom:1px solid #eee;clear:both;overflow:hidden;background:0 0}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-clear-space{word-spacing:-5px}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.layui-edge{position:relative;display:inline-block;vertical-align:middle;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent;overflow:hidden}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-show-v{visibility:visible!important}.layui-hide-v{visibility:hidden!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=282);src:url(../font/iconfont.eot?v=282#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=282) format('woff2'),url(../font/iconfont.woff?v=282) format('woff'),url(../font/iconfont.ttf?v=282) format('truetype'),url(../font/iconfont.svg?v=282#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-leaf:before{content:"\e701"}.layui-icon-folder:before{content:"\eabe"}.layui-icon-folder-open:before{content:"\eac1"}.layui-icon-gitee:before{content:"\e69b"}.layui-icon-github:before{content:"\e6a7"}.layui-icon-disabled:before{content:"\e6cc"}.layui-icon-moon:before{content:"\e6c2"}.layui-icon-error:before{content:"\e693"}.layui-icon-success:before{content:"\e697"}.layui-icon-question:before{content:"\e699"}.layui-icon-lock:before{content:"\e69a"}.layui-icon-eye:before{content:"\e695"}.layui-icon-eye-invisible:before{content:"\e696"}.layui-icon-backspace:before{content:"\e694"}.layui-icon-tips-fill:before{content:"\eb2e"}.layui-icon-test:before{content:"\e692"}.layui-icon-clear:before{content:"\e788"}.layui-icon-heart-fill:before{content:"\e68f"}.layui-icon-light:before{content:"\e748"}.layui-icon-music:before{content:"\e690"}.layui-icon-time:before{content:"\e68d"}.layui-icon-ie:before{content:"\e7bb"}.layui-icon-firefox:before{content:"\e686"}.layui-icon-at:before{content:"\e687"}.layui-icon-bluetooth:before{content:"\e689"}.layui-icon-chrome:before{content:"\e68a"}.layui-icon-edge:before{content:"\e68b"}.layui-icon-heart:before{content:"\e68c"}.layui-icon-key:before{content:"\e683"}.layui-icon-android:before{content:"\e684"}.layui-icon-mike:before{content:"\e6dc"}.layui-icon-mute:before{content:"\e685"}.layui-icon-gift:before{content:"\e627"}.layui-icon-windows:before{content:"\e67f"}.layui-icon-ios:before{content:"\e680"}.layui-icon-logout:before{content:"\e682"}.layui-icon-wifi:before{content:"\e7e0"}.layui-icon-rss:before{content:"\e808"}.layui-icon-email:before{content:"\e618"}.layui-icon-reduce-circle:before{content:"\e616"}.layui-icon-transfer:before{content:"\e691"}.layui-icon-service:before{content:"\e626"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-slider:before{content:"\e714"}.layui-icon-print:before{content:"\e66d"}.layui-icon-export:before{content:"\e67d"}.layui-icon-cols:before{content:"\e610"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-username:before{content:"\e66f"}.layui-icon-password:before{content:"\e673"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-auz:before{content:"\e672"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-tips:before{content:"\e702"}.layui-icon-note:before{content:"\e66e"}.layui-icon-senior:before{content:"\e674"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-notice:before{content:"\e667"}.layui-icon-console:before{content:"\e665"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-set:before{content:"\e716"}.layui-icon-template:before{content:"\e663"}.layui-icon-app:before{content:"\e653"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-home:before{content:"\e68e"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-more:before{content:"\e65f"}.layui-icon-camera:before{content:"\e660"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-read:before{content:"\e705"}.layui-icon-location:before{content:"\e715"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-return:before{content:"\e65c"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-fire:before{content:"\e756"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-cart:before{content:"\e657"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-next:before{content:"\e65b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-user:before{content:"\e770"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-component:before{content:"\e857"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-pause:before{content:"\e651"}.layui-icon-play:before{content:"\e652"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-voice:before{content:"\e688"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-link:before{content:"\e64c"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-share:before{content:"\e641"}.layui-icon-edit:before{content:"\e642"}.layui-icon-delete:before{content:"\e640"}.layui-icon-engine:before{content:"\e628"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-table:before{content:"\e62d"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-date:before{content:"\e637"}.layui-icon-layer:before{content:"\e638"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-file:before{content:"\e621"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-404:before{content:"\e61c"}.layui-icon-about:before{content:"\e60b"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-down:before{content:"\e61a"}.layui-icon-up:before{content:"\e619"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-search:before{content:"\e615"}.layui-icon-friends:before{content:"\e612"}.layui-icon-group:before{content:"\e613"}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-log:before{content:"\e60e"}.layui-icon-list:before{content:"\e60a"}.layui-icon-release:before{content:"\e609"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-ok:before{content:"\e605"}.layui-icon-help:before{content:"\e607"}.layui-icon-chat:before{content:"\e606"}.layui-icon-top:before{content:"\e604"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-star:before{content:"\e600"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-ok-circle:before{content:"\1005"}.layui-main{position:relative;width:1160px;margin:0 auto}.layui-header{position:relative;z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:relative;left:200px;right:0;top:0;bottom:0;z-index:900;width:auto;box-sizing:border-box}.layui-layout-body{overflow-x:hidden}.layui-layout-admin .layui-header{position:fixed;top:0;left:0;right:0;background-color:#23292e}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:absolute;top:60px;padding-bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;z-index:990;height:44px;line-height:44px;padding:0 15px;box-shadow:-1px 0 4px rgb(0 0 0 / 12%);background-color:#fafafa}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#16baaa;font-size:16px;box-shadow:0 1px 2px 0 rgb(0 0 0 / 15%)}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:"";display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:767.98px){.layui-container{padding:0 15px}.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:720px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:960px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1150px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}@media screen and (min-width:1400px){.layui-container{width:1330px}.layui-hide-xl{display:none!important}.layui-show-xl-block{display:block!important}.layui-show-xl-inline{display:inline!important}.layui-show-xl-inline-block{display:inline-block!important}.layui-col-xl1,.layui-col-xl10,.layui-col-xl11,.layui-col-xl12,.layui-col-xl2,.layui-col-xl3,.layui-col-xl4,.layui-col-xl5,.layui-col-xl6,.layui-col-xl7,.layui-col-xl8,.layui-col-xl9{float:left}.layui-col-xl1{width:8.33333333%}.layui-col-xl2{width:16.66666667%}.layui-col-xl3{width:25%}.layui-col-xl4{width:33.33333333%}.layui-col-xl5{width:41.66666667%}.layui-col-xl6{width:50%}.layui-col-xl7{width:58.33333333%}.layui-col-xl8{width:66.66666667%}.layui-col-xl9{width:75%}.layui-col-xl10{width:83.33333333%}.layui-col-xl11{width:91.66666667%}.layui-col-xl12{width:100%}.layui-col-xl-offset1{margin-left:8.33333333%}.layui-col-xl-offset2{margin-left:16.66666667%}.layui-col-xl-offset3{margin-left:25%}.layui-col-xl-offset4{margin-left:33.33333333%}.layui-col-xl-offset5{margin-left:41.66666667%}.layui-col-xl-offset6{margin-left:50%}.layui-col-xl-offset7{margin-left:58.33333333%}.layui-col-xl-offset8{margin-left:66.66666667%}.layui-col-xl-offset9{margin-left:75%}.layui-col-xl-offset10{margin-left:83.33333333%}.layui-col-xl-offset11{margin-left:91.66666667%}.layui-col-xl-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space2{margin:-1px}.layui-col-space2>*{padding:1px}.layui-col-space4{margin:-2px}.layui-col-space4>*{padding:2px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space6{margin:-3px}.layui-col-space6>*{padding:3px}.layui-col-space8{margin:-4px}.layui-col-space8>*{padding:4px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space14{margin:-7px}.layui-col-space14>*{padding:7px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space16{margin:-8px}.layui-col-space16>*{padding:8px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space24{margin:-12px}.layui-col-space24>*{padding:12px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space26{margin:-13px}.layui-col-space26>*{padding:13px}.layui-col-space28{margin:-14px}.layui-col-space28>*{padding:14px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-col-space32{margin:-16px}.layui-col-space32>*{padding:16px}.layui-padding-1{padding:4px!important}.layui-padding-2{padding:8px!important}.layui-padding-3{padding:16px!important}.layui-padding-4{padding:32px!important}.layui-padding-5{padding:48px!important}.layui-margin-1{margin:4px!important}.layui-margin-2{margin:8px!important}.layui-margin-3{margin:16px!important}.layui-margin-4{margin:32px!important}.layui-margin-5{margin:48px!important}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:1.8;border-left:5px solid #16b777;border-radius:0 2px 2px 0;background-color:#fafafa}.layui-quote-nm{border-style:solid;border-width:1px;border-left-width:5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px}.layui-field-title{margin:16px 0;border-width:0;border-top-width:1px}.layui-field-box{padding:15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#eee}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#16b777;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#5f5f5f}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#fafafa;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:1.6;color:#5f5f5f}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f8f8f8;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel{position:relative;border-width:1px;border-style:solid;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);background-color:#fff;color:#5f5f5f}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #eee;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-scrollbar-hide{overflow:hidden!important}.layui-bg-red{background-color:#ff5722!important;color:#fff!important}.layui-bg-orange{background-color:#ffb800!important;color:#fff!important}.layui-bg-green{background-color:#16baaa!important;color:#fff!important}.layui-bg-cyan{background-color:#2f4056!important;color:#fff!important}.layui-bg-blue{background-color:#1e9fff!important;color:#fff!important}.layui-bg-purple{background-color:#a233c6!important;color:#fff!important}.layui-bg-black{background-color:#2f363c!important;color:#fff!important}.layui-bg-gray{background-color:#fafafa!important;color:#5f5f5f!important}.layui-badge-rim,.layui-border,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-input-split,.layui-panel,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#eee}.layui-border{border-width:1px;border-style:solid;color:#5f5f5f!important}.layui-border-red{border-width:1px;border-style:solid;border-color:#ff5722!important;color:#ff5722!important}.layui-border-orange{border-width:1px;border-style:solid;border-color:#ffb800!important;color:#ffb800!important}.layui-border-green{border-width:1px;border-style:solid;border-color:#16baaa!important;color:#16baaa!important}.layui-border-cyan{border-width:1px;border-style:solid;border-color:#2f4056!important;color:#2f4056!important}.layui-border-blue{border-width:1px;border-style:solid;border-color:#1e9fff!important;color:#1e9fff!important}.layui-border-purple{border-width:1px;border-style:solid;border-color:#a233c6!important;color:#a233c6!important}.layui-border-black{border-width:1px;border-style:solid;border-color:#2f363c!important;color:#2f363c!important}hr.layui-border-black,hr.layui-border-blue,hr.layui-border-cyan,hr.layui-border-green,hr.layui-border-orange,hr.layui-border-purple,hr.layui-border-red{border-width:0 0 1px}.layui-timeline-item:before{background-color:#eee}.layui-text{line-height:1.8;font-size:14px}.layui-text h1,.layui-text h2,.layui-text h3,.layui-text h4,.layui-text h5,.layui-text h6{color:#3a3a3a}.layui-text h1{font-size:32px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text h4{font-size:16px}.layui-text h5{font-size:14px}.layui-text h6{font-size:13px}.layui-text ol,.layui-text ul{padding-left:15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text ol li{margin-top:5px;list-style-type:decimal}.layui-text-em,.layui-word-aux{color:#999!important;padding-left:5px!important;padding-right:5px!important}.layui-text p{margin:15px 0}.layui-text p:first-child{margin-top:0}.layui-text p:last-child{margin-bottom:0}.layui-text a:not(.layui-btn){color:#01aaed}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text blockquote:not(.layui-elem-quote){padding:5px 15px;border-left:5px solid #eee}.layui-text pre>code:not(.layui-code){padding:15px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-font-12{font-size:12px!important}.layui-font-13{font-size:13px!important}.layui-font-14{font-size:14px!important}.layui-font-16{font-size:16px!important}.layui-font-18{font-size:18px!important}.layui-font-20{font-size:20px!important}.layui-font-22{font-size:22px!important}.layui-font-24{font-size:24px!important}.layui-font-26{font-size:26px!important}.layui-font-28{font-size:28px!important}.layui-font-30{font-size:30px!important}.layui-font-32{font-size:32px!important}.layui-font-red{color:#ff5722!important}.layui-font-orange{color:#ffb800!important}.layui-font-green{color:#16baaa!important}.layui-font-cyan{color:#2f4056!important}.layui-font-blue{color:#01aaed!important}.layui-font-purple{color:#a233c6!important}.layui-font-black{color:#000!important}.layui-font-gray{color:#c2c2c2!important}.layui-btn{display:inline-block;vertical-align:middle;height:38px;line-height:38px;border:1px solid transparent;padding:0 18px;background-color:#16baaa;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border-radius:2px;cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{word-spacing:-5px}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px;word-spacing:normal}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{padding:0 2px;vertical-align:middle\0;vertical-align:bottom}.layui-btn-primary{border-color:#d2d2d2;background:0 0;color:#5f5f5f}.layui-btn-primary:hover{border-color:#16baaa;color:#333}.layui-btn-normal{background-color:#1e9fff}.layui-btn-warm{background-color:#ffb800}.layui-btn-danger{background-color:#ff5722}.layui-btn-checked{background-color:#16b777}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border-color:#eee!important;background-color:#fbfbfb!important;color:#d2d2d2!important;cursor:not-allowed!important;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:12px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#d2d2d2;color:#16baaa}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #d2d2d2}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;color:rgba(0,0,0,.85);border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#d2d2d2!important}.layui-input:focus,.layui-textarea:focus{border-color:#16b777!important;box-shadow:0 0 0 3px rgba(22,183,119,.08)}.layui-textarea{position:relative;min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-input[disabled],.layui-textarea[disabled]{background-color:#fafafa}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{position:relative;margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{position:relative;float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block,.layui-input-inline{position:relative}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{position:relative;float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#ff5722!important;box-shadow:0 0 0 3px rgba(255,87,34,.08)}.layui-input-prefix,.layui-input-split,.layui-input-suffix,.layui-input-suffix .layui-input-affix{position:absolute;right:0;top:0;padding:0 10px;width:35px;height:100%;text-align:center;transition:all .3s;box-sizing:border-box}.layui-input-prefix{left:0;border-radius:2px 0 0 2px}.layui-input-suffix{right:0;border-radius:0 2px 2px 0}.layui-input-split{border-width:1px;border-style:solid}.layui-input-prefix .layui-icon,.layui-input-split .layui-icon,.layui-input-suffix .layui-icon{position:relative;font-size:16px;color:#5f5f5f;transition:all .3s}.layui-input-group{position:relative;display:table;box-sizing:border-box}.layui-input-group>*{display:table-cell;vertical-align:middle;position:relative}.layui-input-group .layui-input{padding-right:15px}.layui-input-group>.layui-input-prefix{width:auto;border-right:0}.layui-input-group>.layui-input-suffix{width:auto;border-left:0}.layui-input-group .layui-input-split{white-space:nowrap}.layui-input-wrap{position:relative;line-height:38px}.layui-input-wrap .layui-input{padding-right:35px}.layui-input-wrap .layui-input::-ms-clear,.layui-input-wrap .layui-input::-ms-reveal{display:none}.layui-input-wrap .layui-input-prefix+.layui-input,.layui-input-wrap .layui-input-prefix~* .layui-input{padding-left:35px}.layui-input-wrap .layui-input-split+.layui-input,.layui-input-wrap .layui-input-split~* .layui-input{padding-left:45px}.layui-input-wrap .layui-input-prefix~.layui-form-select{position:static}.layui-input-wrap .layui-input-prefix,.layui-input-wrap .layui-input-split,.layui-input-wrap .layui-input-suffix{pointer-events:none}.layui-input-wrap .layui-input:hover+.layui-input-split{border-color:#d2d2d2}.layui-input-wrap .layui-input:focus+.layui-input-split{border-color:#16b777}.layui-input-wrap .layui-input.layui-form-danger:focus+.layui-input-split{border-color:#ff5722}.layui-input-wrap .layui-input-prefix.layui-input-split{border-width:0;border-right-width:1px}.layui-input-wrap .layui-input-suffix.layui-input-split{border-width:0;border-left-width:1px}.layui-input-affix{line-height:38px}.layui-input-suffix .layui-input-affix{right:auto;left:-35px}.layui-input-affix .layui-icon{color:rgba(0,0,0,.8);pointer-events:auto!important;cursor:pointer}.layui-input-affix .layui-icon-clear{color:rgba(0,0,0,.3)}.layui-input-affix .layui-icon:hover{color:rgba(0,0,0,.6)}.layui-input-wrap .layui-input-number{width:24px;padding:0}.layui-input-wrap .layui-input-number .layui-icon{position:absolute;right:0;width:100%;height:50%;line-height:normal;font-size:12px}.layui-input-wrap .layui-input-number .layui-icon:before{position:absolute;left:50%;top:50%;margin-top:-6px;margin-left:-6px}.layui-input-wrap .layui-input-number .layui-icon-up{top:0;border-bottom:1px solid #eee}.layui-input-wrap .layui-input-number .layui-icon-down{bottom:0}.layui-input-wrap .layui-input-number .layui-icon:hover{font-weight:700}.layui-input-wrap .layui-input[type=number]::-webkit-inner-spin-button,.layui-input-wrap .layui-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none!important}.layui-input-wrap .layui-input[type=number]{-moz-appearance:textfield}.layui-input-wrap .layui-input[type=number].layui-input-number-out-of-range{color:#ff5722}.layui-form-select{position:relative;color:#5f5f5f}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #eee;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:1px 1px 4px rgb(0 0 0 / 8%);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f8f8f8;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#f8f8f8;color:#16b777;font-weight:700}.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg)}.layui-form-selected .layui-edge{margin-top:-3px\0}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;display:inline-block;vertical-align:middle;height:30px;line-height:30px;margin-right:10px;padding-right:30px;background-color:#fff;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox>*{display:inline-block;vertical-align:middle}.layui-form-checkbox>div{padding:0 11px;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.layui-form-checkbox>div>.layui-icon{line-height:normal}.layui-form-checkbox:hover>div{background-color:#c2c2c2}.layui-form-checkbox>i{position:absolute;right:0;top:0;width:30px;height:100%;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;color:rgba(255,255,255,0);font-size:20px;text-align:center;box-sizing:border-box}.layui-form-checkbox:hover>i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#16b777}.layui-form-checked:hover>div,.layui-form-checked>div{background-color:#16b777}.layui-form-checked:hover>i,.layui-form-checked>i{color:#16b777}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox.layui-checkbox-disabled>div{background-color:#eee!important}.layui-form [lay-checkbox]{display:none}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:24px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary]>div{margin-top:-1px;padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#5f5f5f}.layui-form-checkbox[lay-skin=primary]>i{right:auto;left:0;width:16px;height:16px;line-height:14px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover>i{border-color:#16b777;color:#fff}.layui-form-checked[lay-skin=primary]>i{border-color:#16b777!important;background-color:#16b777;color:#fff}.layui-checkbox-disabled[lay-skin=primary]>div{background:0 0!important}.layui-form-checked.layui-checkbox-disabled[lay-skin=primary]>i{background:#eee!important;border-color:#eee!important}.layui-checkbox-disabled[lay-skin=primary]:hover>i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate{border-color:#16b777}.layui-form-checkbox[lay-skin=primary]>.layui-icon-indeterminate:before{content:'';display:inline-block;vertical-align:middle;position:relative;width:50%;height:1px;margin:-1px auto 0;background-color:#16b777}.layui-form-switch{position:relative;display:inline-block;vertical-align:middle;height:24px;line-height:22px;min-width:44px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;box-sizing:border-box;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch>div{position:relative;top:0;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#16b777;background-color:#16b777}.layui-form-onswitch>i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch>div{margin-left:0;margin-right:21px;color:#fff!important}.layui-checkbox-disabled{border-color:#eee!important}.layui-checkbox-disabled>div{color:#c2c2c2!important}.layui-checkbox-disabled>i{border-color:#eee!important}.layui-checkbox-disabled:hover>i{color:#fff!important}.layui-form-radio{display:inline-block;vertical-align:middle;line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio>*{display:inline-block;vertical-align:middle;font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio:hover>*,.layui-form-radioed,.layui-form-radioed>i{color:#16b777}.layui-radio-disabled>i{color:#eee!important}.layui-radio-disabled>*{color:#c2c2c2!important}.layui-form [lay-radio]{display:none}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#fafafa;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0;border-right-width:1px}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto!important;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #eee}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-laypage a[data-page]{color:#333}.layui-laypage a{text-decoration:none!important;cursor:pointer}.layui-laypage a:hover{color:#16baaa}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#16baaa}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{display:inline-block;width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#16baaa!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px;clear:both}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{display:inline-block;vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;margin:10px 0;background-color:#fff;color:#5f5f5f}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:600}.layui-table-mend{background-color:#fff}.layui-table-click,.layui-table-hover,.layui-table[lay-even] tbody tr:nth-child(even){background-color:#f8f8f8}.layui-table-checked{background-color:#dbfbf0}.layui-table-checked.layui-table-click,.layui-table-checked.layui-table-hover{background-color:#abf8dd}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-mend,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#eee}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0;border-bottom-width:1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0;border-right-width:1px}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding-top:15px;padding-right:30px;padding-bottom:15px;padding-left:30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:50px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{padding-top:5px;padding-right:10px;padding-bottom:5px;padding-left:10px;font-size:12px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:30px;line-height:20px;padding-top:5px;padding-left:11px;padding-right:11px}.layui-table[lay-data],.layui-table[lay-options]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view{clear:both}.layui-table-view .layui-table{position:relative;width:auto;margin:0;border:0;border-collapse:separate}.layui-table-view .layui-table[lay-skin=line]{border-width:0;border-right-width:1px}.layui-table-view .layui-table[lay-skin=row]{border-width:0;border-bottom-width:1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:0;border-top:none;border-left:none}.layui-table-view .layui-table th [lay-event],.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td,.layui-table-view .layui-table th span{cursor:default}.layui-table-view .layui-table td[data-edit]{cursor:text}.layui-table-view .layui-table td[data-edit]:hover:after{position:absolute;left:0;top:0;width:100%;height:100%;box-sizing:border-box;border:1px solid #16b777;pointer-events:none;content:""}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px;line-height:16px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:199}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0;border-bottom-width:1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-column{position:relative;width:100%;min-height:41px;padding:8px 16px;border-width:0;border-bottom-width:1px}.layui-table-column .layui-btn-container{margin-bottom:-8px}.layui-table-column .layui-btn-container .layui-btn{margin-right:8px;margin-bottom:8px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;z-index:399;padding:5px 0!important;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-tool-panel li{padding:0 10px;margin:0!important;line-height:30px;list-style-type:none!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%}.layui-table-tool-panel li:hover{background-color:#f8f8f8}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{padding-left:28px}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0;border-left-width:1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#5f5f5f}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#5f5f5f}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:38px;line-height:28px;padding:6px 15px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-form-checkbox[lay-skin=primary]>div{padding-left:24px}.layui-table-cell .layui-table-link{color:#01aaed}.layui-table-cell .layui-btn{vertical-align:inherit}.layui-table-cell[align=center]{-webkit-box-pack:center}.layui-table-cell[align=right]{-webkit-box-pack:end}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{text-align:center;-webkit-box-pack:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:30px 15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0;border-left-width:1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px;border-width:0;border-left-width:1px}.layui-table-tool{position:relative;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0;border-bottom-width:1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-total{margin-bottom:-1px;border-width:0;border-top-width:1px;overflow:hidden}.layui-table-page{border-width:0;border-top-width:1px;margin-bottom:-1px;white-space:nowrap;overflow:hidden}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-11px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-pagebar{float:right;line-height:23px}.layui-table-pagebar .layui-btn-sm{margin-top:-1px}.layui-table-pagebar .layui-btn-xs{margin-top:2px}.layui-table-view select[lay-ignore]{display:inline-block}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;z-index:189;min-width:100%;min-height:100%;padding:5px 14px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15);background-color:#fff}.layui-table-edit:focus{border-color:#16b777!important}input.layui-input.layui-table-edit{height:100%}select.layui-table-edit{padding:0 0 0 10px;border-color:#d2d2d2}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:24px;height:100%;padding:5px 0;border-width:0;border-left-width:1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px;font-size:14px}.layui-table-grid-down:hover{background-color:#fbfbfb}.layui-table-expanded{height:95px}.layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=lg] .layui-table-expanded .layui-table-cell,.layui-table-view .layui-table[lay-size=sm] .layui-table-expanded .layui-table-cell{height:auto;max-height:94px;white-space:normal;text-overflow:clip}.layui-table-cell-c{position:absolute;bottom:-10px;right:50%;margin-right:-9px;width:20px;height:20px;line-height:18px;cursor:pointer;text-align:center;background-color:#fff;border:1px solid #eee;border-radius:50%;z-index:1000;transition:.3s all;font-size:14px}.layui-table-cell-c:hover{border-color:#16b777}.layui-table-expanded td:hover .layui-table-cell{overflow:auto}.layui-table-main>.layui-table>tbody>tr:last-child>td>.layui-table-cell-c{bottom:0}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-49px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#5f5f5f}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#5f5f5f;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-table-tree-nodeIcon{max-width:20px}.layui-table-tree-nodeIcon>*{width:100%}.layui-table-tree-flexIcon,.layui-table-tree-nodeIcon{margin-right:2px}.layui-table-tree-flexIcon{cursor:pointer}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-list{margin:11px 0}.layui-upload-choose{max-width:200px;padding:0 10px;color:#999;font-size:14px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-upload-drag{position:relative;display:inline-block;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#16baaa}.layui-upload-drag[lay-over]{border-color:#16baaa}.layui-upload-form{display:inline-block}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;display:inline-block;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-btn-container .layui-upload-choose{padding-left:0}.layui-menu{position:relative;margin:5px 0;background-color:#fff;box-sizing:border-box}.layui-menu *{box-sizing:border-box}.layui-menu li,.layui-menu-body-title,.layui-menu-body-title a{padding:5px 15px;color:initial}.layui-menu li{position:relative;margin:0 0 1px;line-height:26px;color:rgba(0,0,0,.8);font-size:14px;white-space:nowrap;cursor:pointer;transition:all .3s}.layui-menu li:hover{background-color:#f8f8f8}.layui-menu li.layui-disabled,.layui-menu li.layui-disabled *{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important}.layui-menu-item-parent:hover>.layui-menu-body-panel{display:block;animation-name:layui-fadein;animation-duration:.3s;animation-fill-mode:both;animation-delay:.2s}.layui-menu-item-group>.layui-menu-body-title,.layui-menu-item-parent>.layui-menu-body-title{padding-right:38px}.layui-menu .layui-menu-item-divider:hover,.layui-menu .layui-menu-item-group:hover,.layui-menu .layui-menu-item-none:hover{background:0 0;cursor:default}.layui-menu .layui-menu-item-group>ul{margin:5px 0 -5px}.layui-menu .layui-menu-item-group>.layui-menu-body-title{color:rgba(0,0,0,.35);user-select:none}.layui-menu .layui-menu-item-none{color:rgba(0,0,0,.35);cursor:default}.layui-menu .layui-menu-item-none{text-align:center}.layui-menu .layui-menu-item-divider{margin:5px 0;padding:0;height:0;line-height:0;border-bottom:1px solid #eee;overflow:hidden}.layui-menu .layui-menu-item-down:hover,.layui-menu .layui-menu-item-up:hover{cursor:pointer}.layui-menu .layui-menu-item-up>.layui-menu-body-title{color:rgba(0,0,0,.8)}.layui-menu .layui-menu-item-up>ul{visibility:hidden;height:0;overflow:hidden}.layui-menu .layui-menu-item-down>.layui-menu-body-title>.layui-icon-down{transform:rotate(180deg)}.layui-menu .layui-menu-item-up>.layui-menu-body-title>.layui-icon-up{transform:rotate(-180deg)}.layui-menu .layui-menu-item-down:hover>.layui-menu-body-title>.layui-icon,.layui-menu .layui-menu-item-up>.layui-menu-body-title:hover>.layui-icon{color:#000}.layui-menu .layui-menu-item-down>ul{visibility:visible;height:auto}.layui-menu .layui-menu-item-checked,.layui-menu .layui-menu-item-checked2{background-color:#f8f8f8!important;color:#16b777}.layui-menu .layui-menu-item-checked a,.layui-menu .layui-menu-item-checked2 a{color:#16b777}.layui-menu .layui-menu-item-checked:after{position:absolute;right:-1px;top:0;bottom:0;border-right:3px solid #16b777;content:""}.layui-menu-body-title{position:relative;margin:-5px -15px;overflow:hidden;text-overflow:ellipsis}.layui-menu-body-title a{display:block;margin:-5px -15px;color:rgba(0,0,0,.8)}.layui-menu-body-title a:hover{transition:all .3s}.layui-menu-body-title>.layui-icon{position:absolute;right:15px;top:50%;margin-top:-6px;line-height:normal;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-menu-body-title>.layui-icon:hover{transition:all .3s}.layui-menu-body-title>.layui-icon-right{right:14px}.layui-menu-body-panel{display:none;position:absolute;top:-7px;left:100%;z-index:1000;margin-left:13px;padding:5px 0}.layui-menu-body-panel:before{content:"";position:absolute;width:20px;left:-16px;top:0;bottom:0}.layui-menu-body-panel-left{left:auto;right:100%;margin:0 13px 0}.layui-menu-body-panel-left:before{left:auto;right:-16px}.layui-menu-lg li{line-height:32px}.layui-menu-lg .layui-menu-body-title a:hover,.layui-menu-lg li:hover{background:0 0;color:#16b777}.layui-menu-lg li .layui-menu-body-panel{margin-left:14px}.layui-menu-lg li .layui-menu-body-panel-left{margin:0 15px 0}.layui-dropdown{position:absolute;left:-999999px;top:-999999px;z-index:77777777;margin:5px 0;min-width:100px}.layui-dropdown:before{content:"";position:absolute;width:100%;height:6px;left:0;top:-6px}.layui-dropdown-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}.layui-nav{position:relative;padding:0 15px;background-color:#2f363c;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;margin-top:0;list-style:none;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar{content:"";position:absolute;left:0;top:0;width:0;height:3px;background-color:#16b777;transition:all .2s;-webkit-transition:all .2s;pointer-events:none}.layui-nav-bar{z-index:1000}.layui-nav[lay-bar=disabled] .layui-nav-bar{display:none}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff;text-decoration:none}.layui-nav .layui-this:after{top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{position:absolute;top:0;right:3px;left:auto!important;margin-top:0;font-size:12px;cursor:pointer;transition:all .2s;-webkit-transition:all .2s}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{transform:rotate(180deg)}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #eee;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap;box-sizing:border-box}.layui-nav .layui-nav-child a{color:#5f5f5f;color:rgba(0,0,0,.8)}.layui-nav .layui-nav-child a:hover{background-color:#f8f8f8;color:rgba(0,0,0,.8)}.layui-nav-child dd{margin:1px 0;position:relative}.layui-nav-child dd.layui-this{background-color:#f8f8f8;color:#000}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-child-r{left:auto;right:0}.layui-nav-child-c{text-align:center}.layui-nav.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:40px}.layui-nav-tree .layui-nav-item a{position:relative;height:40px;line-height:40px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item>a{padding-top:5px;padding-bottom:5px}.layui-nav-tree .layui-nav-more{right:15px}.layui-nav-tree .layui-nav-item>a .layui-nav-more{padding:5px 0}.layui-nav-tree .layui-nav-bar{width:5px;height:0}.layui-side .layui-nav-tree .layui-nav-bar{width:2px}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#16baaa;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-bar{background-color:#16baaa}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;background:0 0;background-color:rgba(0,0,0,.3);box-shadow:none}.layui-nav-tree .layui-nav-child dd{margin:0}.layui-nav-tree .layui-nav-child a{color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-itemed>.layui-nav-child,.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-nav-tree.layui-bg-gray a,.layui-nav.layui-bg-gray .layui-nav-item a{color:#373737;color:rgba(0,0,0,.8)}.layui-nav-tree.layui-bg-gray .layui-nav-itemed>a{color:#000!important}.layui-nav.layui-bg-gray .layui-this a{color:#16b777}.layui-nav-tree.layui-bg-gray .layui-nav-child{padding-left:11px;background:0 0}.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this,.layui-nav-tree.layui-bg-gray .layui-nav-child dd.layui-this a,.layui-nav-tree.layui-bg-gray .layui-this,.layui-nav-tree.layui-bg-gray .layui-this>a{background:0 0!important;color:#16b777!important;font-weight:700}.layui-nav-tree.layui-bg-gray .layui-nav-bar{background-color:#16b777}.layui-breadcrumb{visibility:hidden;font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#16b777!important}.layui-breadcrumb a cite{color:#5f5f5f;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab .layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s}.layui-tab .layui-tab-title li{position:relative;line-height:40px;min-width:65px;margin:0;padding:0 15px;text-align:center;cursor:pointer}.layui-tab .layui-tab-title li a{display:block;padding:0 15px;margin:0 -15px}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:"";width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#eee;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\0;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:15px 0}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#ff5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#16baaa}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #16b777}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#fafafa}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#16b777}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#16b777;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#ff5722}.layui-timeline-item:before{content:"";position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:first-child:before{display:block}.layui-timeline-item:last-child:before{display:none}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px;line-height:22px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#ff5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#5f5f5f}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-5px 6px 0}.layui-nav .layui-badge{margin-top:-10px}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\0;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:none 0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\0;opacity:1;left:20px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#eee;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind ul li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind ul li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:16px;bottom:16px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9f9f9f;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#5f5f5f;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #d9d9d9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{display:block;position:relative;padding:15px;line-height:20px;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333;font-family:"Courier New",Consolas,"Lucida Console";font-size:12px}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#eee}.layui-transfer-box{position:relative;display:inline-block;vertical-align:middle;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 11px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:11px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;line-height:normal;margin-top:-8px;color:#5f5f5f}.layui-transfer-active{margin:0 15px;display:inline-block;vertical-align:middle}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#16b777;border-color:#16b777;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#fbfbfb;border-color:#eee;color:#d2d2d2}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;margin-top:0!important;padding:0 11px;list-style-type:none!important}.layui-transfer-data li:hover{background-color:#f8f8f8;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 11px;text-align:center;color:#999}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:11px 6px 11px 0;font-size:0}.layui-rate li{margin-top:0!important}.layui-rate li i.layui-icon{font-size:20px;color:#ffb800}.layui-rate li i.layui-icon{margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover,.layui-rate-hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:38px;height:38px;border:1px solid #eee;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:44px;height:44px;line-height:30px}.layui-colorpicker.layui-colorpicker-sm{width:30px;height:30px;line-height:20px;padding:3px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:16px;padding:1px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#fff;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;left:-999999px;top:-999999px;z-index:77777777;width:280px;margin:5px 0;padding:7px;background:#fff;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #fff;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#fff;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#5f5f5f}.layui-slider{height:4px;background:#eee;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#fff;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:77777777;white-space:nowrap;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#fff;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:"";position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #eee;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-14px;box-sizing:border-box}.layui-slider-input-btn{position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #eee}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #eee}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none;padding-right:21px}.layui-slider-input-btn i:hover{color:#16baaa}.layui-slider-vertical{width:4px;margin-left:33px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:"";position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:26px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{display:inline-block;vertical-align:middle;cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:"";position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{display:inline-block;vertical-align:middle;position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:14px;line-height:12px;width:14px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#5f5f5f}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:"";position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-spread>.layui-tree-entry .layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#5f5f5f}.layui-tree-btnGroup{visibility:hidden;display:inline-block;vertical-align:middle;position:relative}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{position:relative;display:inline-block;vertical-align:middle;height:20px;line-height:20px;padding:0;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;-webkit-animation-fill-mode:both;animation-duration:.3s;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .2s;-webkit-transition:all .2s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,15px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,15px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@keyframes layui-down{0%{opacity:.3;transform:translate3d(0,-100%,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-down{animation-name:layui-down}@keyframes layui-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-anim-downbit{animation-name:layui-downbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@keyframes layui-scalesmall{0%{opacity:.3;transform:scale(1.5)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall{animation-name:layui-scalesmall}@keyframes layui-scalesmall-spring{0%{opacity:.3;transform:scale(1.5)}80%{opacity:.8;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}.layui-anim-scalesmall-spring{animation-name:layui-scalesmall-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout}html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-wrap{font-size:13px;font-family:"Courier New",Consolas,"Lucida Console"}.layui-code-view{display:block;position:relative;padding:0!important;border:1px solid #eee;border-left-width:6px;background-color:#fff;color:#333}.layui-code-view pre{margin:0!important}.layui-code-header{position:relative;z-index:3;padding:0 11px;height:40px;line-height:40px;border-bottom:1px solid #eee;background-color:#fafafa;font-size:12px}.layui-code-header>.layui-code-header-about{position:absolute;right:11px;top:0;color:#b7b7b7}.layui-code-header-about>a{padding-left:10px}.layui-code-wrap{position:relative;display:block;z-index:1;margin:0!important;padding:11px 0!important;overflow-x:hidden;overflow-y:auto}.layui-code-line{position:relative;line-height:19px;margin:0!important}.layui-code-line-number{position:absolute;left:0;top:0;padding:0 8px;min-width:45px;height:100%;text-align:right;user-select:none;white-space:nowrap;overflow:hidden}.layui-code-line-content{padding:0 11px;word-wrap:break-word;white-space:pre-wrap}.layui-code-ln-mode>.layui-code-wrap>.layui-code-line{padding-left:45px}.layui-code-ln-side{position:absolute;left:0;top:0;bottom:0;z-index:0;width:45px;border-right:1px solid #eee;border-color:rgb(126 122 122 / 15%);background-color:#fafafa;pointer-events:none}.layui-code-nowrap>.layui-code-wrap{overflow:auto}.layui-code-nowrap>.layui-code-wrap>.layui-code-line>.layui-code-line-content{white-space:pre;word-wrap:normal}.layui-code-nowrap>.layui-code-ln-side{border-right-width:0!important;background:0 0!important}.layui-code-fixbar{position:absolute;top:8px;right:11px;padding-right:45px;z-index:5}.layui-code-fixbar>span{position:absolute;right:0;top:0;padding:0 8px;color:#777;transition:all .3s}.layui-code-fixbar>span:hover{color:#16b777}.layui-code-copy{display:none;cursor:pointer}.layui-code-preview>.layui-code-view>.layui-code-fixbar .layui-code-copy{display:none!important}.layui-code-view:hover>.layui-code-fixbar .layui-code-copy{display:block}.layui-code-view:hover>.layui-code-fixbar .layui-code-lang-marker{display:none}.layui-code-theme-dark,.layui-code-theme-dark>.layui-code-header{border-color:rgb(126 122 122 / 15%);background-color:#1f1f1f}.layui-code-theme-dark{border-width:1px;color:#ccc}.layui-code-theme-dark>.layui-code-ln-side{border-right-color:#2a2a2a;background:0 0;color:#6e7681}.layui-code textarea{display:none}.layui-code-preview>.layui-code,.layui-code-preview>.layui-code-view{margin:0}.layui-code-preview>.layui-tab{position:relative;z-index:1;margin-bottom:0}.layui-code-preview>.layui-tab>.layui-tab-title{border-width:0}.layui-code-preview .layui-code-item{display:none}.layui-code-item-preview{position:relative;padding:16px}.layui-code-item-preview>iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.layui-code-tools{position:absolute;right:11px;top:8px;line-height:normal}.layui-code-tools>i{display:inline-block;margin-left:6px;padding:3px;cursor:pointer}.layui-code-tools>i.layui-icon-file-b{color:#999}.layui-code-tools>i:hover{color:#16b777}.layui-code-full{position:fixed;left:0;top:0;z-index:1111111;width:100%;height:100%;background-color:#fff}.layui-code-full .layui-code-item{width:100%!important;border-width:0!important;border-top-width:1px!important}.layui-code-full .layui-code-item,.layui-code-full .layui-code-view,.layui-code-full .layui-code-wrap{height:calc(100vh - 51px)!important;box-sizing:border-box}.layui-code-full .layui-code-item-preview{overflow:auto}.layui-code-view.layui-code-hl{line-height:20px!important;border-left-width:1px}.layui-code-view.layui-code-hl>.layui-code-ln-side{background-color:transparent}.layui-code-theme-dark.layui-code-hl,.layui-code-theme-dark.layui-code-hl>.layui-code-ln-side{border-color:rgb(126 122 122 / 15%)}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate,.layui-laydate *{box-sizing:border-box}.layui-laydate{position:absolute;z-index:99999999;margin:5px 0;border-radius:2px;font-size:14px;line-height:normal;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}.layui-laydate-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");position:fixed;_position:absolute;pointer-events:auto}@keyframes laydate-downbit{0%{opacity:.3;transform:translate3d(0,-5px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}.layui-laydate{animation-name:laydate-downbit}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;padding:0 5px;color:#999;font-size:18px;cursor:pointer}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-set-ym span{padding:0 10px;cursor:pointer}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:0;text-align:center}.layui-laydate-content th{font-weight:400}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.laydate-day-holidays:before{position:absolute;left:0;top:0;font-size:12px;transform:scale(.7)}.laydate-day-holidays:before{content:'\4F11';color:#ff5722}.laydate-day-holidays[type=work]:before{content:'\73ED';color:inherit}.layui-laydate .layui-this .laydate-day-holidays:before{color:#fff}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px}.layui-laydate-footer span{display:inline-block;vertical-align:top;height:26px;line-height:24px;padding:0 10px;border:1px solid #c9c9c9;border-radius:2px;background-color:#fff;font-size:12px;cursor:pointer;white-space:nowrap;transition:all .3s}.layui-laydate-footer span:hover{color:#16b777}.layui-laydate-footer span.layui-laydate-preview{cursor:default;border-color:transparent!important}.layui-laydate-footer span.layui-laydate-preview:hover{color:#777}.layui-laydate-footer span:first-child.layui-laydate-preview{padding-left:0}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{margin:0 0 0 -1px;border-radius:0}.laydate-footer-btns span:first-child{border-radius:2px 0 0 2px}.laydate-footer-btns span:last-child{border-radius:0 2px 2px 0}.layui-laydate-shortcut{width:80px;padding:6px 0;display:inline-block;vertical-align:top;overflow:auto;max-height:276px;text-align:center}.layui-laydate-shortcut+.layui-laydate-main{display:inline-block;border-left:1px solid #e2e2e2}.layui-laydate-shortcut>li{padding:5px 8px;cursor:pointer;line-height:18px}.layui-laydate .layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;box-sizing:border-box;background-color:#fff}.layui-laydate .layui-laydate-list>li{position:relative;display:inline-block;width:33.3%;height:36px;line-height:36px;margin:3px 0;vertical-align:middle;text-align:center;cursor:pointer;list-style:none}.layui-laydate .laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list{display:table}.layui-laydate .laydate-time-list>li{display:table-cell;height:100%;margin:0;line-height:normal;cursor:default}.layui-laydate .laydate-time-list p{position:relative;top:-4px;margin:0;line-height:29px}.layui-laydate .laydate-time-list ol{height:181px;overflow:hidden}.layui-laydate .laydate-time-list>li:hover ol{overflow-y:auto}.layui-laydate .laydate-time-list ol li{width:130%;padding-left:33px;height:30px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate .laydate-time-list-hide-1 ol li{padding-left:53px}.layui-laydate .laydate-time-list-hide-2 ol li{padding-left:117px}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px;color:#ff5722}.layui-laydate-range{width:546px}.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle;max-width:50%}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content,.layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-left:1px solid #e2e2e2}.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-0 .laydate-next-y,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range.layui-laydate-linkage .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#777}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#16b777}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{color:#333}.layui-laydate-content td{color:#777}.layui-laydate-content td.laydate-day-now{color:#16b777}.layui-laydate-content td.laydate-day-now:after{content:'';position:absolute;width:100%;height:30px;left:0;top:0;border:1px solid #16b777;box-sizing:border-box}.layui-laydate-linkage .layui-laydate-content td.laydate-selected>div{background-color:#00f7de}.layui-laydate-linkage .laydate-selected:hover>div{background-color:#00f7de!important}.layui-laydate-content td.laydate-selected:after,.layui-laydate-content td:hover:after{content:none}.layui-laydate-content td>div:hover,.layui-laydate-list li:hover,.layui-laydate-shortcut>li:hover{background-color:#eee;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.layui-laydate-linkage .laydate-selected.laydate-day-next>div,.layui-laydate-linkage .laydate-selected.laydate-day-prev>div{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#ff5722}.laydate-day-mark::after{background-color:#16b777}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#16b777}.layui-laydate .layui-this,.layui-laydate .layui-this>div{background-color:#16baaa!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content td>div{padding:7px 0;height:100%}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#16baaa}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead{border:1px solid #e2e2e2}.layui-laydate-linkage.laydate-theme-grid .laydate-selected,.layui-laydate-linkage.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#16baaa!important}.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-next,.layui-laydate-linkage.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px}.laydate-theme-grid .layui-laydate-content td>div{height:29px;margin-top:-1px}.laydate-theme-circle .layui-laydate-content td.layui-this>div,.laydate-theme-circle .layui-laydate-content td>div{width:28px;height:28px;line-height:28px;border-radius:14px;margin:0 4px;padding:0}.layui-laydate.laydate-theme-circle .layui-laydate-content table td.layui-this{background-color:transparent!important}.laydate-theme-grid.laydate-theme-circle .layui-laydate-content td>div{margin:0 3.5px}.laydate-theme-fullpanel .layui-laydate-main{width:526px}.laydate-theme-fullpanel .layui-laydate-list{width:252px;left:272px}.laydate-theme-fullpanel .laydate-set-ym span{display:none}.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-theme-fullpanel .laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-theme-fullpanel .laydate-time-show .layui-laydate-header .layui-icon{display:inline-block!important}.laydate-theme-fullpanel .laydate-btns-time{display:none}.laydate-theme-fullpanel .laydate-time-list-hide-1 ol li{padding-left:49px}.laydate-theme-fullpanel .laydate-time-list-hide-2 ol li{padding-left:107px}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{opacity:0;transition:opacity .35s cubic-bezier(.34,.69,.1,1);top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch}.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #b2b2b2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-btn a,.layui-layer-setwin span{display:inline-block;vertical-align:middle;*display:inline;*zoom:1}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}@keyframes layer-slide-down{from{transform:translate3d(0,-100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-down-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-100%,0)}}.layer-anim-slide-down{animation-name:layer-slide-down}.layer-anim-slide-down-out{animation-name:layer-slide-down-out}@keyframes layer-slide-left{from{transform:translate3d(100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-left-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(100%,0,0)}}.layer-anim-slide-left{animation-name:layer-slide-left}.layer-anim-slide-left-out{animation-name:layer-slide-left-out}@keyframes layer-slide-up{from{transform:translate3d(0,100%,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-up-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,100%,0)}}.layer-anim-slide-up{animation-name:layer-slide-up}.layer-anim-slide-up-out{animation-name:layer-slide-up-out}@keyframes layer-slide-right{from{transform:translate3d(-100%,0,0)}to{transform:translate3d(0,0,0)}}@keyframes layer-slide-right-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(-100%,0,0)}}.layer-anim-slide-right{animation-name:layer-slide-right}.layer-anim-slide-right-out{animation-name:layer-slide-right-out}.layui-layer-title{padding:0 81px 0 16px;height:50px;line-height:50px;border-bottom:1px solid #f0f0f0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:16px;font-size:0;line-height:initial}.layui-layer-setwin span{position:relative;width:16px;height:16px;line-height:18px;margin-left:10px;text-align:center;font-size:16px;cursor:pointer;color:#000;_overflow:hidden;box-sizing:border-box}.layui-layer-setwin .layui-layer-min:before{content:'';position:absolute;width:12px;border-bottom:1px solid #2e2d3c;left:50%;top:50%;margin:-.5px 0 0 -6px;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-max:after,.layui-layer-setwin .layui-layer-max:before{content:'';position:absolute;left:50%;top:50%;z-index:1;width:9px;height:9px;margin:-5px 0 0 -5px;border:1px solid #2e2d3c}.layui-layer-setwin .layui-layer-max:hover:after,.layui-layer-setwin .layui-layer-max:hover:before{border-color:#2d93ca}.layui-layer-setwin .layui-layer-min:hover:before{background-color:#2d93ca}.layui-layer-setwin .layui-layer-maxmin:after,.layui-layer-setwin .layui-layer-maxmin:before{width:7px;height:7px;margin:-3px 0 0 -3px;background-color:#fff}.layui-layer-setwin .layui-layer-maxmin:after{z-index:0;margin:-5px 0 0 -1px}.layui-layer-setwin .layui-layer-close{cursor:pointer}.layui-layer-setwin .layui-layer-close:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;color:#fff;background-color:#787878;padding:3px;border:3px solid;width:28px;height:28px;font-size:16px;font-weight:bolder;border-radius:50%;margin-left:0;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{opacity:unset;background-color:#3888f6}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:30px;line-height:30px;margin:5px 5px 0;padding:0 16px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none;box-sizing:border-box}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:transparent;background-color:#1e9fff;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:240px}.layui-layer-dialog .layui-layer-content{position:relative;padding:16px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-face{position:absolute;top:18px;left:16px;color:#959595;font-size:32px;_left:-40px}.layui-layer-dialog .layui-layer-content .layui-icon-tips{color:#f39b12}.layui-layer-dialog .layui-layer-content .layui-icon-success{color:#16b777}.layui-layer-dialog .layui-layer-content .layui-icon-error{top:19px;color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-question{color:#ffb800}.layui-layer-dialog .layui-layer-content .layui-icon-lock{color:#787878}.layui-layer-dialog .layui-layer-content .layui-icon-face-cry{color:#ff5722}.layui-layer-dialog .layui-layer-content .layui-icon-face-smile{color:#16b777}.layui-layer-rim{border:6px solid #8d8d8d;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #d3d4d3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-close{color:#fff}.layui-layer-hui .layui-layer-content{padding:11px 24px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:18px 24px 18px 58px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:76px;height:38px;line-height:38px;text-align:center}.layui-layer-loading-icon{font-size:38px;color:#959595}.layui-layer-loading2{text-align:center}.layui-layer-loading-2{position:relative;height:38px}.layui-layer-loading-2:after,.layui-layer-loading-2:before{content:'';position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;border:3px solid #d2d2d2;box-sizing:border-box}.layui-layer-loading-2:after{border-color:transparent;border-left-color:#1e9fff}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan .layui-layer-title{background:#4476a7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;border-top:1px solid #e9e7e7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#e9e7e7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#c9c5c5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92b8b1}.layui-layer-lan .layui-layer-setwin .layui-icon,.layui-layer-molv .layui-layer-setwin .layui-icon{color:#fff}.layui-layer-win10{border:1px solid #aaa;box-shadow:1px 1px 6px rgba(0,0,0,.3);border-radius:none}.layui-layer-win10 .layui-layer-title{height:32px;line-height:32px;padding-left:8px;border-bottom:none;font-size:12px}.layui-layer-win10 .layui-layer-setwin{right:0;top:0}.layui-layer-win10 .layui-layer-setwin span{margin-left:0;width:32px;height:32px;padding:8px}.layui-layer-win10.layui-layer-page .layui-layer-setwin span{width:38px}.layui-layer-win10 .layui-layer-setwin span:hover{background-color:#e5e5e5}.layui-layer-win10 .layui-layer-setwin span.layui-icon-close:hover{background-color:#e81123;color:#fff}.layui-layer-win10.layui-layer-dialog .layui-layer-content{padding:8px 16px 32px;color:#0033bc}.layui-layer-win10.layui-layer-dialog .layui-layer-padding{padding-top:18px;padding-left:58px}.layui-layer-win10 .layui-layer-btn{padding:5px 5px 10px;border-top:1px solid #dfdfdf;background-color:#f0f0f0}.layui-layer-win10 .layui-layer-btn a{height:20px;line-height:18px;background-color:#e1e1e1;border-color:#adadad;color:#000;font-size:12px;transition:all .3s}.layui-layer-win10 .layui-layer-btn a:hover{border-color:#2a8edd;background-color:#e5f1fb}.layui-layer-win10 .layui-layer-btn .layui-layer-btn0{border-color:#0078d7}.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:16px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;display:inline-block;vertical-align:top;border-left:1px solid transparent;border-right:1px solid transparent;min-width:80px;max-width:300px;padding:0 16px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left-color:#eee;border-right-color:#eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left-color:transparent}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{background:0 0;box-shadow:none}.layui-layer-photos .layui-layer-content{overflow:visible;text-align:center}.layui-layer-photos .layer-layer-photos-main img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-photos-next,.layui-layer-photos-prev{position:fixed;top:50%;width:52px;height:52px;line-height:52px;margin-top:-26px;cursor:pointer;font-size:52px;color:#717171}.layui-layer-photos-prev{left:32px}.layui-layer-photos-next{right:32px}.layui-layer-photos-next:hover,.layui-layer-photos-prev:hover{color:#959595}.layui-layer-photos-toolbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:52px;line-height:52px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(0,0,0,.32);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0}.layui-layer-photos-toolbar>*{display:inline-block;vertical-align:top;padding:0 16px;font-size:12px;color:#fff;*display:inline;*zoom:1}.layui-layer-photos-toolbar *{font-size:12px}.layui-layer-photos-header{top:0;bottom:auto}.layui-layer-photos-header>span{cursor:pointer}.layui-layer-photos-header>span:hover{background-color:rgba(51,51,51,.32)}.layui-layer-photos-header .layui-icon{font-size:18px}.layui-layer-photos-footer>h3{max-width:65%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-layer-photos-footer a:hover{text-decoration:underline}.layui-layer-photos-footer em{font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s} \ No newline at end of file diff --git a/public/static/component/layui/font/iconfont.eot b/public/static/component/layui/font/iconfont.eot index 622d7ec82e4afb89ab919a9cc9b25fb6dfe9cf75..3f5e98bb584b80ae0ce0d39b598fb37423ea8220 100644 Binary files a/public/static/component/layui/font/iconfont.eot and b/public/static/component/layui/font/iconfont.eot differ diff --git a/public/static/component/layui/font/iconfont.svg b/public/static/component/layui/font/iconfont.svg index 999ca1fe76a88d4748dd105e7b7ae3ab8affd5eb..4f1920deddba24bdb57bdc74a8abcc160f4d960f 100644 --- a/public/static/component/layui/font/iconfont.svg +++ b/public/static/component/layui/font/iconfont.svg @@ -1,554 +1,405 @@ - - - -Created by iconfont - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + Created by iconfont + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/static/component/layui/font/iconfont.ttf b/public/static/component/layui/font/iconfont.ttf index 06e30f9e2a856cbfefff25111ceb4b9c034f35fd..6e84a89e031247509801ae5d65cc8d20323cb766 100644 Binary files a/public/static/component/layui/font/iconfont.ttf and b/public/static/component/layui/font/iconfont.ttf differ diff --git a/public/static/component/layui/font/iconfont.woff b/public/static/component/layui/font/iconfont.woff index 66a1783caaacf3f01bdfece7652a590e7c676bfc..acd7ed6082729ae968e44aa9f676cd50a37e8eb6 100644 Binary files a/public/static/component/layui/font/iconfont.woff and b/public/static/component/layui/font/iconfont.woff differ diff --git a/public/static/component/layui/font/iconfont.woff2 b/public/static/component/layui/font/iconfont.woff2 index 47e9980f2d183e2e0e284a0000fadbfb1c5647cd..5badd6e38ec077cd5b50da3d41f029f7534be086 100644 Binary files a/public/static/component/layui/font/iconfont.woff2 and b/public/static/component/layui/font/iconfont.woff2 differ diff --git a/public/static/component/layui/layui.js b/public/static/component/layui/layui.js index e9bc9772826a3698b2facfcd1195626e54d333a4..cfcb2be22128fa1afa6fb2edc5e7850390a53c49 100644 --- a/public/static/component/layui/layui.js +++ b/public/static/component/layui/layui.js @@ -1,5 +1 @@ -/*! MIT Licensed */;!function(t){"use strict";var e=t.document,n={modules:{},status:{},timeout:10,event:{}},r=function(){this.v="2.6.8"},o=t.LAYUI_GLOBAL||{},a=function(){var t=e.currentScript?e.currentScript.src:function(){for(var t,n=e.scripts,r=n.length-1,o=r;o>0;o--)if("interactive"===n[o].readyState){t=n[o].src;break}return t||n[r].src}();return n.dir=o.dir||t.substring(0,t.lastIndexOf("/")+1)}(),i=function(e,n){n=n||"log",t.console&&console[n]&&console[n]("layui error hint: "+e)},u="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),l=n.builtin={lay:"lay",layer:"layer",laydate:"laydate",laypage:"laypage",laytpl:"laytpl",layedit:"layedit",form:"form",upload:"upload",dropdown:"dropdown",transfer:"transfer",tree:"tree",table:"table",element:"element",rate:"rate",colorpicker:"colorpicker",slider:"slider",carousel:"carousel",flow:"flow",util:"util",code:"code",jquery:"jquery",all:"all","layui.all":"layui.all"};r.prototype.cache=n,r.prototype.define=function(t,e){var r=this,o="function"==typeof t,a=function(){var t=function(t,e){layui[t]=e,n.status[t]=!0};return"function"==typeof e&&e(function(r,o){t(r,o),n.callback[r]=function(){e(t)}}),this};return o&&(e=t,t=[]),r.use(t,a,null,"define"),r},r.prototype.use=function(r,o,c,s){function p(t,e){var r="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===t.type||r.test((t.currentTarget||t.srcElement).readyState))&&(n.modules[h]=e,v.removeChild(b),function o(){return++m>1e3*n.timeout/4?i(h+" is not a valid module","error"):void(n.status[h]?f():setTimeout(o,4))}())}function f(){c.push(layui[h]),r.length>1?y.use(r.slice(1),o,c,s):"function"==typeof o&&function(){return layui.jquery&&"function"==typeof layui.jquery&&"define"!==s?layui.jquery(function(){o.apply(layui,c)}):void o.apply(layui,c)}()}var y=this,d=n.dir=n.dir?n.dir:a,v=e.getElementsByTagName("head")[0];r=function(){return"string"==typeof r?[r]:"function"==typeof r?(o=r,["all"]):r}(),t.jQuery&&jQuery.fn.on&&(y.each(r,function(t,e){"jquery"===e&&r.splice(t,1)}),layui.jquery=layui.$=jQuery);var h=r[0],m=0;if(c=c||[],n.host=n.host||(d.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===r.length||layui["layui.all"]&&l[h])return f(),y;var g=(l[h]?d+"modules/":/^\{\/\}/.test(y.modules[h])?"":n.base||"")+(y.modules[h]||h)+".js";if(g=g.replace(/^\{\/\}/,""),!n.modules[h]&&layui[h]&&(n.modules[h]=g),n.modules[h])!function S(){return++m>1e3*n.timeout/4?i(h+" is not a valid module","error"):void("string"==typeof n.modules[h]&&n.status[h]?f():setTimeout(S,4))}();else{var b=e.createElement("script");b.async=!0,b.charset="utf-8",b.src=g+function(){var t=n.version===!0?n.v||(new Date).getTime():n.version||"";return t?"?v="+t:""}(),v.appendChild(b),!b.attachEvent||b.attachEvent.toString&&b.attachEvent.toString().indexOf("[native code")<0||u?b.addEventListener("load",function(t){p(t,g)},!1):b.attachEvent("onreadystatechange",function(t){p(t,g)}),n.modules[h]=g}return y},r.prototype.getStyle=function(e,n){var r=e.currentStyle?e.currentStyle:t.getComputedStyle(e,null);return r[r.getPropertyValue?"getPropertyValue":"getAttribute"](n)},r.prototype.link=function(t,r,o){var a=this,u=e.getElementsByTagName("head")[0],l=e.createElement("link");"string"==typeof r&&(o=r);var c=(o||t).replace(/\.|\//g,""),s=l.id="layuicss-"+c,p="creating",f=0;return l.rel="stylesheet",l.href=t+(n.debug?"?v="+(new Date).getTime():""),l.media="all",e.getElementById(s)||u.appendChild(l),"function"!=typeof r?a:(function y(o){var u=100,l=e.getElementById(s);return++f>1e3*n.timeout/u?i(t+" timeout"):void(1989===parseInt(a.getStyle(l,"width"))?(o===p&&l.removeAttribute("lay-status"),l.getAttribute("lay-status")===p?setTimeout(y,u):r()):(l.setAttribute("lay-status",p),setTimeout(function(){y(p)},u)))}(),a)},r.prototype.addcss=function(t,e,r){return layui.link(n.dir+"css/"+t,e,r)},n.callback={},r.prototype.factory=function(t){if(layui[t])return"function"==typeof n.callback[t]?n.callback[t]:null},r.prototype.img=function(t,e,n){var r=new Image;return r.src=t,r.complete?e(r):(r.onload=function(){r.onload=null,"function"==typeof e&&e(r)},void(r.onerror=function(t){r.onerror=null,"function"==typeof n&&n(t)}))},r.prototype.config=function(t){t=t||{};for(var e in t)n[e]=t[e];return this},r.prototype.modules=function(){var t={};for(var e in l)t[e]=l[e];return t}(),r.prototype.extend=function(t){var e=this;t=t||{};for(var n in t)e[n]||e.modules[n]?i(n+" Module already exists","error"):e.modules[n]=t[n];return e},r.prototype.router=function(t){var e=this,t=t||location.hash,n={path:[],search:{},hash:(t.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)?(t=t.replace(/^#\//,""),n.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],e.each(t,function(t,e){/^\w+=/.test(e)?function(){e=e.split("="),n.search[e[0]]=e[1]}():n.path.push(e)}),n):n},r.prototype.url=function(t){var e=this,n={pathname:function(){var e=t?function(){var e=(t.match(/\.[^.]+?\/.+/)||[])[0]||"";return e.replace(/^[^\/]+/,"").replace(/\?.+/,"")}():location.pathname;return e.replace(/^\//,"").split("/")}(),search:function(){var n={},r=(t?function(){var e=(t.match(/\?.+/)||[])[0]||"";return e.replace(/\#.+/,"")}():location.search).replace(/^\?+/,"").split("&");return e.each(r,function(t,e){var r=e.indexOf("="),o=function(){return r<0?e.substr(0,e.length):0!==r&&e.substr(0,r)}();o&&(n[o]=r>0?e.substr(r+1):null)}),n}(),hash:e.router(function(){return t?(t.match(/#.+/)||[])[0]||"/":location.hash}())};return n},r.prototype.data=function(e,n,r){if(e=e||"layui",r=r||localStorage,t.JSON&&t.JSON.parse){if(null===n)return delete r[e];n="object"==typeof n?n:{key:n};try{var o=JSON.parse(r[e])}catch(a){var o={}}return"value"in n&&(o[n.key]=n.value),n.remove&&delete o[n.key],r[e]=JSON.stringify(o),n.key?o[n.key]:o}},r.prototype.sessionData=function(t,e){return this.data(t,e,sessionStorage)},r.prototype.device=function(e){var n=navigator.userAgent.toLowerCase(),r=function(t){var e=new RegExp(t+"/([^\\s\\_\\-]+)");return t=(n.match(e)||[])[1],t||!1},o={os:function(){return/windows/.test(n)?"windows":/linux/.test(n)?"linux":/iphone|ipod|ipad|ios/.test(n)?"ios":/mac/.test(n)?"mac":void 0}(),ie:function(){return!!(t.ActiveXObject||"ActiveXObject"in t)&&((n.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:r("micromessenger")};return e&&!o[e]&&(o[e]=r(e)),o.android=/android/.test(n),o.ios="ios"===o.os,o.mobile=!(!o.android&&!o.ios),o},r.prototype.hint=function(){return{error:i}},r.prototype._typeof=function(t){return null===t?String(t):"object"==typeof t||"function"==typeof t?function(){var e=Object.prototype.toString.call(t).match(/\s(.+)\]$/)||[],n="Function|Array|Date|RegExp|Object|Error|Symbol";return e=e[1]||"Object",new RegExp("\\b("+n+")\\b").test(e)?e.toLowerCase():"object"}():typeof t},r.prototype._isArray=function(e){var n,r=this,o=r._typeof(e);return!(!e||"object"!=typeof e||e===t)&&(n="length"in e&&e.length,"array"===o||0===n||"number"==typeof n&&n>0&&n-1 in e)},r.prototype.each=function(t,e){var n,r=this,o=function(t,n){return e.call(n[t],t,n[t])};if("function"!=typeof e)return r;if(t=t||[],r._isArray(t))for(n=0;no?1:r(t.innerHeight||n.documentElement.clientHeight)},r.position=function(e,o,i){if(o){i=i||{},e!==n&&e!==r("body")[0]||(i.clickType="right");var c="right"===i.clickType?function(){var e=i.e||t.event||{};return{left:e.clientX,top:e.clientY,right:e.clientX,bottom:e.clientY}}():e.getBoundingClientRect(),u=o.offsetWidth,a=o.offsetHeight,f=function(t){return t=t?"scrollLeft":"scrollTop",n.body[t]|n.documentElement[t]},s=function(t){return n.documentElement[t?"clientWidth":"clientHeight"]},l=5,h=c.left,p=c.bottom;"center"===i.align?h-=(u-e.offsetWidth)/2:"right"===i.align&&(h=h-u+e.offsetWidth),h+u+l>s("width")&&(h=s("width")-u-l),hs()&&(c.top>a+l?p=c.top-a-2*l:"right"===i.clickType&&(p=s()-a-2*l,p<0&&(p=0)));var y=i.position;if(y&&(o.style.position=y),o.style.left=h+("fixed"===y?0:f(1))+"px",o.style.top=p+("fixed"===y?0:f())+"px",!r.hasScrollbar()){var d=o.getBoundingClientRect();!i.SYSTEM_RELOAD&&d.bottom+l>s()&&(i.SYSTEM_RELOAD=!0,setTimeout(function(){r.position(e,o,i)},50))}}},r.options=function(t,e){var n=r(t),o=e||"lay-options";try{return new Function("return "+(n.attr(o)||"{}"))()}catch(i){return hint.error("parseerror\uff1a"+i,"error"),{}}},r.isTopElem=function(t){var e=[n,r("body")[0]],o=!1;return r.each(e,function(e,n){if(n===t)return o=!0}),o},o.addStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),r.each(e,function(e,n){new RegExp("\\b"+n+"\\b").test(t)||(t=t+" "+n)}),t.replace(/^\s|\s$/,"")},o.removeStr=function(t,e){return t=t.replace(/\s+/," "),e=e.replace(/\s+/," ").split(" "),r.each(e,function(e,n){var r=new RegExp("\\b"+n+"\\b");r.test(t)&&(t=t.replace(r,""))}),t.replace(/\s+/," ").replace(/^\s|\s$/,"")},o.prototype.find=function(t){var e=this,n=0,o=[],i="object"==typeof t;return this.each(function(r,c){for(var u=i?c.contains(t):c.querySelectorAll(t||null);n0)return n[0].style[t]}():n.each(function(n,i){"object"==typeof t?r.each(t,function(t,e){i.style[t]=o(e)}):i.style[t]=o(e)})},o.prototype.width=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetWidth}():e.each(function(n,r){e.css("width",t)})},o.prototype.height=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].offsetHeight}():e.each(function(n,r){e.css("height",t)})},o.prototype.attr=function(t,e){var n=this;return void 0===e?function(){if(n.length>0)return n[0].getAttribute(t)}():n.each(function(n,r){r.setAttribute(t,e)})},o.prototype.removeAttr=function(t){return this.each(function(e,n){n.removeAttribute(t)})},o.prototype.html=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].innerHTML}():this.each(function(e,n){n.innerHTML=t})},o.prototype.val=function(t){var e=this;return void 0===t?function(){if(e.length>0)return e[0].value}():this.each(function(e,n){n.value=t})},o.prototype.append=function(t){return this.each(function(e,n){"object"==typeof t?n.appendChild(t):n.innerHTML=n.innerHTML+t})},o.prototype.remove=function(t){return this.each(function(e,n){t?n.removeChild(t):n.parentNode.removeChild(n)})},o.prototype.on=function(t,e){return this.each(function(n,r){r.attachEvent?r.attachEvent("on"+t,function(t){t.target=t.srcElement,e.call(r,t)}):r.addEventListener(t,e,!1)})},o.prototype.off=function(t,e){return this.each(function(n,r){r.detachEvent?r.detachEvent("on"+t,e):r.removeEventListener(t,e,!1)})},t.lay=r,t.layui&&layui.define&&layui.define(function(t){t(e,r)})}(window,window.document);layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error: ";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\(.)/g,"$1")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\(.)/g,"$1")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?''+a.prev+"":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push(''+(a.first||1)+"");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r2&&e.push('');r<=u;r++)r===a.curr?e.push('"+r+""):e.push(''+r+"");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1…'),0!==t&&e.push(''+(a.last||a.pages)+"")),e.join("")}(),next:function(){return a.next?''+a.next+"":""}(),count:'\u5171 '+a.count+" \u6761",limit:function(){var e=['"}(),refresh:['','',""].join(""),skip:function(){return['到第','','页',""].join("")}()};return['
    ',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"
    "].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;oi.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});!function(e,t){"use strict";var a=e.layui&&layui.define,n={getPath:e.lay&&lay.getPath?lay.getPath:"",link:function(t,a,n){l.path&&e.lay&&lay.layui&&lay.layui.link(l.path+t,a,n)}},i=e.LAYUI_GLOBAL||{},l={v:"5.3.1",config:{},index:e.laydate&&e.laydate.v?1e5:0,path:i.laydate_dir||n.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",i="",r=(a?"modules/laydate/":"theme/")+"default/laydate.css?v="+l.v+i;return a?layui.addcss(r,e,t):n.link(r,e,t),this}},r=function(){var e=this,t=e.config,a=t.id;return r.that[a]=e,{hint:function(t){e.hint.call(e,t)},config:e.config}},o="laydate",s=".layui-laydate",y="layui-this",d="laydate-disabled",m=[100,2e5],c="layui-laydate-static",u="layui-laydate-list",h="layui-laydate-hint",f="layui-laydate-footer",p=".laydate-btns-confirm",g="laydate-time-text",v="laydate-btns-time",T="layui-laydate-preview",D=function(e){var t=this;t.index=++l.index,t.config=lay.extend({},t.config,l.config,e),e=t.config,e.id="id"in e?e.id:t.index,l.ready(function(){t.init()})},w="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s";r.formatArr=function(e){return(e||"").match(new RegExp(w+"|.","g"))||[]},D.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},D.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"click",show:!1,showBottom:!0,isPreview:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},D.prototype.lang=function(){var e=this,t=e.config,a={cn:{weeks:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],time:["\u65f6","\u5206","\u79d2"],timeTips:"\u9009\u62e9\u65f6\u95f4",startTime:"\u5f00\u59cb\u65f6\u95f4",endTime:"\u7ed3\u675f\u65f6\u95f4",dateTips:"\u8fd4\u56de\u65e5\u671f",month:["\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341","\u5341\u4e00","\u5341\u4e8c"],tools:{confirm:"\u786e\u5b9a",clear:"\u6e05\u7a7a",now:"\u73b0\u5728"},timeout:"\u7ed3\u675f\u65f6\u95f4\u4e0d\u80fd\u65e9\u4e8e\u5f00\u59cb\u65f6\u95f4
    \u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
    \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
    ","
    \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
    Please re-select",invalidDate:"Invalid date",formatError:["The date format error
    Must be followed\uff1a
    ","
    It has been reset"],preview:"The selected result"}};return a[t.lang]||a.cn},D.prototype.init=function(){var t=this,a=t.config,n="static"===a.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};a.elem=lay(a.elem),a.eventElem=lay(a.eventElem),a.elem[0]&&(t.rangeStr=a.range?"string"==typeof a.range?a.range:"-":"","array"===layui._typeof(a.range)&&(t.rangeElem=[lay(a.range[0]),lay(a.range[1])]),i[a.type]||(e.console&&console.error&&console.error("laydate type error:'"+a.type+"' is not supported"),a.type="date"),a.format===i.date&&(a.format=i[a.type]||i.date),t.format=r.formatArr(a.format),t.EXP_IF="",t.EXP_SPLIT="",lay.each(t.format,function(e,a){var n=new RegExp(w).test(a)?"\\d{"+function(){return new RegExp(w).test(t.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;t.EXP_IF=t.EXP_IF+n,t.EXP_SPLIT=t.EXP_SPLIT+"("+n+")"}),t.EXP_IF_ONE=new RegExp("^"+t.EXP_IF+"$"),t.EXP_IF=new RegExp("^"+(a.range?t.EXP_IF+"\\s\\"+t.rangeStr+"\\s"+t.EXP_IF:t.EXP_IF)+"$"),t.EXP_SPLIT=new RegExp("^"+t.EXP_SPLIT+"$",""),t.isInput(a.elem[0])||"focus"===a.trigger&&(a.trigger="click"),a.elem.attr("lay-key")||(a.elem.attr("lay-key",t.index),a.eventElem.attr("lay-key",t.index)),a.mark=lay.extend({},a.calendar&&"cn"===a.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-9-18":"\u56fd\u803b","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},a.mark),lay.each(["min","max"],function(e,t){var n=[],i=[];if("number"==typeof a[t]){var l=a[t],r=(new Date).getTime(),o=864e5,s=new Date(l?l0)return!0;var t=lay.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("div",{"class":"laydate-set-ym"}),t=lay.elem("span"),a=lay.elem("span");return e.appendChild(t),e.appendChild(a),e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=lay.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],l=lay.elem("div",{"class":"layui-laydate-content"}),r=lay.elem("table"),m=lay.elem("thead"),c=lay.elem("tr");lay.each(i,function(e,a){t.appendChild(a)}),m.appendChild(c),lay.each(new Array(6),function(e){var t=r.insertRow(0);lay.each(new Array(7),function(a){if(0===e){var i=lay.elem("th");i.innerHTML=n.weeks[a],c.appendChild(i)}t.insertCell(a)})}),r.insertBefore(m,r.children[0]),l.appendChild(r),o[e]=lay.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),o[e].appendChild(t),o[e].appendChild(l),s.push(i),y.push(l),d.push(r)}),lay(m).html(function(){var e=[],t=[];return"datetime"===a.type&&e.push(''+n.timeTips+""),(a.range||"datetime"!==a.type)&&e.push(''),lay.each(a.btns,function(e,l){var r=n.tools[l]||"btn";a.range&&"now"===l||(i&&"clear"===l&&(r="cn"===a.lang?"\u91cd\u7f6e":"Reset"),t.push(''+r+""))}),e.push('"),e.join("")}()),lay.each(o,function(e,t){r.appendChild(t)}),a.showBottom&&r.appendChild(m),/^#/.test(a.theme)){var u=lay.elem("style"),h=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,a.theme);"styleSheet"in u?(u.setAttribute("type","text/css"),u.styleSheet.cssText=h):u.innerHTML=h,lay(r).addClass("laydate-theme-molv"),r.appendChild(u)}l.thisId=a.id,e.remove(D.thisElemDate),i?a.elem.append(r):(t.body.appendChild(r),e.position()),e.checkDate().calendar(null,0,"init"),e.changeEvent(),D.thisElemDate=e.elemID,"function"==typeof a.ready&&a.ready(lay.extend({},a.dateTime,{month:a.dateTime.month+1})),e.preview()},D.prototype.remove=function(e){var t=this,a=(t.config,lay("#"+(e||t.elemID)));return a[0]?(a.hasClass(c)||t.checkDate(function(){a.remove()}),t):t},D.prototype.position=function(){var e=this,t=e.config;return lay.position(e.bindElem||t.elem[0],e.elem,{position:t.position}),e},D.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":h}));t.elem&&(a.innerHTML=e||"",lay(t.elem).find("."+h).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+h).remove()},3e3))},D.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},D.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},D.prototype.checkDate=function(e){var t,a,n=this,i=(new Date,n.config),r=n.lang(),o=i.dateTime=i.dateTime||n.systemDate(),s=n.bindElem||i.elem[0],y=(n.isInput(s)?"val":"html",function(){if(n.rangeElem){var e=[n.rangeElem[0].val(),n.rangeElem[1].val()];if(e[0]&&e[1])return e.join(" "+n.rangeStr+" ")}return n.isInput(s)?s.value:"static"===i.position?"":lay(s).attr("lay-date")}()),d=function(e){e.year>m[1]&&(e.year=m[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=l.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},c=function(e,t,l){var r=["startTime","endTime"];t=(t.match(n.EXP_SPLIT)||[]).slice(1),l=l||0,i.range&&(n[r[l]]=n[r[l]]||{}),lay.each(n.format,function(o,s){var y=parseFloat(t[o]);t[o].lengthh(i.max)||h(o)h(i.max))&&(n.endDate=lay.extend({},i.max)),e&&e(),n},D.prototype.mark=function(e,t){var a,n=this,i=n.config;return lay.each(i.mark,function(e,n){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(a=n||t[2])}),a&&e.html(''+a+""),n},D.prototype.limit=function(e,t,a,n){var i,l=this,r=l.config,o={},s=r[a>41?"endDate":"dateTime"],y=lay.extend({},s,t||{});return lay.each({now:y,min:r.min,max:r.max},function(e,t){o[e]=l.newDate(lay.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return lay.each(n,function(a,n){e[n]=t[n]}),e}())).getTime()}),i=o.nowo.max,e&&e[i?"addClass":"removeClass"](d),i},D.prototype.thisDateTime=function(e){var t=this,a=t.config;return e?t.endDate:a.dateTime},D.prototype.calendar=function(e,t,a){var n,i,r,o=this,s=o.config,t=t?1:0,d=e||o.thisDateTime(t),c=new Date,u=o.lang(),h="date"!==s.type&&"datetime"!==s.type,f=lay(o.table[t]).find("td"),g=lay(o.elemHeader[t][2]).find("span");return d.yearm[1]&&(d.year=m[1],o.hint(u.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),c.setFullYear(d.year,d.month,1),n=c.getDay(),i=l.getEndDate(d.month||12,d.year),r=l.getEndDate(d.month+1,d.year),lay.each(f,function(e,t){var a=[d.year,d.month],l=0;t=lay(t),t.removeAttr("class"),e=n&&e=a.firstDate.year&&(l.month=n.max.month,l.date=n.max.date),a.limit(lay(i),l,t),M++}),lay(m[f?0:1]).attr("lay-ym",M-8+"-"+D[1]).html(E+T+" - "+(M-1+T))}else if("month"===e)lay.each(new Array(12),function(e){var i=lay.elem("li",{"lay-ym":e}),r={year:D[0],month:e};e+1==D[1]&&lay(i).addClass(y),i.innerHTML=l.month[e]+(f?"\u6708":""),o.appendChild(i),D[0]=a.firstDate.year&&(r.date=n.max.date),a.limit(lay(i),r,t)}),lay(m[f?0:1]).attr("lay-ym",D[0]+"-"+D[1]).html(D[0]+T);else if("time"===e){var C=function(){lay(o).find("ol").each(function(e,n){lay(n).find("li").each(function(n,i){a.limit(lay(i),[{hours:n},{hours:a[x].hours,minutes:n},{hours:a[x].hours,minutes:a[x].minutes,seconds:n}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),n.range||a.limit(lay(a.footer).find(p),a[x],0,["hours","minutes","seconds"])};n.range?a[x]||(a[x]="startTime"===x?i:a.endDate):a[x]=i,lay.each([24,60,60],function(e,t){var n=lay.elem("li"),i=["

    "+l.time[e]+"

      "];lay.each(new Array(t),function(t){i.push(""+lay.digit(t,2)+"")}),n.innerHTML=i.join("")+"
    ",o.appendChild(n)}),C()}if(h&&c.removeChild(h),c.appendChild(o),"year"===e||"month"===e)lay(a.elemMain[t]).addClass("laydate-ym-show"),lay(o).find("li").on("click",function(){var l=0|lay(this).attr("lay-ym");if(!lay(this).hasClass(d)){0===t?(i[e]=l,a.limit(lay(a.footer).find(p),null,0)):a.endDate[e]=l;var s="year"===n.type||"month"===n.type;s?(lay(o).find("."+y).removeClass(y),lay(this).addClass(y),"month"===n.type&&"year"===e&&(a.listYM[t][0]=l,r&&((t?a.endDate:i).year=l),a.list("month",t))):(a.checkDate("limit").calendar(null,t),a.closeList()),a.setBtnStatus(),n.range||("month"===n.type&&"month"===e||"year"===n.type&&"year"===e)&&a.setValue(a.parse()).remove().done(),a.done(null,"change"),lay(a.footer).find("."+v).removeClass(d)}});else{var I=lay.elem("span",{"class":g}),k=function(){lay(o).find("ol").each(function(e){var t=this,n=lay(t).find("li");t.scrollTop=30*(a[x][w[e]]-2),t.scrollTop<=0&&n.each(function(e,a){if(!lay(this).hasClass(d))return t.scrollTop=30*(e-2),!0})})},b=lay(s[2]).find("."+g);k(),I.innerHTML=n.range?[l.startTime,l.endTime][t]:l.timeTips,lay(a.elemMain[t]).addClass("laydate-time-show"),b[0]&&b.remove(),s[2].appendChild(I),lay(o).find("ol").each(function(e){var t=this;lay(t).find("li").on("click",function(){var l=0|this.innerHTML;lay(this).hasClass(d)||(n.range?a[x][w[e]]=l:i[w[e]]=l,lay(t).find("."+y).removeClass(y),lay(this).addClass(y),C(),k(),(a.endDate||"time"===n.type)&&a.done(null,"change"),a.setBtnStatus())})})}return a},D.prototype.listYM=[],D.prototype.closeList=function(){var e=this;e.config;lay.each(e.elemCont,function(t,a){lay(this).find("."+u).remove(),lay(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),lay(e.elem).find("."+g).remove()},D.prototype.setBtnStatus=function(e,t,a){var n,i=this,l=i.config,r=i.lang(),o=lay(i.footer).find(p);l.range&&"time"!==l.type&&(t=t||l.dateTime,a=a||i.endDate,n=i.newDate(t).getTime()>i.newDate(a).getTime(),i.limit(null,t)||i.limit(null,a)?o.addClass(d):o[n?"addClass":"removeClass"](d),e&&n&&i.hint("string"==typeof e?r.timeout.replace(/\u65e5\u671f/g,e):r.timeout))},D.prototype.parse=function(e,t){var a=this,n=a.config,i=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},n.dateTime,a.startTime):n.dateTime),r=l.parse(i,a.format,1);return n.range&&void 0===e?r+" "+a.rangeStr+" "+a.parse("end"):r},D.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},D.prototype.setValue=function(e){var t=this,a=t.config,n=t.bindElem||a.elem[0];return"static"===a.position?t:(e=e||"",t.isInput(n)?lay(n).val(e):t.rangeElem?(t.rangeElem[0].val(e?t.parse("start"):""),t.rangeElem[1].val(e?t.parse("end"):"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e)),t)},D.prototype.preview=function(){var e=this,t=e.config;if(t.isPreview){var a=lay(e.elem).find("."+T),n=t.range?e.endDate?e.parse():"":e.parse();a.html(n).css({color:"#5FB878"}),setTimeout(function(){a.css({color:"#666"})},300)}},D.prototype.done=function(e,t){var a=this,n=a.config,i=lay.extend({},lay.extend(n.dateTime,a.startTime)),l=lay.extend({},lay.extend(a.endDate,a.endTime));return lay.each([i,l],function(e,t){"month"in t&&lay.extend(t,{month:t.month+1})}),a.preview(),e=e||[a.parse(),i,l],"function"==typeof n[t||"done"]&&n[t||"done"].apply(n,e),a},D.prototype.choose=function(e,t){var a=this,n=a.config,i=a.thisDateTime(t),l=(lay(a.elem).find("td"),e.attr("lay-ymd").split("-"));l={year:0|l[0],month:(0|l[1])-1,date:0|l[2]},e.hasClass(d)||(lay.extend(i,l),n.range?(lay.each(["startTime","endTime"],function(e,t){a[t]=a[t]||{hours:0,minutes:0,seconds:0}}),a.calendar(null,t).done(null,"change")):"static"===n.position?a.calendar().done().done(null,"change"):"date"===n.type?a.setValue(a.parse()).remove().done():"datetime"===n.type&&a.calendar().done(null,"change"))},D.prototype.tool=function(e,t){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(e).hasClass(d)||(a.list("time",0),n.range&&a.list("time",1),lay(e).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(e).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue("").remove(),a.done(["",{},{}])},now:function(){var e=new Date;lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()).remove(),r&&a.calendar(),a.done()},confirm:function(){if(n.range){if(lay(e).hasClass(d))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(e).hasClass(d))return a.hint(i.invalidDate);a.done(),a.setValue(a.parse()).remove()}};o[t]&&o[t]()},D.prototype.change=function(e){var t=this,a=t.config,n=t.thisDateTime(e),i=a.range&&("year"===a.type||"month"===a.type),l=t.elemCont[e||0],r=t.listYM[e],o=function(o){var s=lay(l).find(".laydate-year-list")[0],y=lay(l).find(".laydate-month-list")[0];return s&&(r[0]=o?r[0]-15:r[0]+15,t.list("year",e)),y&&(o?r[0]--:r[0]++,t.list("month",e)),(s||y)&&(lay.extend(n,{year:r[0]}),i&&(n.year=r[0]),a.range||t.done(null,"change"),a.range||t.limit(lay(t.footer).find(p),{year:r[0]})),t.setBtnStatus(),s||y};return{prevYear:function(){o("sub")||(n.year--,t.checkDate("limit").calendar(null,e),t.done(null,"change"))},prevMonth:function(){var a=t.getAsYM(n.year,n.month,"sub");lay.extend(n,{year:a[0],month:a[1]}),t.checkDate("limit").calendar(null,e),t.done(null,"change")},nextMonth:function(){var a=t.getAsYM(n.year,n.month);lay.extend(n,{year:a[0],month:a[1]}),t.checkDate("limit").calendar(null,e),t.done(null,"change")},nextYear:function(){o()||(n.year++,t.checkDate("limit").calendar(null,e),t.done(null,"change"))}}},D.prototype.changeEvent=function(){var e=this;e.config;lay(e.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(e.elemHeader,function(t,a){lay(a[0]).on("click",function(a){e.change(t).prevYear()}),lay(a[1]).on("click",function(a){e.change(t).prevMonth()}),lay(a[2]).find("span").on("click",function(a){var n=lay(this),i=n.attr("lay-ym"),l=n.attr("lay-type");i&&(i=i.split("-"),e.listYM[t]=[0|i[0],0|i[1]],e.list(l,t),lay(e.footer).find("."+v).addClass(d))}),lay(a[3]).on("click",function(a){e.change(t).nextMonth()}),lay(a[4]).on("click",function(a){e.change(t).nextYear()})}),lay.each(e.table,function(t,a){var n=lay(a).find("td");n.on("click",function(){e.choose(lay(this),t)})}),lay(e.footer).find("span").on("click",function(){var t=lay(this).attr("lay-type");e.tool(this,t)})},D.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())},D.prototype.events=function(){var e=this,t=e.config,a=function(a,n){a.on(t.trigger,function(){n&&(e.bindElem=this),e.render()})};t.elem[0]&&!t.elem[0].eventHandler&&(a(t.elem,"bind"),a(t.eventElem),t.elem[0].eventHandler=!0)},r.that={},r.getThis=function(e){var t=r.that[e];return!t&&a&&layui.hint().error(e?o+" instance with ID '"+e+"' not found":"ID argument required"),t},n.run=function(a){a(t).on("mousedown",function(e){if(l.thisId){var t=r.getThis(l.thisId);if(t){var n=t.config;e.target!==n.elem[0]&&e.target!==n.eventElem[0]&&e.target!==a(n.closeStop)[0]&&t.remove()}}}).on("keydown",function(e){if(l.thisId){var t=r.getThis(l.thisId);t&&13===e.keyCode&&a("#"+t.elemID)[0]&&t.elemID===D.thisElemDate&&(e.preventDefault(),a(t.footer).find(p)[0].click())}}),a(e).on("resize",function(){if(l.thisId){var e=r.getThis(l.thisId);if(e)return!(!e.elem||!a(s)[0])&&void e.position()}})},l.render=function(e){var t=new D(e);return r.call(t)},l.parse=function(e,t,a){return e=e||{},"string"==typeof t&&(t=r.formatArr(t)),t=(t||[]).concat(),lay.each(t,function(n,i){/yyyy|y/.test(i)?t[n]=lay.digit(e.year,i.length):/MM|M/.test(i)?t[n]=lay.digit(e.month+(a||0),i.length):/dd|d/.test(i)?t[n]=lay.digit(e.date,i.length):/HH|H/.test(i)?t[n]=lay.digit(e.hours,i.length):/mm|m/.test(i)?t[n]=lay.digit(e.minutes,i.length):/ss|s/.test(i)&&(t[n]=lay.digit(e.seconds,i.length))}),t.join("")},l.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},a?(l.ready(),layui.define("lay",function(e){l.path=layui.cache.dir,n.run(lay),e(o,l)})):"function"==typeof define&&define.amd?define(function(){return n.run(lay),l}):function(){l.ready(),n.run(e.lay),e.laydate=l}()}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"function"!==n&&!pe.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(re.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(re.addEventListener||"load"===e.event.type||"complete"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||"string"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,"")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||".5",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval",!t||pe._data(t[r],"globalEval"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,"input"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),"script"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||"")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r1&&"string"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,"script"),C),a=s.length;c")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a=0&&n=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,"constructor")&&!ce.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ue[le.call(e)]||"object":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,"ms-").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;iT.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r="";t1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG("*",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P="sizzle"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ye=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=H.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),M.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&_&&!X[n+" "]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&$(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2], -d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[P]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,"$1"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split("").sort(U).join("")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement("div"))}),i(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[":"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ce=/^.[^:#\[\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t1?pe.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\S+/g;pe.Callbacks=function(e){e="string"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[["resolve","done",pe.Callbacks("once memory"),"resolved"],["reject","fail",pe.Callbacks("once memory"),"rejected"],["notify","progress",pe.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler("ready"),pe(re).off("ready"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),"complete"===re.readyState||"loading"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener("DOMContentLoaded",s),e.addEventListener("load",s);else{re.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll("left")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst="0"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName("body")[0],n&&n.style&&(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement("div");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute("classid")===t)},qe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks("once memory").add(function(){pe._removeData(e,t+"queue"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length
    a",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName("tbody").length,fe.htmlSerialize=!!e.getElementsByTagName("link").length,fe.html5Clone="<:nav>"!==re.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML="",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:fe.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\w+;/,Ve=/-1&&(h=p.split("."),p=h.shift(),h.sort()),a=p.indexOf(":")<0&&"on"+p,t=t[pe.expando]?t:new pe.Event(p,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,"events")||{})[t.type]&&pe._data(s,"handle"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,"events")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s]","i"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,nt=/\s*$/g,at=p(re),st=at.appendChild(re.createElement("div"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,"<$1>")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,"script"),r.length>0&&g(r,!u&&h(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,""):void 0;if("string"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||["",""])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;nt",l.childNodes[0].style.borderCollapse="separate",t=l.getElementsByTagName("td"),t[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===t[0].offsetHeight,o&&(t[0].style.display="",t[1].style.display="none",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement("div"),l=re.createElement("div");l.style&&(l.style.cssText="float:left;opacity:.5",fe.opacity="0.5"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",fe.clearCloneStyle="content-box"===l.style.backgroundClip,u=re.createElement("div"),u.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",l.innerHTML="",u.appendChild(l),fe.boxSizing=""===l.style.boxSizing||""===l.style.MozBoxSizing||""===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+""}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=r,o&&(i.left=o)),void 0===a?a:a+""||"auto"});var yt=/alpha\([^)]*\)/i,vt=/opacity\s*=\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp("^("+Fe+")(.*)$","i"),wt={position:"absolute",visibility:"hidden",display:"block"},Tt={letterSpacing:"0",fontWeight:"400"},Ct=["Webkit","O","Moz","ms"],Et=re.createElement("div").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":fe.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,"string"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?"":"px")),fe.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),"normal"===o&&t in Tt&&(o=Tt[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each(["height","width"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,"display"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&"border-box"===pe.css(e,"boxSizing",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===pe.trim(o.replace(yt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+" "+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:"inline-block"},gt,[e,"marginRight"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,"marginLeft"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px"}),pe.each({margin:"",padding:"",border:"Width"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?"":"px")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=["*"]):e=e.match(De);for(var n,r=0,i=e.length;r
    a",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",fe.getSetAttribute="t"!==n.className,fe.style=/top/.test(e.getAttribute("style")),fe.hrefNormalized="/a"===e.getAttribute("href"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement("form").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement("input"),t.setAttribute("value",""),fe.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),fe.radioValue="t"===t.value}();var Dt=/\r/g,jt=/[\x20\t\r\n\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i="":"number"==typeof i?i+="":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?"":e+""})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Dt,""):null==n?"":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,"value");return null!=t?t:pe.trim(pe.text(e)).replace(jt," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each(["radio","checkbox"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&"radio"===t&&pe.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase("default-"+n)]=e[r]=!1:pe.attr(e,n,""),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase("default-"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase("default-"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,"input")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+="","value"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&""!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,""!==t&&t,n)}},pe.each(["width","height"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(""===n)return e.setAttribute(t,"auto"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,"tabindex");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),fe.hrefNormalized||pe.each(["href","src"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype="encoding");var Pt=/[\t\r\n\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=z(this),t&&pe._data(this,"__className__",t),pe.attr(this,"class",t||e===!1?"":pe._data(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(n)+" ").replace(Pt," ").indexOf(t)>-1)return!0;return!1}}),pe.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\?/,$t=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,r=null,i=pe.trim(t+"");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,"")}))?Function("return "+i)():pe.error("Invalid JSON: "+t)},pe.parseXML=function(t){var n,r;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,"text/xml")):(n=new e.ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||pe.error("Invalid XML: "+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\/\//,Gt=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Kt={},Qt={},Zt="*/".concat("*"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:"GET",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":pe.parseJSON,"text xml":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||"",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader("etag"),w&&(pe.etag[a]=w)),204===t||"HEAD"===d.type?C="nocontent":304===t?C="notmodified":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C="error",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+"",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?"ajaxSuccess":"ajaxError",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger("ajaxComplete",[T,d]),--pe.active||pe.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks("once memory"),y=d.statusCode||{},v={},x={},b=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+"").replace(zt,"").replace(Jt,tn[1]+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||"*").toLowerCase().match(De)||[""],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(tn[3]||("http:"===tn[1]?"80":"443")))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?"&":"?")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,"$1_="+Wt++):a+(It.test(a)?"&":"?")+"_="+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader("If-Modified-Since",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader("If-None-Match",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",d.contentType),T.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Zt+"; q=0.01":""):d.accepts["*"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w="abort";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger("ajaxSend",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return pe.get(e,t,n,"json")},getScript:function(e,t){return pe.get(e,void 0,t,"script")}}),pe.each(["get","post"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,"body")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\[\]$/,on=/\r?\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join("&").replace(nn,"+")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,"elements");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(":disabled")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&"withCredentials"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+"");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,"string"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=""}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),pe.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=re.head||pe("head")[0]||re.documentElement;return{send:function(r,i){t=re.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\?(?=&|$)|\?\?/;pe.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=fn.pop()||pe.expando+"_"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||pe.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),pe.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if("string"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&pe.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?pe("
    ").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,"position"),f=pe(e),d={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=pe.css(e,"top"),u=pe.css(e,"left"),l=("absolute"===c||"fixed"===c)&&pe.inArray("auto",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),"using"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?("undefined"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===pe.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],"html")||(n=e.offset()),n.top+=pe.css(e[0],"borderTopWidth",!0),n.left+=pe.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-pe.css(r,"marginTop",!0),left:t.left-n.left-pe.css(r,"marginLeft",!0)}}},offsetParent:function(){ -return this.map(function(){for(var e=this.offsetParent;e&&!pe.nodeName(e,"html")&&"static"===pe.css(e,"position");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each(["top","left"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+"px":n})}),pe.each({Height:"height",Width:"width"},function(e,t){pe.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e("jquery",pe)}),pe});!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var t=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}(),i=e.LAYUI_GLOBAL||{};return i.layer_dir||t.substring(0,t.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c="creating",u=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function d(t){var n=100,a=document.getElementById(f);return++u>1e4/n?e.console&&console.error(l+".css: Invalid"):void(1989===parseInt(o.getStyle(a,"width"))?(t===c&&a.removeAttribute("lay-status"),a.getAttribute("lay-status")===c?setTimeout(d,n):i()):(a.setAttribute("lay-status",c),setTimeout(function(){d(c)},n)))}()}}},r={v:"3.5.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:260},n))}},s=function(e){var t=this,a=function(){t.creat()};t.index=++r.index,t.config.maxWidth=i(n).width()-30,t.config=i.extend({},t.config,o.config,e),document.body?a():setTimeout(function(){a()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],l.SHADE="layui-layer-shade",l.MOVE="layui-layer-move",s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,minStack:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'
    '+(f?r.title[0]:r.title)+"
    ":"";return r.zIndex=s,t([r.shade?'
    ':"",'
    '+(e&&2!=r.type?"":u)+'
    '+(0==r.type&&r.icon!==-1?'':"")+(1==r.type&&e?"":r.content||"")+'
    '+function(){var e=c?'':"";return r.closeBtn&&(e+=''),e}()+""+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t'+r.btn[t]+"";return'
    '+e+"
    "}():"")+(r.resize?'':"")+"
    "],u,i('
    ')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"","auto"];t.content='';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i("#"+l.MOVE)[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),e.shadeo=i("#"+l.SHADE+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),e.shadeo.css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():function(){e.offset(),parseInt(o.getStyle(document.getElementById(l.MOVE),"z-index"))||function(){e.layero.css("visibility","hidden"),r.ready(function(){e.offset(),e.layero.css("visibility","visible")})}()}(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;af&&(a=f),ou&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index,t)}):a.success(n,t.index,t)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&t.shadeo.on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n,t.index);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n,t.index)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n,t.index)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){t=t||{};var a=i("#"+l[0]+e),s=i("#"+l.SHADE+e),f=a.find(l[1]).outerHeight()||0,c=a.attr("minLeft")||181*o.minIndex+"px",u=a.css("position"),d={width:180,height:f,position:"fixed",overflow:"hidden"};o.record(a),o.minLeft[0]&&(c=o.minLeft[0],o.minLeft.shift()),t.minStack&&(d.left=c,d.top=n.height()-f,a.attr("minLeft")||o.minIndex++,a.attr("minLeft",c)),a.attr("position",u),r.style(e,d,!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),s.hide()},r.restore=function(e){var t=i("#"+l[0]+e),n=i("#"+l.SHADE+e),a=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(a[0]),height:parseFloat(a[1]),top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e),n.show()},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e,t){var n=i("#"+l[0]+e),a=n.attr("type"),s="layer-anim-close";if(n[0]){var f="layui-layer-wrap",c=function(){if(a===o.type[1]&&"object"===n.attr("conType")){n.children(":not(."+l[5]+")").remove();for(var r=n.find("."+f),s=0;s<2;s++)r.unwrap();r.css("display",r.data("display")).removeClass(f)}else{if(a===o.type[2])try{var c=i("#"+l[4]+e)[0];c.contentWindow.document.write(""),c.contentWindow.close(),n.find("."+l[5])[0].removeChild(c)}catch(u){}n[0].innerHTML="",n.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e],"function"==typeof t&&t()};n.data("isOutAnim")&&n.addClass("layer-anim "+s),i("#layui-layer-moves, #"+l.SHADE+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),n.attr("minLeft")&&(o.minIndex--,o.minLeft.push(n.attr("minLeft"))),r.ie&&r.ie<10||!n.data("isOutAnim")?c():setTimeout(function(){c()},200)}},r.closeAll=function(e,t){"function"==typeof e&&(t=e,e=null);var n=i("."+l[0]);i.each(n,function(a){var o=i(this),s=e?o.attr("type")===e:1;s&&r.close(o.attr("times"),a===n.length-1?t:null),s=null}),0===n.length&&"function"==typeof t&&t()};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'":function(){return''}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(t){s=t.find(".layui-layer-input"),s.val(e.value||"").focus(),"function"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a=''+t[0].title+"";i"+t[i].title+"";return a}(),content:'
      '+function(){var e=t.length,i=1,a="";if(e>0)for(a='
    • '+(t[0].content||"no content")+"
    • ";i'+(t[i].content||"no content")+"";return a}()+"
    ",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=!("string"==typeof t.photos||t.photos instanceof i),f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){h();var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0)}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),a&&(t.anim=-1),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]'+(u[d].alt||'+function(){return u.length>1?'
    '+(u[d].alt||"")+""+s.imgIndex+" / "+u.length+"
    ":""}()+"
    ",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常
    是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){r.ready(),o.run(e.jQuery)}()}(window);layui.define("jquery",function(e){"use strict";var t=layui.$,i=layui.hint(),n={fixbar:function(e){var i,n,r="layui-fixbar",a="layui-fixbar-top",o=t(document),l=t("body");e=t.extend({showHeight:200},e),e.bar1=e.bar1===!0?"":e.bar1,e.bar2=e.bar2===!0?"":e.bar2,e.bgcolor=e.bgcolor?"background-color:"+e.bgcolor:"";var c=[e.bar1,e.bar2,""],g=t(['
      ',e.bar1?'
    • '+c[0]+"
    • ":"",e.bar2?'
    • '+c[1]+"
    • ":"",'
    • '+c[2]+"
    • ","
    "].join("")),u=g.find("."+a),s=function(){var t=o.scrollTop();t>=e.showHeight?i||(u.show(),i=1):i&&(u.hide(),i=0)};t("."+r)[0]||("object"==typeof e.css&&g.css(e.css),l.append(g),s(),g.find("li").on("click",function(){var i=t(this),n=i.attr("lay-type");"top"===n&&t("html,body").animate({scrollTop:0},200),e.click&&e.click.call(this,n)}),o.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){s()},100)}))},countdown:function(e,t,i){var n=this,r="function"==typeof t,a=new Date(e).getTime(),o=new Date(!t||r?(new Date).getTime():t).getTime(),l=a-o,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];r&&(i=t);var g=setTimeout(function(){n.countdown(e,o+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],t,g),l<=0&&clearTimeout(g),g},timeAgo:function(e,t){var i=this,n=[[],[]],r=(new Date).getTime()-new Date(e).getTime();return r>26784e5?(r=new Date(e),n[0][0]=i.digit(r.getFullYear(),4),n[0][1]=i.digit(r.getMonth()+1),n[0][2]=i.digit(r.getDate()),t||(n[1][0]=i.digit(r.getHours()),n[1][1]=i.digit(r.getMinutes()),n[1][2]=i.digit(r.getSeconds())),n[0].join("-")+" "+n[1].join(":")):r>=864e5?(r/1e3/60/60/24|0)+"\u5929\u524d":r>=36e5?(r/1e3/60/60|0)+"\u5c0f\u65f6\u524d":r>=18e4?(r/1e3/60|0)+"\u5206\u949f\u524d":r<0?"\u672a\u6765":"\u521a\u521a"},digit:function(e,t){var i="";e=String(e),t=t||2;for(var n=e.length;n/g,">").replace(/'/g,"'").replace(/"/g,""")},unescape:function(e){return String(e||"").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/,"'").replace(/\"/,'"')},toVisibleArea:function(e){if(e=t.extend({margin:160,duration:200,type:"y"},e),e.scrollElem[0]&&e.thisElem[0]){var i=e.scrollElem,n=e.thisElem,r="y"===e.type,a=r?"scrollTop":"scrollLeft",o=r?"top":"left",l=i[a](),c=i[r?"height":"width"](),g=i.offset()[o],u=n.offset()[o]-g,s={};(u>c-e.margin||u0&&t.unshift(""),t.join(" ")}()+">"+(a.title||"unnaming")+"";return s[0]?s.before(r):n.append(r),o.append('
    '+(a.content||"")+"
    "),b.hideTabMore(!0),b.tabAuto(),this},s.prototype.tabDelete=function(t,a){var e=".layui-tab-title",l=i(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+a+'"]');return b.tabDelete(null,s),this},s.prototype.tabChange=function(t,a){var e=".layui-tab-title",l=i(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+a+'"]');return b.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},m.on("click",t.headerElem,function(a){var e=i(this).index();b.tabClick.call(this,a,e,null,t)})},s.prototype.progress=function(t,a){var e="layui-progress",l=i("."+e+"[lay-filter="+t+"]"),n=l.find("."+e+"-bar"),s=n.find("."+e+"-text");return n.css("width",a).attr("lay-percent",a),s.text(a),this};var o=".layui-nav",r="layui-nav-item",c="layui-nav-bar",u="layui-nav-tree",y="layui-nav-child",d="layui-nav-child-c",f="layui-nav-more",h="layui-icon-down",p="layui-anim layui-anim-upbit",b={tabClick:function(t,a,s,o){o=o||{};var r=s||i(this),a=a||r.parent().children("li").index(r),c=o.headerElem?r.parent():r.parents(".layui-tab").eq(0),u=o.bodyElem?i(o.bodyElem):c.children(".layui-tab-content").children(".layui-tab-item"),y=r.find("a"),d="javascript:;"!==y.attr("href")&&"_blank"===y.attr("target"),f="string"==typeof r.attr("lay-unselect"),h=c.attr("lay-filter");d||f||(r.addClass(l).siblings().removeClass(l),u.eq(a).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,"tab("+h+")",{elem:c,index:a})},tabDelete:function(t,a){var n=a||i(this).parent(),s=n.index(),o=n.parents(".layui-tab").eq(0),r=o.children(".layui-tab-content").children(".layui-tab-item"),c=o.attr("lay-filter");n.hasClass(l)&&(n.next()[0]?b.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&b.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){b.tabAuto()},50),layui.event.call(this,e,"tabDelete("+c+")",{elem:o,index:s})},tabAuto:function(){var t="layui-tab-more",e="layui-tab-bar",l="layui-tab-close",n=this;i(".layui-tab").each(function(){var s=i(this),o=s.children(".layui-tab-title"),r=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),c=i('');if(n===window&&8!=a.ie&&b.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var t=i(this);if(!t.find("."+l)[0]){var a=i('');a.on("click",b.tabDelete),t.append(a)}}),"string"!=typeof s.attr("lay-unauto"))if(o.prop("scrollWidth")>o.outerWidth()+1){if(o.find("."+e)[0])return;o.append(c),s.attr("overflow",""),c.on("click",function(i){o[this.title?"removeClass":"addClass"](t),this.title=this.title?"":"\u6536\u7f29"})}else o.find("."+e).remove(),s.removeAttr("overflow")})},hideTabMore:function(t){var a=i(".layui-tab-title");t!==!0&&"tabmore"===i(t.target).attr("lay-stope")||(a.removeClass("layui-tab-more"),a.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=i(this),a=t.parents(o),n=a.attr("lay-filter"),s=t.parent(),c=t.siblings("."+y),d="string"==typeof s.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||d||c[0]||(a.find("."+l).removeClass(l),s.addClass(l)),a.hasClass(u)&&(c.removeClass(p),c[0]&&(s["none"===c.css("display")?"addClass":"removeClass"](r+"ed"),"all"===a.attr("lay-shrink")&&s.siblings().removeClass(r+"ed"))),layui.event.call(this,e,"nav("+n+")",t)},collapse:function(){var t=i(this),a=t.find(".layui-colla-icon"),l=t.siblings(".layui-colla-content"),s=t.parents(".layui-collapse").eq(0),o=s.attr("lay-filter"),r="none"===l.css("display");if("string"==typeof s.attr("lay-accordion")){var c=s.children(".layui-colla-item").children("."+n);c.siblings(".layui-colla-title").children(".layui-colla-icon").html(""),c.removeClass(n)}l[r?"addClass":"removeClass"](n),a.html(r?"":""),layui.event.call(this,e,"collapse("+o+")",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter="'+e+'"]':""}(),s={tab:function(){b.tabAuto.call({})},nav:function(){var t=200,e={},s={},v={},m="layui-nav-title",C=function(l,o,r){var c=i(this),h=c.find("."+y);if(o.hasClass(u)){if(!h[0]){var b=c.children("."+m);l.css({top:c.offset().top-o.offset().top,height:(b[0]?b:c).outerHeight(),opacity:1})}}else h.addClass(p),h.hasClass(d)&&h.css({left:-(h.outerWidth()-c.width())/2}),h[0]?l.css({left:l.position().left+l.width()/2,width:0,opacity:0}):l.css({left:c.position().left+parseFloat(c.css("marginLeft")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:h[0]?0:c.width(),opacity:h[0]?0:1})},a.ie&&a.ie<10?0:t),clearTimeout(v[r]),"block"===h.css("display")&&clearTimeout(s[r]),s[r]=setTimeout(function(){h.addClass(n),c.find("."+f).addClass(f+"d")},300)};i(o+l).each(function(a){var l=i(this),o=i(''),d=l.find("."+r);l.find("."+c)[0]||(l.append(o),(l.hasClass(u)?d.find("dd,>."+m):d).on("mouseenter",function(){C.call(this,o,l,a)}).on("mouseleave",function(){l.hasClass(u)?o.css({height:0,opacity:0}):(clearTimeout(s[a]),s[a]=setTimeout(function(){l.find("."+y).removeClass(n),l.find("."+f).removeClass(f+"d")},300))}),l.on("mouseleave",function(){clearTimeout(e[a]),v[a]=setTimeout(function(){l.hasClass(u)||o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),d.find("a").each(function(){var t=i(this),a=(t.parent(),t.siblings("."+y));a[0]&&!t.children("."+f)[0]&&t.append(''),t.off("click",b.clickThis).on("click",b.clickThis)})})},breadcrumb:function(){var t=".layui-breadcrumb";i(t+l).each(function(){var t=i(this),a="lay-separator",e=t.attr(a)||"/",l=t.find("a");l.next("span["+a+"]")[0]||(l.each(function(t){t!==l.length-1&&i(this).after(""+e+"")}),t.css("visibility","visible"))})},progress:function(){var t="layui-progress";i("."+t+l).each(function(){var a=i(this),e=a.find(".layui-progress-bar"),l=e.attr("lay-percent");e.css("width",function(){return/^.+\/.+$/.test(l)?100*new Function("return "+l)()+"%":l}()),a.attr("lay-showPercent")&&setTimeout(function(){e.html(''+l+"")},350)})},collapse:function(){var t="layui-collapse";i("."+t+l).each(function(){var t=i(this).find(".layui-colla-item");t.each(function(){var t=i(this),a=t.find(".layui-colla-title"),e=t.find(".layui-colla-content"),l="none"===e.css("display");a.find(".layui-colla-icon").remove(),a.append(''+(l?"":"")+""),a.off("click",b.collapse).on("click",b.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,i){i()})},s.prototype.render=s.prototype.init;var v=new s,m=i(document);i(function(){v.render()});var C=".layui-tab-title li";m.on("click",C,b.tabClick),m.on("click",b.hideTabMore),i(window).on("resize",b.tabAuto),t(e,v)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,n=layui.hint(),o=layui.device(),a={config:{},set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,r,e,t)}},l=function(){var e=this;return{upload:function(t){e.upload.call(e,t)},reload:function(t){e.reload.call(e,t)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var i=this;i.config=t.extend({},i.config,a.config,e),i.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var i=this,e=i.config;e.elem=t(e.elem),e.bindAction=t(e.bindAction),i.file(),i.events()},p.prototype.file=function(){var e=this,i=e.config,n=e.elemFile=t(['"].join("")),a=i.elem.next();(a.hasClass(u)||a.hasClass(c))&&a.remove(),o.ie&&o.ie<10&&i.elem.wrap('
    '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),o.ie&&o.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t(''),o=t(['
    ',"
    "].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),i.elem.next("."+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i="function"==typeof i?i():i,e.push('')}),e.join("")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&"function"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;r.append(l.field,o),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)});var c={url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,a.msg("\u8bf7\u6c42\u4e0a\u4f20\u63a5\u53e3\u51fa\u73b0\u5f02\u5e38"),m(e),u()}};"function"==typeof l.progress&&(c.xhr=function(){var i=t.ajaxSettings.xhr();return i.upload.addEventListener("progress",function(t){if(t.lengthComputable){var i=Math.floor(t.loaded/t.total*100);l.progress(i,l.item?l.item[0]:l.elem[0],t,e)}}),i}),t.ajax(c)})},c=function(){var e=t("#"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){a.msg("\u83b7\u53d6\u4e0a\u4f20\u540e\u7684\u54cd\u5e94\u4fe1\u606f\u51fa\u73b0\u5f02\u5e38"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},a.msg("\u8bf7\u5bf9\u4e0a\u4f20\u63a5\u53e3\u8fd4\u56de\u6709\u6548JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if(!(("choose"===i||l.auto)&&(l.choose&&l.choose(g),"choose"===i)||l.before&&l.before(g)===!1))return o.ie?o.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return a.msg("\u9009\u62e9\u7684\u6587\u4ef6\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return a.msg("\u9009\u62e9\u7684\u89c6\u9891\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return a.msg("\u9009\u62e9\u7684\u97f3\u9891\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value="";break;default:if(layui.each(v,function(e,t){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(t))||(n=!0)}),n)return a.msg("\u9009\u62e9\u7684\u56fe\u7247\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),r.value=""}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg("\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20\u7684\u6570\u91cf\u4e3a\uff1a"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+"MB":l.size+"KB",r.value="",F=i}}),F)return a.msg("\u6587\u4ef6\u4e0d\u80fd\u8d85\u8fc7"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,a.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,a=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+"-"+t]=i})},l=function(t,n){var o=e.elemFile,a=(i.item?i.item:i.elem,t.length>1?t.length+"\u4e2a\u6587\u4ef6":(t[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"");o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||o.after(''+a+"")};i.elem.off("upload.start").on("upload.start",function(){var o=t(this),a=o.attr("lay-data");if(a)try{a=new Function("return "+a)(),e.config=t.extend({},i,a)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.ie<10||i.elem.off("upload.over").on("upload.over",function(){var e=t(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=t(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];a(t),i.auto?e.upload():l(t)}),i.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),i.elem.data("haveEvents")||(e.elemFile.on("change",function(){t(this).trigger("upload.change")}),i.elem.on("click",function(){e.isFile()||t(this).trigger("upload.start")}),i.drag&&i.elem.on("dragover",function(e){e.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(e){t(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),t(this).trigger("upload.drop",e)}),i.bindAction.on("click",function(){t(this).trigger("upload.action")}),i.elem.data("haveEvents",!0))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)});layui.define(["jquery","laytpl","lay"],function(e){"use strict";var i=layui.$,n=layui.laytpl,t=layui.hint(),a=layui.device(),l=a.mobile?"click":"mousedown",r="dropdown",o="layui_"+r+"_index",u={config:{},index:layui[r]?layui[r].index+1e4:0,set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,r,e,i)}},d=function(){var e=this,i=e.config,n=i.id;return d.that[n]=e,{config:i,reload:function(i){e.reload.call(e,i)}}},s="layui-dropdown",m="layui-menu-item-up",c="layui-menu-item-down",p="layui-menu-body-title",y="layui-menu-item-group",f="layui-menu-item-parent",v="layui-menu-item-divider",g="layui-menu-item-checked",h="layui-menu-item-checked2",w="layui-menu-body-panel",C="layui-menu-body-panel-left",V="."+y+">."+p,k=function(e){var n=this;n.index=++u.index,n.config=i.extend({},n.config,u.config,e),n.init()};k.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:300},k.prototype.reload=function(e){var n=this;n.config=i.extend({},n.config,e),n.init(!0)},k.prototype.init=function(e){var n=this,t=n.config,a=t.elem=i(t.elem);if(a.length>1)return layui.each(a,function(){u.render(i.extend({},t,{elem:this}))}),n;if(!e&&a[0]&&a.data(o)){var l=d.getThis(a.data(o));if(!l)return;return l.reload(t)}t.id="id"in t?t.id:n.index,t.show&&n.render(e),n.events()},k.prototype.render=function(e){var t=this,a=t.config,r=i("body"),s=function(){var e=i('
      ');return a.data.length>0?m(e,a.data):e.html('
    • no menu
    • '),e},m=function(e,t){return layui.each(t,function(t,l){var r=l.child&&l.child.length>0,o="isSpreadItem"in l?l.isSpreadItem:a.isSpreadItem,u=l.templet?n(l.templet).render(l):a.templet?n(a.templet).render(l):l.title,d=function(){return r&&(l.type=l.type||"parent"),l.type?{group:"group",parent:"parent","-":"-"}[l.type]||"parent":""}();if("-"===d||l.title||l.id||r){var s=i(["",function(){var e="href"in l?''+u+"":u;return r?'
      '+e+function(){return"parent"===d?'':"group"===d&&a.isAllowSpread?'':""}()+"
      ":'
      '+e+"
      "}(),""].join(""));if(s.data("item",l),r){var c=i('
      '),y=i("
        ");"parent"===d?(c.append(m(y,l.child)),s.append(c)):s.append(m(y,l.child))}e.append(s)}}),e},c=['
        ',"
        "].join("");("contextmenu"===a.trigger||lay.isTopElem(a.elem[0]))&&(e=!0),!e&&a.elem.data(o+"_opened")||(t.elemView=i(c),t.elemView.append(a.content||s()),a.className&&t.elemView.addClass(a.className),a.style&&t.elemView.attr("style",a.style),u.thisId=a.id,t.remove(),r.append(t.elemView),a.elem.data(o+"_opened",!0),t.position(),d.prevElem=t.elemView,d.prevElem.data("prevElem",a.elem),t.elemView.find(".layui-menu").on(l,function(e){layui.stope(e)}),t.elemView.find(".layui-menu li").on("click",function(e){var n=i(this),l=n.data("item")||{},r=l.child&&l.child.length>0;r||"-"===l.type||(t.remove(),"function"==typeof a.click&&a.click(l,n))}),t.elemView.find(V).on("click",function(e){var n=i(this),t=n.parent(),l=t.data("item")||{};"group"===l.type&&a.isAllowSpread&&d.spread(t)}),"mouseenter"===a.trigger&&t.elemView.on("mouseenter",function(){clearTimeout(d.timer)}).on("mouseleave",function(){t.delayRemove()}))},k.prototype.position=function(e){var i=this,n=i.config;lay.position(n.elem[0],i.elemView[0],{position:n.position,e:i.e,clickType:"contextmenu"===n.trigger?"right":null,align:n.align||null})},k.prototype.remove=function(){var e=this,i=(e.config,d.prevElem);i&&(i.data("prevElem")&&i.data("prevElem").data(o+"_opened",!1),i.remove())},k.prototype.delayRemove=function(){var e=this,i=e.config;clearTimeout(d.timer),d.timer=setTimeout(function(){e.remove()},i.delay)},k.prototype.events=function(){var e=this,i=e.config;"hover"===i.trigger&&(i.trigger="mouseenter"),e.prevElem&&e.prevElem.off(i.trigger,e.prevElemCallback),e.prevElem=i.elem,e.prevElemCallback=function(n){clearTimeout(d.timer),e.e=n,e.render(),n.preventDefault(),"function"==typeof i.ready&&i.ready(e.elemView,i.elem,e.e.target)},i.elem.on(i.trigger,e.prevElemCallback),"mouseenter"===i.trigger&&i.elem.on("mouseleave",function(){e.delayRemove()})},d.that={},d.getThis=function(e){var i=d.that[e];return i||t.error(e?r+" instance with ID '"+e+"' not found":"ID argument required"),i},d.spread=function(e){var i=e.children("."+p).find(".layui-icon");e.hasClass(m)?(e.removeClass(m).addClass(c),i.removeClass("layui-icon-down").addClass("layui-icon-up")):(e.removeClass(c).addClass(m),i.removeClass("layui-icon-up").addClass("layui-icon-down"))},!function(){var e=i(window),n=i(document);e.on("resize",function(){if(u.thisId){var e=d.getThis(u.thisId);if(e){if(!e.elemView[0]||!i("."+s)[0])return!1;var n=e.config;"contextmenu"===n.trigger?e.remove():e.position()}}}),n.on(l,function(e){if(u.thisId){var i=d.getThis(u.thisId);if(i){var n=i.config;!lay.isTopElem(n.elem[0])&&"contextmenu"!==n.trigger&&(e.target===n.elem[0]||n.elem.find(e.target)[0]||e.target===i.elemView[0]||i.elemView&&i.elemView.find(e.target)[0])||i.remove()}}});var t=".layui-menu:not(.layui-dropdown-menu) li";n.on("click",t,function(e){var n=i(this),t=n.parents(".layui-menu").eq(0),a=n.hasClass(y)||n.hasClass(f),l=t.attr("lay-filter")||t.attr("id"),o=lay.options(this);n.hasClass(v)||a||(t.find("."+g).removeClass(g),t.find("."+h).removeClass(h),n.addClass(g),n.parents("."+f).addClass(h),layui.event.call(this,r,"click("+l+")",o))}),n.on("click",t+V,function(e){var n=i(this),t=n.parents("."+y+":eq(0)"),a=lay.options(t[0]);"isAllowSpread"in a&&!a.isAllowSpread||d.spread(t)});var a=".layui-menu ."+f;n.on("mouseenter",a,function(n){var t=i(this),a=t.find("."+w);if(a[0]){var l=a[0].getBoundingClientRect();l.right>e.width()&&(a.addClass(C),l=a[0].getBoundingClientRect(),l.left<0&&a.removeClass(C)),l.bottom>e.height()&&a.eq(0).css("margin-top",-(l.bottom-e.height()))}}).on("mouseleave",a,function(e){var n=i(this),t=n.children("."+w);t.removeClass(C),t.css("margin-top",0)})}(),u.reload=function(e,i){var n=d.getThis(e);return n?(n.reload(i),d.call(n)):this},u.render=function(e){var i=new k(e);return d.call(i)},e(r,u)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(t,a){return i.value=t,e.slide("set",t,a||0)},config:i}},n="slider",l="layui-disabled",s="layui-slider",r="layui-slider-bar",o="layui-slider-wrap",u="layui-slider-wrap-btn",d="layui-slider-tips",v="layui-slider-input",c="layui-slider-input-txt",p="layui-slider-input-btn",m="layui-slider-hover",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#009688"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.maxt.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),p=v-r+"%";r+="%",v+="%"}else{"object"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.valuet.max&&(t.value=t.max);var p=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var m=t.disabled?"#c2c2c2":t.theme,f='
        '+(t.tips?'
        ':"")+'
        '+(t.range?'
        ':"")+"
        ",h=i(t.elem),y=h.next("."+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find("."+o).eq(0).data("value",t.value[0]),e.elemTemp.find("."+o).eq(1).data("value",t.value[1])):e.elemTemp.find("."+o).data("value",t.value),h.html(e.elemTemp),"vertical"===t.type&&e.elemTemp.height(t.height+"px"),t.showstep){for(var g=(t.max-t.min)/t.step,b="",x=1;x
        ')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('
        ');h.css("position","relative"),h.append(w),h.find("."+c).children("input").val(t.value),"vertical"===t.type?w.css({left:0,top:-48}):e.elemTemp.css("margin-right",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find("."+u).addClass(l)):e.slide(),e.elemTemp.find("."+u).on("mouseover",function(){var a="vertical"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find("."+o),l="vertical"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data("value"),u=t.setTips?t.setTips(r):r;e.elemTemp.find("."+d).html(u),"vertical"===t.type?e.elemTemp.find("."+d).css({bottom:s+"%","margin-bottom":"20px",display:"inline-block"}):e.elemTemp.find("."+d).css({left:s+"%",display:"inline-block"})}).on("mouseout",function(){e.elemTemp.find("."+d).css("display","none")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return"vertical"===l.type?l.height:s[0].offsetWidth},h=s.find("."+o),y=s.next("."+v),g=y.children("."+c).children("input").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css("vertical"===l.type?"bottom":"left",e+"%");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;"vertical"===l.type?(s.find("."+d).css({bottom:e+"%","margin-bottom":"20px"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find("."+d).css("left",e+"%"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);"vertical"===l.type?s.find("."+r).css({height:o+"%",bottom:n+"%"}):s.find("."+r).css({width:o+"%",left:n+"%"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children("."+c).children("input").val(g),h.eq(i).data("value",u),s.find("."+d).html(l.setTips?l.setTips(u):u),l.range){var v=[h.eq(0).data("value"),h.eq(1).data("value")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['
        f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(m),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(m),s.find("."+d).hide()};M(r,o)})}),s.on("click",function(e){var t=i("."+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n="vertical"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?"vertical"===l.type?Math.abs(n-parseInt(i(h[0]).css("bottom")))>Math.abs(n-parseInt(i(h[1]).css("bottom")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.children("."+p).children("i").each(function(e){i(this).on("click",function(){g=y.children("."+c).children("input").val(),g=1==e?g-l.stepl.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=el.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children("."+c).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on("change",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)});layui.define(["jquery","lay"],function(e){"use strict";var i=layui.jquery,r=layui.lay,o=layui.device(),n=o.mobile?"click":"mousedown",l={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var r=this;return r.config=i.extend({},r.config,e),r},on:function(e,i){return layui.onevent.call(this,"colorpicker",e,i)}},t=function(){var e=this,i=e.config;return{config:i}},c="colorpicker",a="layui-show",s="layui-colorpicker",f=".layui-colorpicker-main",d="layui-icon-down",u="layui-icon-close",p="layui-colorpicker-trigger-span",g="layui-colorpicker-trigger-i",v="layui-colorpicker-side",h="layui-colorpicker-side-slider",b="layui-colorpicker-basis",k="layui-colorpicker-alpha-bgcolor",y="layui-colorpicker-alpha-slider",m="layui-colorpicker-basis-cursor",x="layui-colorpicker-main-input",P=function(e){var i={h:0,s:0,b:0},r=Math.min(e.r,e.g,e.b),o=Math.max(e.r,e.g,e.b),n=o-r;return i.b=o,i.s=0!=o?255*n/o:0,0!=i.s?e.r==o?i.h=(e.g-e.b)/n:e.g==o?i.h=2+(e.b-e.r)/n:i.h=4+(e.r-e.g)/n:i.h=-1,o==r&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},C=function(e){var e=e.indexOf("#")>-1?e.substring(1):e;if(3==e.length){var i=e.split("");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var r={r:e>>16,g:(65280&e)>>8,b:255&e};return P(r)},B=function(e){var i={},r=e.h,o=255*e.s/100,n=255*e.b/100;if(0==o)i.r=i.g=i.b=n;else{var l=n,t=(255-o)*n/255,c=(l-t)*(r%60)/60;360==r&&(r=0),r<60?(i.r=l,i.b=t,i.g=t+c):r<120?(i.g=l,i.b=t,i.r=l-c):r<180?(i.g=l,i.r=t,i.b=t+c):r<240?(i.b=l,i.r=t,i.g=l-c):r<300?(i.b=l,i.g=t,i.r=t+c):r<360?(i.r=l,i.g=t,i.b=l-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},w=function(e){var r=B(e),o=[r.r.toString(16),r.g.toString(16),r.b.toString(16)];return i.each(o,function(e,i){1==i.length&&(o[e]="0"+i)}),o.join("")},D=function(e){var i=/[0-9]{1,3}/g,r=e.match(i)||[];return{r:r[0],g:r[1],b:r[2]}},j=i(window),E=i(document),F=function(e){var r=this;r.index=++l.index,r.config=i.extend({},r.config,l.config,e),r.render()};F.prototype.config={color:"",size:null,alpha:!1,format:"hex",predefine:!1,colors:["#009688","#5FB878","#1E9FFF","#FF5722","#FFB800","#01AAED","#999","#c00","#ff8c00","#ffd700","#90ee90","#00ced1","#1e90ff","#c71585","rgb(0, 186, 189)","rgb(255, 120, 0)","rgb(250, 212, 0)","#393D49","rgba(0,0,0,.5)","rgba(255, 69, 0, 0.68)","rgba(144, 240, 144, 0.5)","rgba(31, 147, 255, 0.73)"]},F.prototype.render=function(){var e=this,r=e.config,o=i(['
        ',"",'3&&(r.alpha&&"rgb"==r.format||(e="#"+w(P(D(r.color))))),"background: "+e):e}()+'">','',"","","
        "].join("")),n=i(r.elem);r.size&&o.addClass("layui-colorpicker-"+r.size),n.addClass("layui-inline").html(e.elemColorBox=o),e.color=e.elemColorBox.find("."+p)[0].style.background,e.events()},F.prototype.renderPicker=function(){var e=this,r=e.config,o=e.elemColorBox[0],n=e.elemPicker=i(['
        ','
        ','
        ','
        ','
        ','
        ',"
        ",'
        ','
        ',"
        ","
        ",'
        ','
        ','
        ',"
        ","
        ",function(){if(r.predefine){var e=['
        '];return layui.each(r.colors,function(i,r){e.push(['
        ','
        ',"
        "].join(""))}),e.push("
        "),e.join("")}return""}(),'
        ','
        ','',"
        ",'
        ','','',"","
        "].join(""));e.elemColorBox.find("."+p)[0];i(f)[0]&&i(f).data("index")==e.index?e.removePicker(F.thisElemInd):(e.removePicker(F.thisElemInd),i("body").append(n)),F.thisElemInd=e.index,F.thisColor=o.style.background,e.position(),e.pickerEvents()},F.prototype.removePicker=function(e){var r=this;r.config;return i("#layui-colorpicker"+(e||r.index)).remove(),r},F.prototype.position=function(){var e=this,i=e.config;return r.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},F.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find("."+p)),r=e.elemPicker.find("."+x),o=i[0],n=o.style.backgroundColor;if(n){var l=P(D(n)),t=i.attr("lay-type");if(e.select(l.h,l.s,l.b),"torgb"===t&&r.find("input").val(n),"rgba"===t){var c=D(n);if(3==(n.match(/[0-9]{1,3}/g)||[]).length)r.find("input").val("rgba("+c.r+", "+c.g+", "+c.b+", 1)"),e.elemPicker.find("."+y).css("left",280);else{r.find("input").val(n);var a=280*n.slice(n.lastIndexOf(",")+1,n.length-1);e.elemPicker.find("."+y).css("left",a)}e.elemPicker.find("."+k)[0].style.background="linear-gradient(to right, rgba("+c.r+", "+c.g+", "+c.b+", 0), rgb("+c.r+", "+c.g+", "+c.b+"))"}}else e.select(0,100,100),r.find("input").val(""),e.elemPicker.find("."+k)[0].style.background="",e.elemPicker.find("."+y).css("left",280)},F.prototype.side=function(){var e=this,r=e.config,o=e.elemColorBox.find("."+p),n=o.attr("lay-type"),l=e.elemPicker.find("."+v),t=e.elemPicker.find("."+h),c=e.elemPicker.find("."+b),a=e.elemPicker.find("."+m),s=e.elemPicker.find("."+k),f=e.elemPicker.find("."+y),C=t[0].offsetTop/180*360,w=100-(a[0].offsetTop+3)/180*100,E=(a[0].offsetLeft+3)/260*100,F=Math.round(f[0].offsetLeft/280*100)/100,H=e.elemColorBox.find("."+g),M=e.elemPicker.find(".layui-colorpicker-pre").children("div"),Y=function(i,l,t,c){e.select(i,l,t);var a=B({h:i,s:l,b:t});if(H.addClass(d).removeClass(u),o[0].style.background="rgb("+a.r+", "+a.g+", "+a.b+")","torgb"===n&&e.elemPicker.find("."+x).find("input").val("rgb("+a.r+", "+a.g+", "+a.b+")"),"rgba"===n){var p=0;p=280*c,f.css("left",p),e.elemPicker.find("."+x).find("input").val("rgba("+a.r+", "+a.g+", "+a.b+", "+c+")"),o[0].style.background="rgba("+a.r+", "+a.g+", "+a.b+", "+c+")",s[0].style.background="linear-gradient(to right, rgba("+a.r+", "+a.g+", "+a.b+", 0), rgb("+a.r+", "+a.g+", "+a.b+"))"}r.change&&r.change(e.elemPicker.find("."+x).find("input").val())},I=i(['
        '].join("")),L=function(e){i("#LAY-colorpicker-moving")[0]||i("body").append(I),I.on("mousemove",e),I.on("mouseup",function(){I.remove()}).on("mouseleave",function(){I.remove()})};t.on("mousedown",function(e){var i=this.offsetTop,r=e.clientY,o=function(e){var o=i+(e.clientY-r),n=l[0].offsetHeight;o<0&&(o=0),o>n&&(o=n);var t=o/180*360;C=t,Y(t,E,w,F),e.preventDefault()};L(o),e.preventDefault()}),l.on("click",function(e){var r=e.clientY-i(this).offset().top;r<0&&(r=0),r>this.offsetHeight&&(r=this.offsetHeight);var o=r/180*360;C=o,Y(o,E,w,F),e.preventDefault()}),a.on("mousedown",function(e){var i=this.offsetTop,r=this.offsetLeft,o=e.clientY,n=e.clientX,l=function(e){var l=i+(e.clientY-o),t=r+(e.clientX-n),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;l<-3&&(l=-3),l>a&&(l=a),t<-3&&(t=-3),t>s&&(t=s);var f=(t+3)/260*100,d=100-(l+3)/180*100;w=d,E=f,Y(C,f,d,F),e.preventDefault()};layui.stope(e),L(l),e.preventDefault()}),c.on("mousedown",function(e){var r=e.clientY-i(this).offset().top-3+j.scrollTop(),o=e.clientX-i(this).offset().left-3+j.scrollLeft();r<-3&&(r=-3),r>this.offsetHeight-3&&(r=this.offsetHeight-3),o<-3&&(o=-3),o>this.offsetWidth-3&&(o=this.offsetWidth-3);var n=(o+3)/260*100,l=100-(r+3)/180*100;w=l,E=n,Y(C,n,l,F),layui.stope(e),e.preventDefault(),a.trigger(e,"mousedown")}),f.on("mousedown",function(e){var i=this.offsetLeft,r=e.clientX,o=function(e){var o=i+(e.clientX-r),n=s[0].offsetWidth;o<0&&(o=0),o>n&&(o=n);var l=Math.round(o/280*100)/100;F=l,Y(C,E,w,l),e.preventDefault()};L(o),e.preventDefault()}),s.on("click",function(e){var r=e.clientX-i(this).offset().left;r<0&&(r=0),r>this.offsetWidth&&(r=this.offsetWidth);var o=Math.round(r/280*100)/100;F=o,Y(C,E,w,o),e.preventDefault()}),M.each(function(){i(this).on("click",function(){i(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e,r=this.style.backgroundColor,o=P(D(r)),n=r.slice(r.lastIndexOf(",")+1,r.length-1);C=o.h,E=o.s,w=o.b,3==(r.match(/[0-9]{1,3}/g)||[]).length&&(n=1),F=n,e=280*n,Y(o.h,o.s,o.b,n)})})},F.prototype.select=function(e,i,r,o){var n=this,l=(n.config,w({h:e,s:100,b:100})),t=w({h:e,s:i,b:r}),c=e/360*180,a=180-r/100*180-3,s=i/100*260-3;n.elemPicker.find("."+h).css("top",c),n.elemPicker.find("."+b)[0].style.background="#"+l,n.elemPicker.find("."+m).css({top:a,left:s}),"change"!==o&&n.elemPicker.find("."+x).find("input").val("#"+t)},F.prototype.pickerEvents=function(){var e=this,r=e.config,o=e.elemColorBox.find("."+p),n=e.elemPicker.find("."+x+" input"),l={clear:function(i){o[0].style.background="",e.elemColorBox.find("."+g).removeClass(d).addClass(u),e.color="",r.done&&r.done(""),e.removePicker()},confirm:function(i,l){var t=n.val(),c=t,a={};if(t.indexOf(",")>-1){if(a=P(D(t)),e.select(a.h,a.s,a.b),o[0].style.background=c="#"+w(a),(t.match(/[0-9]{1,3}/g)||[]).length>3&&"rgba"===o.attr("lay-type")){var s=280*t.slice(t.lastIndexOf(",")+1,t.length-1);e.elemPicker.find("."+y).css("left",s),o[0].style.background=t,c=t}}else a=C(t),o[0].style.background=c="#"+w(a),e.elemColorBox.find("."+g).removeClass(u).addClass(d);return"change"===l?(e.select(a.h,a.s,a.b,l),void(r.change&&r.change(c))):(e.color=t,r.done&&r.done(t),void e.removePicker())}};e.elemPicker.on("click","*[colorpicker-events]",function(){var e=i(this),r=e.attr("colorpicker-events");l[r]&&l[r].call(this,e)}),n.on("keyup",function(e){var r=i(this);l.confirm.call(this,r,13===e.keyCode?null:"change")})},F.prototype.events=function(){var e=this,r=e.config,o=e.elemColorBox.find("."+p);e.elemColorBox.on("click",function(){e.renderPicker(),i(f)[0]&&(e.val(),e.side())}),r.elem[0]&&!e.elemColorBox[0].eventHandler&&(E.on(n,function(r){if(!i(r.target).hasClass(s)&&!i(r.target).parents("."+s)[0]&&!i(r.target).hasClass(f.replace(/\./g,""))&&!i(r.target).parents(f)[0]&&e.elemPicker){if(e.color){var n=P(D(e.color));e.select(n.h,n.s,n.b)}else e.elemColorBox.find("."+g).removeClass(d).addClass(u);o[0].style.background=e.color||"",e.removePicker()}}),j.on("resize",function(){return!(!e.elemPicker||!i(f)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},l.render=function(e){var i=new F(e);return t.call(i)},e(c,l)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,a=layui.hint(),n=layui.device(),l="form",r=".layui-form",o="layui-this",s="layui-hide",c="layui-disabled",u=function(){this.config={verify:{required:[/[\S]+/,"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"],phone:[/^1\d{10}$/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u624b\u673a\u53f7"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"],url:[/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/,"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"],number:function(e){if(!e||isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"\u8bf7\u8f93\u5165\u6b63\u786e\u7684\u8eab\u4efd\u8bc1\u53f7"]},autocomplete:null}};u.prototype.set=function(e){var i=this;return t.extend(!0,i.config,e),i},u.prototype.verify=function(e){var i=this;return t.extend(!0,i.config.verify,e),i},u.prototype.on=function(e,t){return layui.onevent.call(this,l,e,t)},u.prototype.val=function(e,i){var a=this,n=t(r+'[lay-filter="'+e+'"]');return n.each(function(e,a){var n=t(this);layui.each(i,function(e,t){var i,a=n.find('[name="'+e+'"]');a[0]&&(i=a[0].type,"checkbox"===i?a[0].checked=t:"radio"===i?a.each(function(){this.value==t&&(this.checked=!0)}):a.val(t))})}),f.render(null,e),a.getValue(e)},u.prototype.getValue=function(e,i){i=i||t(r+'[lay-filter="'+e+'"]').eq(0);var a={},n={},l=i.find("input,select,textarea");return layui.each(l,function(e,i){var l;t(this);if(i.name=(i.name||"").replace(/^\s*|\s*&/,""),i.name){if(/^.*\[\]$/.test(i.name)){var r=i.name.match(/^(.*)\[\]$/g)[0];a[r]=0|a[r],l=i.name.replace(/^(.*)\[\]$/,"$1["+a[r]++ +"]")}/^checkbox|radio$/.test(i.type)&&!i.checked||(n[l||i.name]=i.value)}}),n},u.prototype.render=function(e,i){var n=this,u=n.config,d=t(r+function(){return i?'[lay-filter="'+i+'"]':""}()),f={input:function(){var e=d.find("input,textarea");u.autocomplete&&e.attr("autocomplete",u.autocomplete)},select:function(){var e,i="\u8bf7\u9009\u62e9",a="layui-form-select",n="layui-select-title",r="layui-select-none",u="",f=d.find("select"),v=function(i,l){t(i.target).parent().hasClass(n)&&!l||(t("."+a).removeClass(a+"ed "+a+"up"),e&&u&&e.val(u)),e=null},y=function(i,d,f){var y,p=t(this),m=i.find("."+n),g=m.find("input"),k=i.find("dl"),x=k.children("dd"),b=this.selectedIndex;if(!d){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=k.outerHeight();b=p[0].selectedIndex,i.addClass(a+"ed"),x.removeClass(s),y=null,x.eq(b).addClass(o).siblings().removeClass(o),e+t>h.height()&&e>=t&&i.addClass(a+"up"),T()},w=function(e){i.removeClass(a+"ed "+a+"up"),g.blur(),y=null,e||$(g.val(),function(e){var i=p[0].selectedIndex;e&&(u=t(p[0].options[i]).html(),0===i&&u===g.attr("placeholder")&&(u=""),g.val(u||""))})},T=function(){var e=k.children("dd."+o);if(e[0]){var t=e.position().top,i=k.height(),a=e.height();t>i&&k.scrollTop(t+k.scrollTop()-i+a-5),t<0&&k.scrollTop(t+k.scrollTop()-5)}};m.on("click",function(e){i.hasClass(a+"ed")?w():(v(e,!0),C()),k.find("."+r).remove()}),m.find(".layui-edge").on("click",function(){g.focus()}),g.on("keyup",function(e){var t=e.keyCode;9===t&&C()}).on("keydown",function(e){var t=e.keyCode;9===t&&w();var i=function(t,a){var n,l;e.preventDefault();var r=function(){var e=k.children("dd."+o);if(k.children("dd."+s)[0]&&"next"===t){var i=k.children("dd:not(."+s+",."+c+")"),n=i.eq(0).index();if(n>=0&&n\u65e0\u5339\u914d\u9879

        '):k.find("."+r).remove()},"keyup"),""===t&&k.find("."+r).remove(),void T())};f&&g.on("keyup",q).on("blur",function(i){var a=p[0].selectedIndex;e=g,u=t(p[0].options[a]).html(),0===a&&u===g.attr("placeholder")&&(u=""),setTimeout(function(){$(g.val(),function(e){u||g.val("")},"blur")},200)}),x.on("click",function(){var e=t(this),a=e.attr("lay-value"),n=p.attr("lay-filter");return!e.hasClass(c)&&(e.hasClass("layui-select-tips")?g.val(""):(g.val(e.text()),e.addClass(o)),e.siblings().removeClass(o),p.val(a).removeClass("layui-form-danger"),layui.event.call(this,l,"select("+n+")",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find("dl>dt").on("click",function(e){return!1}),t(document).off("click",v).on("click",v)}};f.each(function(e,l){var r=t(this),s=r.next("."+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if("string"==typeof r.attr("lay-ignore"))return r.show();var h="string"==typeof r.attr("lay-search"),p=v?v.value?i:v.innerHTML||i:i,m=t(['
        ','
        ','','
        ','
        ',function(e){var a=[];return layui.each(e,function(e,n){0!==e||n.value?"optgroup"===n.tagName.toLowerCase()?a.push("
        "+n.label+"
        "):a.push('
        '+t.trim(n.innerHTML)+"
        "):a.push('
        '+t.trim(n.innerHTML||i)+"
        ")}),0===a.length&&a.push('
        \u6ca1\u6709\u9009\u9879
        '),a.join("")}(r.find("*"))+"
        ","
        "].join(""));s[0]&&s.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},i=d.find("input[type=checkbox]"),a=function(e,i){var a=t(this);e.on("click",function(){var t=a.attr("lay-filter"),n=(a.attr("lay-text")||"").split("|");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find("em").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find("em").text(n[0])),layui.event.call(a[0],l,i[2]+"("+t+")",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr("lay-skin"),o=(l.attr("lay-text")||"").split("|"),s=this.disabled;"switch"===r&&(r="_"+r);var u=e[r]||e.checkbox;if("string"==typeof l.attr("lay-ignore"))return l.show();var d=l.next("."+u[0]),f=t(['
        ",function(){var e=n.title.replace(/\s/g,""),t={checkbox:[e?""+n.title+"":"",''].join(""),_switch:""+((n.checked?o[0]:o[1])||"")+""};return t[r]||t.checkbox}(),"
        "].join(""));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e="layui-form-radio",i=["",""],a=d.find("input[type=radio]"),n=function(a){var n=t(this),o="layui-anim-scaleSpring";a.on("click",function(){var s=n[0].name,c=n.parents(r),u=n.attr("lay-filter"),d=c.find("input[name="+s.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(d,function(){var a=t(this).next("."+e);this.checked=!1,a.removeClass(e+"ed"),a.find(".layui-icon").removeClass(o).html(i[1])}),n[0].checked=!0,a.addClass(e+"ed"),a.find(".layui-icon").addClass(o).html(i[0]),layui.event.call(n[0],l,"radio("+u+")",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),o=r.next("."+e),s=this.disabled;if("string"==typeof r.attr("lay-ignore"))return r.show();o[0]&&o.remove();var u=t(['
        ',''+i[l.checked?0:1]+"","
        "+function(){var e=l.title||"";return"string"==typeof r.next().attr("lay-radio")&&(e=r.next().html()),e}()+"
        ","
        "].join(""));r.after(u),n.call(this,u)})}};return e?f[e]?f[e]():a.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):layui.each(f,function(e,t){t()}),n};var d=function(){var e=null,a=f.config.verify,o="layui-form-danger",s={},c=t(this),u=c.parents(r).eq(0),d=u.find("*[lay-verify]"),h=c.parents("form")[0],y=c.attr("lay-filter");return layui.each(d,function(l,r){var s=t(this),c=s.attr("lay-verify").split("|"),u=s.attr("lay-verType"),d=s.val();if(s.removeClass(o),layui.each(c,function(t,l){var c,f="",h="function"==typeof a[l];if(a[l]){var c=h?f=a[l](d,r):!a[l][0].test(d),y="select"===r.tagName.toLowerCase()||/^checkbox|radio$/.test(r.type);if(f=f||a[l][1],"required"===l&&(f=s.attr("lay-reqText")||f),c)return"tips"===u?i.tips(f,function(){return"string"!=typeof s.attr("lay-ignore")&&y?s.next():s}(),{tips:1}):"alert"===u?i.alert(f,{title:"\u63d0\u793a",shadeClose:!0}):/\bstring|number\b/.test(typeof f)&&i.msg(f,{icon:5,shift:6}),n.mobile?v.scrollTop(function(){try{return(y?s.next():s).offset().top-15}catch(e){return 0}}()):setTimeout(function(){(y?s.next().find("input"):r).focus()},7),s.addClass(o),e=!0}}),e)return e}),!e&&(s=f.getValue(null,u),layui.event.call(this,l,"submit("+y+")",{elem:this,form:h,field:s}))},f=new u,v=t(document),h=t(window);t(function(){f.render()}),v.on("reset",r,function(){var e=t(this).attr("lay-filter");setTimeout(function(){f.render(null,e)},50)}),v.on("submit",r,d).on("click","*[lay-submit]",d),e(l,f)});layui.define("form",function(e){"use strict";var i=layui.$,a=layui.form,n=layui.layer,t="tree",r={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},c="layui-hide",d="layui-disabled",s="layui-tree-set",o="layui-tree-iconClick",h="layui-icon-addition",u="layui-icon-subtraction",p="layui-tree-entry",f="layui-tree-main",y="layui-tree-txt",v="layui-tree-pack",C="layui-tree-spread",k="layui-tree-setLineShort",m="layui-tree-showLine",x="layui-tree-lineExtend",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"\u672a\u547d\u540d",none:"\u65e0\u6570\u636e"}},b.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){"array"===layui._typeof(i)&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('
        ');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('
        '+a.text.none+"
        "),t.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);a.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=i(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(k),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('
        "),h=i(['
        ','
        ','
        ',function(){return t.showLine?l?'':'':''}(),function(){return t.showCheckbox?'':""}(),function(){return t.isJump&&r.href?''+(r.title||r.label||t.text.defaultNodeName)+"":''+(r.title||r.label||t.text.defaultNodeName)+""}(),"
        ",function(){if(!t.edit)return"";var e={add:'',update:'',del:''},i=['
        '];return t.edit===!0&&(t.edit=["update","del"]),"object"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"
        "):void 0}(),"
        "].join(""));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),l||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f),c=r.find("."+o),k=r.find("."+y),m=t.onlyIconControl?c:l,x="";m.on("click",function(i){var a=e.children("."+v),n=m.children(".layui-icon")[0]?m.children(".layui-icon"):m.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings("."+s);r.removeClass(C),r.children("."+v).slideUp(200),r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)}}else x="normal"}),k.on("click",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop("checked"));if(!a.prop("disabled")){if("object"==typeof i.children||e.find("."+v)[0]){var r=e.find("."+v).find('input[same="layuiTreeCheck"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+v),n=a.parent(),r=a.prev().find('input[same="layuiTreeCheck"]');t?r.prop("checked",t):(a.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||r.prop("checked",!1)),l(n)}};l(e),n.renderForm("checkbox")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f);l.on("click",'input[same="layuiTreeCheck"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop("checked");l.prop("disabled")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children("."+p),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),b=e.children("."+v),g={data:a,type:f,elem:e};if("add"==f){b[0]||(r.showLine?(d.find("."+o).addClass("layui-tree-icon"),d.find("."+o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(c),e.append('
        '));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children("."+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find("."+v).each(function(){i(this).children("."+s).last().addClass(k)}),b.children("."+s).last().prev().hasClass(k)?b.children("."+s).last().prev().removeClass(k):b.children("."+s).last().removeClass(k),!e.parent("."+v)[0]&&e.next()[0]&&b.children("."+s).last().removeClass(k);else{var T=e.siblings("."+s),L=1,I=e.parent("."+v);layui.each(T,function(e,a){i(a).children("."+v)[0]||(L=0)}),1==L?(T.children("."+v).addClass(m),T.children("."+v).children("."+s).removeClass(k),e.children("."+v).addClass(m),I.removeClass(x),I.children("."+s).last().children("."+v).children("."+s).last().addClass(k)):e.children("."+v).children("."+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same="layuiTreeCheck"]')[0].checked){var A=e.children("."+v).children("."+s).last();A.find('input[same="layuiTreeCheck"]')[0].checked=!0}t.renderForm("checkbox")}else if("update"==f){var F=d.children("."+y).html();d.children("."+y).html(""),d.append(''),d.children(".layui-tree-editInput").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(".layui-tree-editInput").blur(function(){j(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(a.title||"")+'" \u5417\uff1f',function(a){if(r.operate&&r.operate(g),g.status="remove",n.close(a),!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings("."+s).children("."+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+p),n=e.parent("."+v).prev(),r=n.find('input[same="layuiTreeCheck"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm("checkbox"),l(n.parent("."+s))))}};l(e)}if(r.showLine){var d=e.siblings("."+s),h=1,f=e.parent("."+v);layui.each(d,function(e,a){i(a).children("."+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children("."+v).addClass(m),d.children("."+v).children("."+s).removeClass(k)),e.next()[0]?f.children("."+s).last().children("."+v).children("."+s).last().addClass(k):e.prev().children("."+v).children("."+s).last().addClass(k),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent("."+v).prev();if(r.showLine){y.find("."+o).removeClass("layui-tree-icon"),y.find("."+o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");var w=y.parents("."+v).eq(0);w.addClass(x),w.children("."+s).each(function(){i(this).children("."+v).children("."+s).last().addClass(k)})}else y.find(".layui-tree-iconArrow").addClass(c);e.parents("."+s).eq(0).removeClass(C),e.parent("."+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(".layui-tree-checkedFirst");e.setChecked(e.checkids),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find("."+y).each(function(){var e=i(this).parents("."+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+v)[0]&&a(e.parent("."+v).parent("."+s))};a(e.parent("."+s))}}),r.find("."+p).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(c)}),0==r.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+p).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+c)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var t=i(this).data("id"),r=i(n).children("."+p).find('input[same="layuiTreeCheck"]'),l=r.next();if("number"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else"object"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new b(e);return l.call(i)},e(t,r)});layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,i=layui.form,n="transfer",l={config:{},index:layui[n]?layui[n].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,n,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c="layui-hide",o="layui-btn-disabled",d="layui-none",s="layui-transfer-box",u="layui-transfer-header",h="layui-transfer-search",f="layui-transfer-active",y="layui-transfer-data",p=function(e){return e=e||{},['
        ','
        ','","
        ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
          ',"
          "].join("")},v=['
          ',p({index:0,checkAllName:"layTransferLeftCheckAll"}),'
          ','",'","
          ",p({index:1,checkAllName:"layTransferRightCheckAll"}),"
          "].join(""),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},x.prototype.reload=function(e){var t=this;t.config=a.extend({},t.config,e),t.render()},x.prototype.render=function(){var e=this,i=e.config,n=e.elem=a(t(v).render({data:i,index:e.index})),l=i.elem=a(i.elem);l[0]&&(i.data=i.data||[],i.value=i.value||[],e.key=i.id||e.index,l.html(e.elem),e.layBox=e.elem.find("."+s),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+h),e.layData=n.find("."+y),e.layBtn=n.find("."+f+" .layui-btn"),e.layBox.css({width:i.width,height:i.height}),e.layData.css({height:function(){return i.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,i=["
        • ",'',"
        • "].join("");a[t].views.push(i),delete e.selected}),e.layData.eq(0).html(a[0].views.join("")),e.layData.eq(1).html(a[1].views.join("")),e.renderCheckBtn()},x.prototype.renderForm=function(e){i.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,i=t.config;e=e||{},t.layBox.each(function(n){var l=a(this),r=l.find("."+y),d=l.find("."+u).find('input[type="checkbox"]'),s=r.find('input[type="checkbox"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data("hide");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop("checked",f&&h===s.length),t.layBtn.eq(n)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":i.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var i=a('

          '+(t||"")+"

          ");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(i)},x.prototype.setValue=function(){var e=this,t=e.config,i=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||i.push(this.value)}),t.value=i,e},x.prototype.parseData=function(e){var t=this,i=t.config,n=[];return layui.each(i.data,function(t,l){l=("function"==typeof i.parseData?i.parseData(l):l)||l,n.push(l=a.extend({},l)),layui.each(i.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),i.data=n,t},x.prototype.getData=function(e){var a=this,t=a.config,i=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),i=t[0].checked,n=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&n.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=i)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var i=a(this),n=i.data("index"),l=e.layBox.eq(n),r=[];if(!i.hasClass(o)){e.layBox.eq(n).each(function(t){var i=a(this),n=i.find("."+y);n.children("li").each(function(){var t=a(this),i=t.find('input[type="checkbox"]'),n=i.data("hide");i[0].checked&&!n&&(i[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(i[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings("."+s).find("."+h+" input");""===c.val()||c.trigger("keyup"),t.onchange&&t.onchange(e.getData(r),n)}}),e.laySearch.find("input").on("keyup",function(){var i=this.value,n=a(this).parents("."+h).eq(0).siblings("."+y),l=n.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),n=t[0].title.indexOf(i)!==-1;e[n?"removeClass":"addClass"](c),t.data("hide",!n)}),e.renderCheckBtn();var r=l.length===n.children("li."+c).length;e.noneView(n,r?t.text.searchNone:"")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(n,l)});layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=layui.util,r=layui.hint(),c=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,h,e,t)}},s=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(s.that[i]=e,s.config[i]=t),{config:t,reload:function(t,i){e.reload.call(e,t,i)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},u=function(e){var t=s.config[e];return t||r.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},y=function(e,a,l,n){var r=this.config||{};r.escape&&(a=o.escape(a));var c=e.templet?function(){return"function"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t("
          "+c+"
          ").text():c},h="table",f=".layui-table",p="layui-hide",v="layui-none",m="layui-table-view",g=".layui-table-tool",b=".layui-table-box",x=".layui-table-init",k=".layui-table-header",C=".layui-table-body",w=".layui-table-main",T=".layui-table-fixed",N=".layui-table-fixed-l",L=".layui-table-fixed-r",_=".layui-table-total",S=".layui-table-page",A=".layui-table-sort",R="layui-table-edit",W="layui-table-hover",z=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',function(){return e.fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':""}(),"{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
          ','
          ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
          ","
          "].join("")},E=['',"","
          "].join(""),j=['
          ',"{{# if(d.data.toolbar){ }}",'
          ','
          ','
          ',"
          ","{{# } }}",'
          ',"{{# if(d.data.loading){ }}",'
          ','',"
          ","{{# } }}","{{# var left, right; }}",'
          ',z(),"
          ",'
          ',E,"
          ","{{# if(left){ }}",'
          ','
          ',z({fixed:!0}),"
          ",'
          ',E,"
          ","
          ","{{# }; }}","{{# if(right){ }}",'
          ','
          ',z({fixed:"right"}),'
          ',"
          ",'
          ',E,"
          ","
          ","{{# }; }}","
          ","{{# if(d.data.totalRow){ }}",'
          ','','',"
          ","
          ","{{# } }}","{{# if(d.data.page){ }}",'
          ','
          ',"
          ","{{# } }}","","
          "].join(""),F=t(window),I=t(document),H=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};H.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"\u65e0\u6570\u636e"}},H.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=F.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+m),o=e.elem=t(i(j).render({VIEW_CLASS:m,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(g),e.layBox=o.find(b),e.layHeader=o.find(k),e.layMain=o.find(w),e.layBody=o.find(C),e.layFixed=o.find(T),e.layFixLeft=o.find(N),e.layFixRight=o.find(L),e.layTotal=o.find(_),e.layPage=o.find(S),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(k).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},H.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},H.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},H.prototype.renderToolbar=function(){var e=this,a=e.config,l=['
          ','
          ','
          '].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},c=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i="string"==typeof t?r[t]:t;i&&c.push('
          ')}),e.layTool.find(".layui-table-tool-self").html(c.join(""))},H.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](p),r.colspan=n,r.hide=n<1;var c=l.data("parentkey");c&&i.setParentCol(e,c)}},H.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},H.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,c){var d=0,s=c.minWidth||t.cellMinWidth;return c?void(c.colGroup||c.hide||(e?l&&ln&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var c=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&c>=-i&&c<=i){var d=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?d(t.prev()):t},s=d(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+c+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},H.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},H.prototype.reload=function(e,i){var a=this;e=e||{},delete a.haveInit,layui.each(e,function(e,t){"array"===layui._typeof(t)&&delete a.config[e]}),a.config=t.extend(i,{},a.config,e),a.render()},H.prototype.errorView=function(e){var i=this,a=i.layMain.find("."+v),l=t('
          '+(e||"Error")+"
          ");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(p),i.layMain.find("tbody").html(""),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},H.prototype.page=1,H.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var c=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(c=JSON.stringify(c)),i.loading(),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:c,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+n.statusName+'": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),i.renderForm(),i.setColsWidth(),"function"==typeof a.error&&a.error(e,t)}})}else if("array"===layui._typeof(a.data)){var d={},s=e*a.limit-a.limit;d[n.dataName]=a.data.concat().splice(s,a.limit),d[n.countName]=a.data.length,"object"==typeof a.totalRow&&(d[n.totalRowName]=t.extend({},a.totalRow)),i.renderData(d,e,d[n.countName]),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(d,e,d[n.countName])}},H.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},H.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,u=e[s.response.dataName]||[],h=e[s.response.totalRowName],f=[],m=[],g=[],b=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(u,function(a,l){var o=[],u=[],h=[],v=a+s.limit*(n-1)+1;"array"===layui._typeof(l)&&0===l.length||(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var f=r.field||n,m=s.index+"-"+r.key,g=l[f];if(void 0!==g&&null!==g||(g=""),!r.colGroup){var b=['','
          '+function(){var n=t.extend(!0,{LAY_INDEX:v,LAY_COL:r},l),o=d.config.checkName;switch(r.type){case"checkbox":return'";case"radio":return n[o]&&(e=a),'';case"numbers":return v}return r.toolbar?i(t(r.toolbar).html()||"").render(n):y.call(c,r,g,n)}(),"
          "].join("");o.push(b),r.fixed&&"right"!==r.fixed&&u.push(b),"right"===r.fixed&&h.push(b)}}),f.push(''+o.join("")+""),m.push(''+u.join("")+""),g.push(''+h.join("")+""))}),c.layBody.scrollTop(0),c.layMain.find("."+v).remove(),c.layMain.find("tbody").html(f.join("")),c.layFixLeft.find("tbody").html(m.join("")),c.layFixRight.find("tbody").html(g.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=u,c.layPage[0==o||0===u.length&&1==n?"addClass":"removeClass"](p),0===u.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(p),r?b():(b(),c.renderTotal(u,h),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page)))))},H.prototype.renderTotal=function(e,a){var l=this,n=l.config,o={};if(n.totalRow){layui.each(e,function(e,t){"array"===layui._typeof(t)&&0===t.length||l.eachCols(function(e,i){var a=i.field||e,l=t[a];i.totalRow&&(o[a]=(o[a]||0)+(parseFloat(l)||0))})}),l.dataTotal={};var r=[];l.eachCols(function(e,c){var d=c.field||e,s=function(){var e,t=c.totalRowText||"",i=parseFloat(o[d]).toFixed(2),n={};return n[d]=i,e=c.totalRow?y.call(l,c,i,n)||t:t,a?a[c.field]||e:e}(),u=['','
          '+function(){var e=c.totalRow||n.totalRow;return"string"==typeof e?i(e).render(t.extend({TOTAL_NUMS:s},c)):s}(),"
          "].join("");c.field&&(l.dataTotal[d]=s),r.push(u)}),l.layTotal.find("tbody").html(""+r.join("")+"")}},H.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},H.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},H.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},H.prototype.sort=function(e,i,a,l){var n,o,c=this,s={},u=c.config,y=u.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&(n=e,c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1}));try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(A);c.layHeader.find("th").find(A).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){r.error("Table modules: sort field '"+n+"' not matched")}c.sortKey={field:n,sort:i},u.autoSort&&("asc"===i?o=layui.sort(f,n):"desc"===i?o=layui.sort(f,n,!0):(o=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=o||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,h,"sort("+y+")",{field:n,type:i})},H.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(x).remove()):(i.layInit=t(['
          ','',"
          "].join("")),i.layBox.append(i.layInit)))},H.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&"array"!==layui._typeof(l[e])&&(l[e][a.checkName]=t)},H.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},H.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},H.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=F.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css("height",e-2))},H.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},H.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('
          ');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),c=r-l;e.layFixed.find(C).css("height",i.height()>=c?c:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](p),e.layFixRight.css("right",a-1)},H.prototype.events=function(){var e,i=this,a=i.config,o=t("body"),r={},s=i.layHeader.find("th"),u=".layui-table-cell",f=a.elem.attr("lay-filter");i.layTool.on("click","*[lay-event]",function(e){var o=t(this),r=o.attr("lay-event"),s=function(e){var l=t(e.list),n=t('
            ');n.html(l),a.height&&n.css("max-height",a.height-(i.layTool.outerHeight()||50)),o.find(".layui-table-tool-panel")[0]||o.append(n),i.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),I.trigger("table.tool.panel.remove"),l.close(i.tipsIndex),r){case"LAYTABLE_COLS":s({list:function(){var e=[];return i.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('
          • ')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var l=t(e.elem),n=this.checked,o=l.data("key"),r=l.data("parentkey");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+"-"+t===o){var c=l.hide;l.hide=!n,i.elem.find('*[data-key="'+a.index+"-"+o+'"]')[n?"removeClass":"addClass"](p),c!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case"LAYTABLE_EXPORT":c.ie?l.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):s({list:function(){return['
          • \u5bfc\u51fa\u5230 Csv \u6587\u4ef6
          • ','
          • \u5bfc\u51fa\u5230 Excel \u6587\u4ef6
          • '].join("")}(),done:function(e,l){l.on("click",function(){var e=t(this).data("type");d.exportFile.call(i,a.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("\u6253\u5370\u7a97\u53e3","_blank"),y=[""].join(""),v=t(i.layHeader.html());v.append(i.layMain.find("table").html()),v.append(i.layTotal.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),u.document.write(y+v.prop("outerHTML")),u.document.close(),u.print(),u.close()}layui.event.call(this,h,"toolbar("+f+")",t.extend({event:r,config:a},{}))}),s.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||r.resizeStart||(r.allowResize=i.width()-l<=10,o.css("cursor",r.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);r.resizeStart||o.css("cursor","")}).on("mousedown",function(e){var l=t(this);if(r.allowResize){var n=l.data("key");e.preventDefault(),r.resizeStart=!0,r.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();r.rule=e,r.ruleWidth=parseFloat(t),r.minWidth=l.data("minwidth")||a.cellMinWidth})}}),I.on("mousemove",function(t){if(r.resizeStart){if(t.preventDefault(),r.rule){var a=r.ruleWidth+t.clientX-r.offset[0];a');return n[0].value=i.data("content")||l.text(),i.find("."+R)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(u);if(!i.data("off"))if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('
            ')}};i.layBody.on("click","."+g,function(e){var n=t(this),o=n.parent(),r=o.children(u);i.tipsIndex=l.tips(['
            ',r.html(),"
            ",''].join(""),r[0],{tips:[3,""],time:-1,anim:-1,maxWidth:c.ios||c.android?300:i.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),i.layBody.on("click","*[lay-event]",function(){var e=t(this),a=e.parents("tr").eq(0).data("index");layui.event.call(this,h,"tool("+f+")",v.call(this,{event:e.attr("lay-event")})),i.setThisRowChecked(a)}),i.layMain.on("scroll",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(C).scrollTop(n),l.close(i.tipsIndex)}),F.on("resize",function(){i.resize()})},function(){I.on("click",function(){I.trigger("table.remove.tool.panel")}),I.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()})}(),d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':f+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(o){r.error(n+l,"error")}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(o){return r.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},s.that={},s.config={},d.eachCols=function(e,i,a){var l=s.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return"array"===layui._typeof(l)?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.getData=function(e){var t=[],i=d.cache[e]||[];return layui.each(i,function(e,i){"array"!==layui._typeof(i)&&t.push(d.clearCacheKey(i))}),t},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var l=s.that[e],n=s.config[e]||{},o={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],u=document.createElement("a");return c.ie?r.error("IE_NOT_SUPPORT_EXPORTS"):(u.href="data:"+o+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],n=[],o=[];return layui.each(t,function(t,a){var o=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(a),function(e,t){o.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,n){if(n.field&&"normal"==n.type&&!n.hide){var r=a[n.field];void 0!==r&&null!==r||(r=""),0==t&&i.push(n.title||""),o.push('"'+y.call(l,n,r,a,"text")+'"')}}),n.push(o.join(","))}),layui.each(a.dataTotal,function(e,t){o.push(t)}),i.join(",")+"\r\n"+n.join("\r\n")+"\r\n"+o.join(",")}()),u.download=(n.title||"table_"+(n.index||""))+"."+i,document.body.appendChild(u),u.click(),void document.body.removeChild(u))},d.resize=function(e){if(e){var t=u(e);if(!t)return;s.that[e].resize()}else layui.each(s.that,function(){ -this.resize()})},d.reload=function(e,t,i){var a=u(e);if(a){var l=s.that[e];return l.reload(t,i),s.call(l)}},d.render=function(e){var t=new H(e);return s.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},t(function(){d.init()}),e(h,d)});layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['",'"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['
              ',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("")}),i.join("")}(),"
            "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):al.length&&(l.value=l.length),parseInt(l.value)!==l.value&&(l.half||(l.value=Math.ceil(l.value)-l.value<.5?Math.ceil(l.value):Math.floor(l.value)));for(var n='
              ",s=1;s<=l.length;s++){var r='
            • ";l.half&&parseInt(l.value)!==l.value&&s==Math.ceil(l.value)?n=n+'
            • ":n+=r}n+="
            "+(l.text?''+l.value+"\u661f":"")+"";var c=l.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),l.span=e.elemTemp.next("span"),l.setText&&l.setText(l.value),c.html(e.elemTemp),c.addClass("layui-inline"),l.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,l=a.config;l.value=e,a.render()},v.prototype.action=function(){var e=this,l=e.config,i=e.elemTemp,n=i.find("i").width();i.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(l.value=t,l.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(l.value=l.value-.5)}l.text&&i.next("span").text(l.value+"\u661f"),l.choose&&l.choose(l.value),l.setText&&l.setText(l.value)}),v.on("mousemove",function(e){if(i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+t+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(s).removeClass(u)}}),v.on("mouseleave",function(){i.find("i").each(function(){a(this).addClass(o).removeClass(r)}),i.find("i:lt("+Math.floor(l.value)+")").each(function(){a(this).addClass(u).removeClass(f)}),l.half&&parseInt(l.value)!==l.value&&i.children("li:eq("+Math.floor(l.value)+")").children("i").addClass(s).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},l.render=function(e){var a=new v(e);return i.call(a)},e(n,l)});layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var m=l(e.elem);if(m[0]){var f=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,y=e.end||"\u6ca1\u6709\u66f4\u591a\u4e86",v=e.scrollElem&&e.scrollElem!==document,d="\u52a0\u8f7d\u66f4\u591a",h=l('");m.find(".layui-flow-more")[0]||m.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(y):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(f.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),!i&&m.width()&&(r=setTimeout(function(){var i=v?e.height():l(window).height(),n=v?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&e.attr("lay-src")){var f=e.attr("lay-src");layui.img(f,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",f).removeAttr("lay-src"),l[0]&&m(l),i++},function(){t.lazyimg.elem.eq(i);e.removeAttr("lay-src")})}},m=function(e,o){var m=a?(o||n).height():l(window).height(),f=n.scrollTop(),u=f+m;if(t.lazyimg.elem=l(r),e)c(e,m);else for(var s=0;su)break}};if(m(),!o){var f;n.on("scroll",function(){var e=l(this);f&&clearTimeout(f),f=setTimeout(function(){m(null,e)},50)}),o=!0}return m},e("flow",new o)});layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("string"==typeof t?"#"+t:t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['
            ','
            '+f+"
            ",'
            ','',"
            ","
            "].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e([""].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("\u8bf7\u6682\u65f6\u7528shift+enter"),!1}r.execCommand("formatBlock",!1,"

            ")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"

            "),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"\u4e0a\u4f20\u5931\u8d25")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"\u5e2e\u52a9",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"

            "),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"\u8d85\u94fe\u63a5",skin:"layui-layer-msg",content:['

              ','
            • ','','
              ','',"
              ","
            • ",'
            • ','','
              ','",'","
              ","
            • ",'
            • ','','',"
            • ","
            "].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[\u5fae\u7b11]","[\u563b\u563b]","[\u54c8\u54c8]","[\u53ef\u7231]","[\u53ef\u601c]","[\u6316\u9f3b]","[\u5403\u60ca]","[\u5bb3\u7f9e]","[\u6324\u773c]","[\u95ed\u5634]","[\u9119\u89c6]","[\u7231\u4f60]","[\u6cea]","[\u5077\u7b11]","[\u4eb2\u4eb2]","[\u751f\u75c5]","[\u592a\u5f00\u5fc3]","[\u767d\u773c]","[\u53f3\u54fc\u54fc]","[\u5de6\u54fc\u54fc]","[\u5618]","[\u8870]","[\u59d4\u5c48]","[\u5410]","[\u54c8\u6b20]","[\u62b1\u62b1]","[\u6012]","[\u7591\u95ee]","[\u998b\u5634]","[\u62dc\u62dc]","[\u601d\u8003]","[\u6c57]","[\u56f0]","[\u7761]","[\u94b1]","[\u5931\u671b]","[\u9177]","[\u8272]","[\u54fc]","[\u9f13\u638c]","[\u6655]","[\u60b2\u4f24]","[\u6293\u72c2]","[\u9ed1\u7ebf]","[\u9634\u9669]","[\u6012\u9a82]","[\u4e92\u7c89]","[\u5fc3]","[\u4f24\u5fc3]","[\u732a\u5934]","[\u718a\u732b]","[\u5154\u5b50]","[ok]","[\u8036]","[good]","[NO]","[\u8d5e]","[\u6765]","[\u5f31]","[\u8349\u6ce5\u9a6c]","[\u795e\u9a6c]","[\u56e7]","[\u6d6e\u4e91]","[\u7ed9\u529b]","[\u56f4\u89c2]","[\u5a01\u6b66]","[\u5965\u7279\u66fc]","[\u793c\u7269]","[\u949f]","[\u8bdd\u7b52]","[\u8721\u70db]","[\u86cb\u7cd5]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('
          • '+e+'
          • ')}),'
              '+t.join("")+"
            "}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"\u63d2\u5165\u4ee3\u7801",skin:"layui-layer-msg",content:['
              ','
            • ','','
              ','","
              ","
            • ",'
            • ','','
              ','',"
              ","
            • ",'
            • ','','',"
            • ","
            "].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'',strong:'',italic:'',underline:'',del:'',"|":'',left:'',center:'',right:'',link:'',unlink:'',face:'',image:'',code:'',help:''},L=new c;t(n,L)});layui.define("jquery",function(a){"use strict";var e=layui.$;a("code",function(a){var l=[];a=a||{},a.elem=e(a.elem||".layui-code"),a.lang="lang"in a?a.lang:"code",a.elem.each(function(){l.push(this)}),layui.each(l.reverse(),function(l,i){var t=e(i),c=t.html();(t.attr("lay-encode")||a.encode)&&(c=c.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),t.html('
            1. '+c.replace(/[\r\t\n]+/g,"
            2. ")+"
            "),t.find(">.layui-code-h3")[0]||t.prepend('

            '+(t.attr("lay-title")||a.title||"</>")+''+(t.attr("lay-lang")||a.lang||"")+"

            ");var n=t.find(">.layui-code-ol");t.addClass("layui-box layui-code-view"),(t.attr("lay-skin")||a.skin)&&t.addClass("layui-code-"+(t.attr("lay-skin")||a.skin)),(n.find("li").length/100|0)>0&&n.css("margin-left",(n.find("li").length/100|0)+"px"),(t.attr("lay-height")||a.height)&&n.css("max-height",t.attr("lay-height")||a.height)})})}).addcss("modules/code.css?v="+localStorage.getItem("version"),"skincodecss"); \ No newline at end of file +/** v2.9.7 | MIT Licensed */;!function(d){"use strict";var t,h=d.document,m={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.9.7"},e=d.LAYUI_GLOBAL||{},v=(t=h.currentScript?h.currentScript.src:function(){for(var t,e=h.scripts,o=e.length-1,n=o;01e3*m.timeout/4?g(s+" is not a valid module","error"):void(m.status[s]?y():setTimeout(n,4))}())}function y(){e.push(layui[s]),11e3*m.timeout/4?g(s+" is not a valid module","error"):void("string"==typeof m.modules[s]&&m.status[s]?y():setTimeout(f,4))}():((r=h.createElement("script"))["async"]=!0,r.charset="utf-8",r.src=i+((u=!0===m.version?m.v||(new Date).getTime():m.version||"")?"?v="+u:""),l.appendChild(r),!r.attachEvent||r.attachEvent.toString&&r.attachEvent.toString().indexOf("[native code")<0||b?r.addEventListener("load",function(t){p(t,i)},!1):r.attachEvent("onreadystatechange",function(t){p(t,i)}),m.modules[s]=i)),a},n.prototype.disuse=function(t){var o=this;return t=o.isArray(t)?t:[t],o.each(t,function(t,e){m.status[e],delete o[e],delete N[e],delete o.modules[e],delete m.status[e],delete m.modules[e]}),o},n.prototype.getStyle=function(t,e){t=t.currentStyle||d.getComputedStyle(t,null);return t[t.getPropertyValue?"getPropertyValue":"getAttribute"](e)},n.prototype.link=function(o,n,t){var r=this,e=h.getElementsByTagName("head")[0],i=h.createElement("link"),a="layuicss-"+((t="string"==typeof n?n:t)||o).replace(/\.|\//g,""),u="creating",l=0;return i.href=o+(m.debug?"?v="+(new Date).getTime():""),i.rel="stylesheet",i.id=a,i.media="all",h.getElementById(a)||e.appendChild(i),"function"==typeof n&&function s(t){var e=h.getElementById(a);return++l>1e3*m.timeout/100?g(o+" timeout"):void(1989===parseInt(r.getStyle(e,"width"))?(t===u&&e.removeAttribute("lay-status"),e.getAttribute("lay-status")===u?setTimeout(s,100):n()):(e.setAttribute("lay-status",u),setTimeout(function(){s(u)},100)))}(),r},n.prototype.addcss=function(t,e,o){return layui.link(m.dir+"css/"+t,e,o)},m.callback={},n.prototype.factory=function(t){if(layui[t])return"function"==typeof m.callback[t]?m.callback[t]:null},n.prototype.img=function(t,e,o){var n=new Image;if(n.src=t,n.complete)return e(n);n.onload=function(){n.onload=null,"function"==typeof e&&e(n)},n.onerror=function(t){n.onerror=null,"function"==typeof o&&o(t)}},n.prototype.config=function(t){for(var e in t=t||{})m[e]=t[e];return this},n.prototype.modules=function(){var t,e={};for(t in N)e[t]=N[t];return e}(),n.prototype.extend=function(t){for(var e in t=t||{})this[e]||this.modules[e]?g(e+" Module already exists","error"):this.modules[e]=t[e];return this},n.prototype.router=n.prototype.hash=function(t){var o={path:[],search:{},hash:((t=t||location.hash).match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(t)&&(t=t.replace(/^#\//,""),o.href="/"+t,t=t.replace(/([^#])(#.*$)/,"$1").split("/")||[],this.each(t,function(t,e){/^\w+=/.test(e)?(e=e.split("="),o.search[e[0]]=e[1]):o.path.push(e)})),o},n.prototype.url=function(t){var r,e,o=this;return{pathname:(t?((t.match(/\.[^.]+?\/.+/)||[])[0]||"").replace(/^[^\/]+/,"").replace(/\?.+/,""):location.pathname).replace(/^\//,"").split("/"),search:(r={},e=(t?((t.match(/\?.+/)||[])[0]||"").replace(/\#.+/,""):location.search).replace(/^\?+/,"").split("&"),o.each(e,function(t,e){var o=e.indexOf("="),n=o<0?e.substr(0,e.length):0!==o&&e.substr(0,o);n&&(r[n]=0(l.innerHeight||h.documentElement.clientHeight)},d.getStyleRules=function(t,n){if(t)return t=(t=t.sheet||t.styleSheet||{}).cssRules||t.rules,"function"==typeof n&&layui.each(t,function(t,e){if(n(e,t))return!0}),t},d.style=function(t){t=t||{};var e=d.elem("style"),n=t.text||"",i=t.target;if(n)return"styleSheet"in e?(e.setAttribute("type","text/css"),e.styleSheet.cssText=n):e.innerHTML=n,e.id="LAY-STYLE-"+(t.id||(n=d.style.index||0,d.style.index++,"DF-"+n)),i&&((t=d(i).find("#"+e.id))[0]&&t.remove(),d(i).append(e)),e},d.position=function(t,e,n){var i,o,r,c,u,a,s,f;e&&(n=n||{},t!==h&&t!==d("body")[0]||(n.clickType="right"),i="right"===n.clickType?{left:(i=n.e||l.event||{}).clientX,top:i.clientY,right:i.clientX,bottom:i.clientY}:t.getBoundingClientRect(),s=e.offsetWidth,f=e.offsetHeight,o=function(t){return h.body[t=t?"scrollLeft":"scrollTop"]|h.documentElement[t]},r=function(t){return h.documentElement[t?"clientWidth":"clientHeight"]},c="margin"in n?n.margin:5,u=i.left,a=i.bottom,"center"===n.align?u-=(s-t.offsetWidth)/2:"right"===n.align&&(u=u-s+t.offsetWidth),(u=u+s+c>r("width")?r("width")-s-c:u)r()&&(i.top>f+c&&i.top<=r()?a=i.top-f-2*c:n.allowBottomOut||(a=r()-f-2*c)<0&&(a=0)),(s=n.position)&&(e.style.position=s),e.style.left=u+("fixed"===s?0:o(1))+"px",e.style.top=a+("fixed"===s?0:o())+"px",d.hasScrollbar()||(f=e.getBoundingClientRect(),!n.SYSTEM_RELOAD&&f.bottom+c>r()&&(n.SYSTEM_RELOAD=!0,setTimeout(function(){d.position(t,e,n)},50))))},d.options=function(t,e){if(e="object"==typeof e?e:{attr:e},t===h)return{};var t=d(t),n=e.attr||"lay-options",t=t.attr(n);try{return new Function("return "+(t||"{}"))()}catch(i){return layui.hint().error(e.errorText||[n+'="'+t+'"',"\n parseerror: "+i].join("\n"),"error"),{}}},d.isTopElem=function(n){var t=[h,d("body")[0]],i=!1;return d.each(t,function(t,e){if(e===n)return i=!0}),i},d.clipboard={writeText:function(n){var i=String(n.text);function t(){var t=h.createElement("textarea");t.value=i,t.style.position="fixed",t.style.opacity="0",t.style.top="0px",t.style.left="0px",h.body.appendChild(t),t.select();try{h.execCommand("copy"),"function"==typeof n.done&&n.done()}catch(e){"function"==typeof n.error&&n.error(e)}finally{t.remove?t.remove():h.body.removeChild(t)}}navigator&&"clipboard"in navigator?navigator.clipboard.writeText(i).then(n.done,function(){t()}):t()}},d.passiveSupported=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});l.addEventListener("test",null,e),l.removeEventListener("test",null,e)}catch(n){}return t}(),d.touchEventsSupported=function(){return"ontouchstart"in l},d.touchSwipe=function(t,e){var n,i,o,r=e,c=d(t)[0];c&&d.touchEventsSupported()&&(n={pointerStart:{x:0,y:0},pointerEnd:{x:0,y:0},distanceX:0,distanceY:0,direction:"none",timeStart:null},e=function(t){1===t.touches.length&&(c.addEventListener("touchmove",i,!!d.passiveSupported&&{passive:!1}),c.addEventListener("touchend",o),c.addEventListener("touchcancel",o),n.timeStart=Date.now(),n.pointerStart.x=n.pointerEnd.x=t.touches[0].clientX,n.pointerStart.y=n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.distanceY=0,n.direction="none",r.onTouchStart)&&r.onTouchStart(t,n)},i=function(t){t.preventDefault(),n.pointerEnd.x=t.touches[0].clientX,n.pointerEnd.y=t.touches[0].clientY,n.distanceX=n.pointerStart.x-n.pointerEnd.x,n.distanceY=n.pointerStart.y-n.pointerEnd.y,Math.abs(n.distanceX)>Math.abs(n.distanceY)?n.direction=0]|&(?=#[a-zA-Z0-9]+)/g.test(e+="")?e.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):e}},i=function(e){return new RegExp(e,"g")},u=function(e,r){var n="Laytpl Error: ";return"object"==typeof console&&console.error(n+e+"\n"+(r||"")),n+e},n=function(e,r){var n=this,e=(n.config=n.config||{},n.template=e,function(e){for(var r in e)n.config[r]=e[r]});e(c),e(r)},r=(n.prototype.tagExp=function(e,r,n){var c=this.config;return i((r||"")+c.open+["#([\\s\\S])+?","([^{#}])*?"][e||0]+c.close+(n||""))},n.prototype.parse=function(e,r){var n=this,c=n.config,t=e,o=i("^"+c.open+"#",""),p=i(c.close+"$","");if("string"!=typeof e)return e;e='"use strict";var view = "'+(e=e.replace(/\s+|\r|\t|\n/g," ").replace(i(c.open+"#"),c.open+"# ").replace(i(c.close+"}"),"} "+c.close).replace(/\\/g,"\\\\").replace(i(c.open+"!(.+?)!"+c.close),function(e){return e=e.replace(i("^"+c.open+"!"),"").replace(i("!"+c.close),"").replace(i(c.open+"|"+c.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(n.tagExp(),function(e){return'";'+(e=e.replace(o,"").replace(p,"")).replace(/\\(.)/g,"$1")+';view+="'}).replace(n.tagExp(1),function(e){var r='"+laytpl.escape(';return e.replace(/\s/g,"")===c.open+c.close?"":(e=e.replace(i(c.open+"|"+c.close),""),/^=/.test(e)?e=e.replace(/^=/,""):/^-/.test(e)&&(e=e.replace(/^-/,""),r='"+('),r+e.replace(/\\(.)/g,"$1")+')+"')}))+'";return view;';try{return n.cache=e=new Function("d, laytpl",e),e(r,l)}catch(a){return delete n.cache,u(a,t)}},n.prototype.render=function(e,r){e=e||{};var n=this,e=n.cache?n.cache(e,l):n.parse(n.template,e);return"function"==typeof r&&r(e),e},function(e,r){return new n(e,r)});r.config=function(e){for(var r in e=e||{})c[r]=e[r]},r.v="2.0.0",e("laytpl",r)});layui.define(function(e){"use strict";var r=document,u="getElementById",c="getElementsByTagName",a="layui-disabled",t=function(e){var a=this;a.config=e||{},a.config.index=++o.index,a.render(!0)},o=(t.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return e.elem.length===undefined?2:3},t.prototype.view=function(){var i,e,t,n=this.config,r=n.groups="groups"in n?Number(n.groups)||0:5,u=(n.layout="object"==typeof n.layout?n.layout:["prev","page","next"],n.count=Number(n.count)||0,n.curr=Number(n.curr)||1,n.limits="object"==typeof n.limits?n.limits:[10,20,30,40,50],n.limit=Number(n.limit)||10,n.pages=Math.ceil(n.count/n.limit)||1,n.curr>n.pages?n.curr=n.pages:n.curr<1&&(n.curr=1),r<0?r=1:r>n.pages&&(r=n.pages),n.prev="prev"in n?n.prev:"\u4e0a\u4e00\u9875",n.next="next"in n?n.next:"\u4e0b\u4e00\u9875",n.pages>r?Math.ceil((n.curr+(1'+n.prev+"":"",page:function(){var e=[];if(n.count<1)return"";1'+(n.first||1)+"");var a=Math.floor((r-1)/2),t=1n.pages?n.pages:a:r;for(i-t...');t<=i;t++)t===n.curr?e.push('"+t+""):e.push(''+t+"");return n.pages>r&&n.pages>i&&!1!==n.last&&(i+1...'),0!==r)&&e.push(''+(n.last||n.pages)+""),e.join("")}(),next:n.next?''+n.next+"":"",count:''+(e="object"==typeof n.countText?n.countText:["\u5171 "," \u6761"])[0]+n.count+e[1]+"",limit:(i=['"),refresh:['','',""].join(""),skip:[''+(e="object"==typeof n.skipText?n.skipText:["\u5230\u7b2c","\u9875","\u786e\u5b9a"])[0],'',e[1]+'",""].join("")};return['
            ',(t=[],layui.each(n.layout,function(e,a){l[a]&&t.push(l[a])}),t.join("")),"
            "].join("")},t.prototype.jump=function(e,a){if(e){var t=this,i=t.config,n=e.children,r=e[c]("button")[0],u=e[c]("input")[0],e=e[c]("select")[0],l=function(){var e=Number(u.value.replace(/\s|\D/g,""));e&&(i.curr=e,t.render())};if(a)return l();for(var s=0,p=n.length;si.pages||(i.curr=e,t.render())});e&&o.on(e,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),r&&o.on(r,"click",function(){l()})}},t.prototype.skip=function(t){var i,e;t&&(i=this,e=t[c]("input")[0])&&o.on(e,"keyup",function(e){var a=this.value,e=e.keyCode;/^(37|38|39|40)$/.test(e)||(/\D/.test(a)&&(this.value=a.replace(/\D/,"")),13===e&&i.jump(t,!0))})},t.prototype.render=function(e){var a=this,t=a.config,i=a.type(),n=a.view(),i=(2===i?t.elem&&(t.elem.innerHTML=n):3===i?t.elem.html(n):r[u](t.elem)&&(r[u](t.elem).innerHTML=n),t.jump&&t.jump(t,e),r[u]("layui-laypage-"+t.index));a.jump(i),t.hash&&!e&&(location.hash="!"+t.hash+"="+t.curr),a.skip(i)},{render:function(e){return new t(e).index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(a,e,t){return a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1),this}});e("laypage",o)});!function(i,v){"use strict";var n=i.layui&&layui.define,l={getPath:i.lay&&lay.getPath?lay.getPath:"",link:function(e,t,a){D.path&&i.lay&&lay.layui&&lay.layui.link(D.path+e,t,a)}},e=i.LAYUI_GLOBAL||{},a="laydate",d="layui-"+a+"-id",D={v:"5.5.0",config:{weekStart:0},index:i.laydate&&i.laydate.v?1e5:0,path:e.laydate_dir||l.getPath,set:function(e){var t=this;return t.config=lay.extend({},t.config,e),t},ready:function(e){var t="laydate",a=(n?"modules/":"")+"laydate.css?v="+D.v;return n?layui["layui.all"]?"function"==typeof e&&e():layui.addcss(a,e,t):l.link(a,e,t),this}},s=function(){var t=this,e=t.config.id;return(s.that[e]=t).inst={hint:function(e){t.hint.call(t,e)},reload:function(e){t.reload.call(t,e)},config:t.config}},C="layui-this",M="laydate-disabled",h=[100,2e5],T="layui-laydate-static",L="layui-laydate-list",o="laydate-selected",r="layui-laydate-hint",y="laydate-day-prev",m="laydate-day-next",E=".laydate-btns-confirm",S="laydate-time-text",I="laydate-btns-time",x="layui-laydate-preview",k="layui-laydate-shade",w=function(e){var t,a=this,n=(a.index=++D.index,a.config=lay.extend({},a.config,D.config,e),lay(e.elem||a.config.elem));return 1\u8bf7\u91cd\u65b0\u9009\u62e9",invalidDate:"\u4e0d\u5728\u6709\u6548\u65e5\u671f\u6216\u65f6\u95f4\u8303\u56f4\u5185",formatError:["\u65e5\u671f\u683c\u5f0f\u4e0d\u5408\u6cd5
            \u5fc5\u987b\u9075\u5faa\u4e0b\u8ff0\u683c\u5f0f\uff1a
            ","
            \u5df2\u4e3a\u4f60\u91cd\u7f6e"],preview:"\u5f53\u524d\u9009\u4e2d\u7684\u7ed3\u679c"},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"},timeout:"End time cannot be less than start Time
            Please re-select",invalidDate:"Invalid date",formatError:["The date format error
            Must be followed\uff1a
            ","
            It has been reset"],preview:"The selected result"}};return e[this.config.lang]||e.cn},w.prototype.reload=function(e){this.config=lay.extend({},this.config,e),this.init()},w.prototype.init=function(){var r=this,o=r.config,e="static"===o.position,t={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};o.elem=lay(o.elem),o.eventElem=lay(o.eventElem),o.elem[0]&&("array"!==layui.type(o.theme)&&(o.theme=[o.theme]),o.fullPanel&&("datetime"!==o.type||o.range)&&delete o.fullPanel,r.rangeStr=o.range?"string"==typeof o.range?o.range:"-":"",r.rangeLinked=!(!o.range||!o.rangeLinked||"date"!==o.type&&"datetime"!==o.type),r.autoCalendarModel=function(){var e=r.rangeLinked;return r.rangeLinked=o.range&&("date"===o.type||"datetime"===o.type)&&(!r.startDate||!r.endDate||r.startDate&&r.endDate&&r.startDate.year===r.endDate.year&&r.startDate.month===r.endDate.month),lay(r.elem)[r.rangeLinked?"addClass":"removeClass"]("layui-laydate-linkage"),r.rangeLinked!=e},r.autoCalendarModel.auto=r.rangeLinked&&"auto"===o.rangeLinked,"array"===layui.type(o.range)&&(r.rangeElem=[lay(o.range[0]),lay(o.range[1])]),t[o.type]||(i.console&&console.error&&console.error("laydate type error:'"+o.type+"' is not supported"),o.type="date"),o.format===t.date&&(o.format=t[o.type]||t.date),r.format=s.formatArr(o.format),o.weekStart&&!/^[0-6]$/.test(o.weekStart)&&(t=r.lang(),o.weekStart=t.weeks.indexOf(o.weekStart),-1===o.weekStart)&&(o.weekStart=0),r.EXP_IF="",r.EXP_SPLIT="",lay.each(r.format,function(e,t){e=new RegExp(c).test(t)?"\\d{"+(new RegExp(c).test(r.format[0===e?e+1:e-1]||"")?/^yyyy|y$/.test(t)?4:t.length:/^yyyy$/.test(t)?"1,4":/^y$/.test(t)?"1,308":"1,2")+"}":"\\"+t;r.EXP_IF=r.EXP_IF+e,r.EXP_SPLIT=r.EXP_SPLIT+"("+e+")"}),r.EXP_IF_ONE=new RegExp("^"+r.EXP_IF+"$"),r.EXP_IF=new RegExp("^"+(o.range?r.EXP_IF+"\\s\\"+r.rangeStr+"\\s"+r.EXP_IF:r.EXP_IF)+"$"),r.EXP_SPLIT=new RegExp("^"+r.EXP_SPLIT+"$",""),r.isInput(o.elem[0])||"focus"===o.trigger&&(o.trigger="click"),o.elem.attr("lay-key",r.index),o.eventElem.attr("lay-key",r.index),o.elem.attr(d,o.id),o.mark=lay.extend({},o.calendar&&"cn"===o.lang?{"0-1-1":"\u5143\u65e6","0-2-14":"\u60c5\u4eba","0-3-8":"\u5987\u5973","0-3-12":"\u690d\u6811","0-4-1":"\u611a\u4eba","0-5-1":"\u52b3\u52a8","0-5-4":"\u9752\u5e74","0-6-1":"\u513f\u7ae5","0-9-10":"\u6559\u5e08","0-10-1":"\u56fd\u5e86","0-12-25":"\u5723\u8bde"}:{},o.mark),lay.each(["min","max"],function(e,t){var a=[],n=[];if("number"==typeof o[t])var i=o[t],l=new Date,l=r.newDate({year:l.getFullYear(),month:l.getMonth(),date:l.getDate(),hours:e?23:0,minutes:e?59:0,seconds:e?59:0}).getTime(),e=new Date(i?i<864e5?l+864e5*i:i:l),a=[e.getFullYear(),e.getMonth()+1,e.getDate()],n=[e.getHours(),e.getMinutes(),e.getSeconds()];else if("string"==typeof o[t])a=(o[t].match(/\d+-\d+-\d+/)||[""])[0].split("-"),n=(o[t].match(/\d+:\d+:\d+/)||[""])[0].split(":");else if("object"==typeof o[t])return o[t];o[t]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|n[0],minutes:0|n[1],seconds:0|n[2]}}),r.elemID="layui-laydate"+o.elem.attr("lay-key"),(o.show||e)&&r.render(),e||r.events(),o.value)&&o.isInitValue&&("date"===layui.type(o.value)?r.setValue(r.parse(0,r.systemDate(o.value))):r.setValue(o.value))},w.prototype.render=function(){var a,n,i,l,r=this,o=r.config,d=r.lang(),s="static"===o.position,y=r.elem=lay.elem("div",{id:r.elemID,"class":["layui-laydate",o.range?" layui-laydate-range":"",r.rangeLinked?" layui-laydate-linkage":"",s?" "+T:"",o.fullPanel?" laydate-theme-fullpanel":"",(a="",lay.each(o.theme,function(e,t){"default"===t||/^#/.test(t)||(a+=" laydate-theme-"+t)}),a)].join("")}),m=r.elemMain=[],c=r.elemHeader=[],u=r.elemCont=[],h=r.table=[],e=r.footer=lay.elem("div",{"class":"layui-laydate-footer"}),t=r.shortcut=lay.elem("ul",{"class":"layui-laydate-shortcut"}),f=(o.zIndex&&(y.style.zIndex=o.zIndex),lay.each(new Array(2),function(e){if(!o.range&&0'+d.timeTips+""),(o.range||"datetime"!==o.type||o.fullPanel)&&f.push(''),lay.each(o.btns,function(e,t){var a=d.tools[t]||"btn";o.range&&"now"===t||(s&&"clear"===t&&(a="cn"===o.lang?"\u91cd\u7f6e":"Reset"),n.push(''+a+""))}),f.push('"),f.join(""))),o.shortcuts&&(y.appendChild(t),lay(t).html((i=[],lay.each(o.shortcuts,function(e,t){i.push('
          • '+t.text+"
          • ")}),i.join(""))).find("li").on("click",function(e){var t=o.shortcuts[this.dataset.index]||{},t=("function"==typeof t.value?t.value():t.value)||[],n=(layui.isArray(t)||(t=[t]),o.type),t=(lay.each(t,function(e,t){var a=[o.dateTime,r.endDate][e];"time"===n&&"date"!==layui.type(t)?r.EXP_IF.test(t)&&(t=(t.match(r.EXP_SPLIT)||[]).slice(1),lay.extend(a,{hours:0|t[0],minutes:0|t[2],seconds:0|t[4]})):lay.extend(a,r.systemDate("date"===layui.type(t)?t:new Date(t))),"time"!==n&&"datetime"!==n||(r[["startTime","endTime"][e]]={hours:a.hours,minutes:a.minutes,seconds:a.seconds}),0===e?r.startDate=lay.extend({},a):r.endState=!0,"year"===n||"month"===n||"time"===n?r.listYM[e]=[a.year,a.month+1]:e&&r.autoCalendarModel.auto&&r.autoCalendarModel()}),r.checkDate("limit").calendar(null,null,"init"),lay(r.footer).find("."+I).removeClass(M));t&&"date"===t.attr("lay-type")&&t[0].click(),r.done(null,"change"),lay(this).addClass(C),"static"!==o.position&&r.setValue(r.parse()).done().remove()})),lay.each(m,function(e,t){y.appendChild(t)}),o.showBottom&&y.appendChild(e),lay.elem("style")),p=[],g=!0,t=(lay.each(o.theme,function(e,t){g&&/^#/.test(t)?(g=!(l=!0),p.push(["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} li.layui-this,#{{id}} td.layui-this>div{background-color:{{theme}} !important;}",-1!==o.theme.indexOf("circle")?"":"#{{id}} .layui-this{background-color:{{theme}} !important;}","#{{id}} .laydate-day-now{color:{{theme}} !important;}","#{{id}} .laydate-day-now:after{border-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))):!g&&/^#/.test(t)&&p.push(["#{{id}} .laydate-selected>div{background-color:{{theme}} !important;}","#{{id}} .laydate-selected:hover>div{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,r.elemID).replace(/{{theme}}/g,t))}),o.shortcuts&&o.range&&p.push("#{{id}}.layui-laydate-range{width: 628px;}".replace(/{{id}}/g,r.elemID)),p.length&&(p=p.join(""),"styleSheet"in f?(f.setAttribute("type","text/css"),f.styleSheet.cssText=p):f.innerHTML=p,l&&lay(y).addClass("laydate-theme-molv"),y.appendChild(f)),r.remove(w.thisElemDate),D.thisId=o.id,s?o.elem.append(y):(v.body.appendChild(y),r.position()),o.shade?'
            ':"");y.insertAdjacentHTML("beforebegin",t),r.checkDate().calendar(null,0,"init"),r.changeEvent(),w.thisElemDate=r.elemID,r.renderAdditional(),"function"==typeof o.ready&&o.ready(lay.extend({},o.dateTime,{month:o.dateTime.month+1})),r.preview()},w.prototype.remove=function(e){var t=this,a=t.config,n=lay("#"+(e||t.elemID));return n[0]&&(n.hasClass(T)||t.checkDate(function(){n.remove(),delete t.startDate,delete t.endDate,delete t.endState,delete t.startTime,delete t.endTime,delete D.thisId,"function"==typeof a.close&&a.close(t)}),lay("."+k).remove()),t},w.prototype.position=function(){var e=this.config;return lay.position(e.elem[0],this.elem,{position:e.position}),this},w.prototype.hint=function(e){var t=this,a=(t.config,lay.elem("div",{"class":r}));t.elem&&(a.innerHTML=(e="object"==typeof e?e||{}:{content:e}).content||"",lay(t.elem).find("."+r).remove(),t.elem.appendChild(a),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){lay(t.elem).find("."+r).remove()},"ms"in e?e.ms:3e3))},w.prototype.getAsYM=function(e,t,a){return a?t--:t++,t<0&&(t=11,e--),11h[1]&&(e.year=h[1],o=!0),11t)&&(e.date=t,o=!0)},u=function(n,i,l){var r=["startTime","endTime"];i=(i.match(d.EXP_SPLIT)||[]).slice(1),l=l||0,s.range&&(d[r[l]]=d[r[l]]||{}),lay.each(d.format,function(e,t){var a=parseFloat(i[e]);i[e].lengthd.getDateTime(s.max)?(r=s.dateTime=lay.extend({},s.max),i=!0):d.getDateTime(r)d.getDateTime(s.max))&&(d.endDate=lay.extend({},s.max),i=!0),d.startTime={hours:s.dateTime.hours,minutes:s.dateTime.minutes,seconds:s.dateTime.seconds},d.endTime={hours:d.endDate.hours,minutes:d.endDate.minutes,seconds:d.endDate.seconds},"month"===s.type)&&(s.dateTime.date=1,d.endDate.date=1),i&&m&&(d.setValue(d.parse()),d.hint("value "+l.invalidDate+l.formatError[1])),d.startDate=d.startDate||m&&lay.extend({},s.dateTime),d.autoCalendarModel.auto&&d.autoCalendarModel(),d.endState=!s.range||!d.rangeLinked||!(!d.startDate||!d.endDate),e&&e()),d},w.prototype.mark=function(e,a){var n,t=this.config;return lay.each(t.mark,function(e,t){e=e.split("-");e[0]!=a[0]&&0!=e[0]||e[1]!=a[1]&&0!=e[1]||e[2]!=a[2]||(n=t||a[2])}),n&&e.find("div").html(''+n+""),this},w.prototype.holidays=function(n,i){var e=this.config,l=["","work"];return"array"===layui.type(e.holidays)&&lay.each(e.holidays,function(a,e){lay.each(e,function(e,t){t===n.attr("lay-ymd")&&n.find("div").html('"+i[2]+"")})}),this},w.prototype.limit=function(t){t=t||{};var i=this,e=i.config,l={},a=t.index>(t.time?0:41)?i.endDate:e.dateTime;return lay.each({now:lay.extend({},a,t.date||{}),min:e.min,max:e.max},function(e,a){var n;l[e]=i.newDate(lay.extend({year:a.year,month:"year"===t.type?0:a.month,date:"year"===t.type||"month"===t.type?1:a.date},(n={},lay.each(t.time,function(e,t){n[t]=a[t]}),n))).getTime()}),a=l.nowh[1]&&(d.year=h[1],o.hint(y.invalidDate)),o.firstDate||(o.firstDate=lay.extend({},d)),s.setFullYear(d.year,d.month,1),i=(s.getDay()+(7-n.weekStart))%7,l=D.getEndDate(d.month||12,d.year),r=D.getEndDate(d.month+1,d.year),lay.each(c,function(e,t){var a,n=[d.year,d.month];(t=lay(t)).removeAttr("class"),e"+n[2]+"
            "),o.mark(t,n).holidays(t,n).limit({elem:t,date:{year:n[0],month:n[1]-1,date:n[2]},index:e})}),lay(u[0]).attr("lay-ym",d.year+"-"+(d.month+1)),lay(u[1]).attr("lay-ym",d.year+"-"+(d.month+1)),"cn"===n.lang?(lay(u[0]).attr("lay-type","year").html(d.year+" \u5e74"),lay(u[1]).attr("lay-type","month").html(d.month+1+" \u6708")):(lay(u[0]).attr("lay-type","month").html(y.month[d.month]),lay(u[1]).attr("lay-type","year").html(d.year)),m&&(n.range?!e&&"init"===a||(o.listYM=[[(o.startDate||n.dateTime).year,(o.startDate||n.dateTime).month+1],[o.endDate.year,o.endDate.month+1]],o.list(n.type,0).list(n.type,1),"time"===n.type?o.setBtnStatus("\u65f6\u95f4",lay.extend({},o.systemDate(),o.startTime),lay.extend({},o.systemDate(),o.endTime)):o.setBtnStatus(!0)):(o.listYM=[[d.year,d.month+1]],o.list(n.type,0))),n.range&&"init"===a&&(o.rangeLinked?(s=o.getAsYM(d.year,d.month,t?"sub":null),o.calendar(lay.extend({},d,{year:s[0],month:s[1]}),1-t)):o.calendar(null,1-t)),n.range||(c=["hours","minutes","seconds"],o.limit({elem:lay(o.footer).find(".laydate-btns-now"),date:o.systemDate(/^(datetime|time)$/.test(n.type)?new Date:null),index:0,time:c}),o.limit({elem:lay(o.footer).find(E),index:0,time:c})),o.setBtnStatus(),lay(o.shortcut).find("li."+C).removeClass(C),n.range&&!m&&"init"!==a&&o.stampRange(),o},w.prototype.list=function(n,i){var l,r,e,a,o,d,t,s=this,y=s.config,m=s.rangeLinked?y.dateTime:[y.dateTime,s.endDate][i],c=s.lang(),u=y.range&&"date"!==y.type&&"datetime"!==y.type,h=lay.elem("ul",{"class":L+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[n]}),f=s.elemHeader[i],p=lay(f[2]).find("span"),g=s.elemCont[i||0],v=lay(g).find("."+L)[0],D="cn"===y.lang,T=D?"\u5e74":"",x=s.listYM[i]||{},k=["hours","minutes","seconds"],w=["startTime","endTime"][i];return x[0]<1&&(x[0]=1),"year"===n?(e=l=x[0]-7,l<1&&(e=l=1),lay.each(new Array(15),function(e){var t=lay.elem("li",{"lay-ym":l}),a={year:l,month:0,date:1};l==x[0]&&lay(t).addClass(C),t.innerHTML=l+T,h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n}),l++}),lay(p[D?0:1]).attr("lay-ym",l-8+"-"+x[1]).html(e+T+" - "+(l-1)+T)):"month"===n?(lay.each(new Array(12),function(e){var t=lay.elem("li",{"lay-ym":e}),a={year:x[0],month:e,date:1};e+1==x[1]&&lay(t).addClass(C),t.innerHTML=c.month[e]+(D?"\u6708":""),h.appendChild(t),s.limit({elem:lay(t),date:a,index:i,type:n})}),lay(p[D?0:1]).attr("lay-ym",x[0]+"-"+x[1]).html(x[0]+T)):"time"===n&&(r=function(){lay(h).find("ol").each(function(a,e){lay(e).find("li").each(function(e,t){s.limit({elem:lay(t),date:[{hours:e},{hours:s[w].hours,minutes:e},{hours:s[w].hours,minutes:s[w].minutes,seconds:e}][a],index:i,time:[["hours"],["hours","minutes"],["hours","minutes","seconds"]][a]})})}),y.range||s.limit({elem:lay(s.footer).find(E),date:s[w],index:0,time:["hours","minutes","seconds"]})},y.range?s[w]||(s[w]="startTime"===w?m:s.endDate):s[w]=m,lay.each([24,60,60],function(t,e){var a=lay.elem("li"),n=["

            "+c.time[t]+"

              "];lay.each(new Array(e),function(e){n.push(""+lay.digit(e,2)+"")}),a.innerHTML=n.join("")+"
            ",h.appendChild(a)}),r(),e=-1!==y.format.indexOf("H"),p=-1!==y.format.indexOf("m"),t=-1!==y.format.indexOf("s"),a=h.children,o=0,lay.each([e,p,t],function(e,t){t||(a[e].className+=" layui-hide",o++)}),h.className+=" laydate-time-list-hide-"+o),v&&g.removeChild(v),g.appendChild(h),"year"===n||"month"===n?(lay(s.elemMain[i]).addClass("laydate-ym-show"),lay(h).find("li").on("click",function(){var e=0|lay(this).attr("lay-ym");lay(this).hasClass(M)||(s.rangeLinked?lay.extend(m,{year:"year"===n?e:x[0],month:"year"===n?x[1]-1:e}):m[n]=e,"year"===y.type||"month"===y.type?(lay(h).find("."+C).removeClass(C),lay(this).addClass(C),"month"===y.type&&"year"===n&&(s.listYM[i][0]=e,u&&((i?s.endDate:m).year=e),s.list("month",i))):(s.checkDate("limit").calendar(m,i,"init"),s.closeList()),s.setBtnStatus(),!y.range&&y.autoConfirm&&("month"===y.type&&"month"===n||"year"===y.type&&"year"===n)&&s.setValue(s.parse()).done().remove(),s.autoCalendarModel.auto&&!s.rangeLinked?s.choose(lay(g).find("td.layui-this"),i):s.endState&&s.done(null,"change"),lay(s.footer).find("."+I).removeClass(M))})):(p=lay.elem("span",{"class":S}),d=function(){lay(h).find("ol").each(function(e){var a=this,t=lay(a).find("li");a.scrollTop=30*(s[w][k[e]]-2),a.scrollTop<=0&&t.each(function(e,t){if(!lay(this).hasClass(M))return a.scrollTop=30*(e-2),!0})})},t=lay(f[2]).find("."+S),d(),p.innerHTML=y.range?[c.startTime,c.endTime][i]:c.timeTips,lay(s.elemMain[i]).addClass("laydate-time-show"),t[0]&&t.remove(),f[2].appendChild(p),(v=lay(h).find("ol")).each(function(t){var a=this;lay(a).find("li").on("click",function(){var e=0|this.innerHTML;lay(this).hasClass(M)||(y.range?s[w][k[t]]=e:m[k[t]]=e,lay(a).find("."+C).removeClass(C),lay(this).addClass(C),r(),d(),(s.endDate||"time"===y.type||"datetime"===y.type&&y.fullPanel)&&s.done(null,"change"),s.setBtnStatus())})}),layui.device().mobile&&v.css({overflowY:"auto",touchAction:"pan-y"})),s},w.prototype.listYM=[],w.prototype.closeList=function(){var a=this;a.config;lay.each(a.elemCont,function(e,t){lay(this).find("."+L).remove(),lay(a.elemMain[e]).removeClass("laydate-ym-show laydate-time-show")}),lay(a.elem).find("."+S).remove()},w.prototype.setBtnStatus=function(e,t,a){var n=this,i=n.config,l=n.lang(),r=lay(n.footer).find(E);i.range&&"time"!==i.type&&(t=t||(n.rangeLinked?n.startDate:i.dateTime),a=a||n.endDate,i=!n.endState||n.newDate(t).getTime()>n.newDate(a).getTime(),n.limit({date:t})||n.limit({date:a})?r.addClass(M):r[i?"addClass":"removeClass"](M),e)&&i&&n.hint("string"==typeof e?l.timeout.replace(/\u65e5\u671f/g,e):l.timeout)},w.prototype.parse=function(e,t){var a=this,n=a.config,i=a.rangeLinked?a.startDate:n.dateTime,t=t||("end"==e?lay.extend({},a.endDate,a.endTime):n.range?lay.extend({},i||n.dateTime,a.startTime):n.dateTime),i=D.parse(t,a.format,1);return n.range&&e===undefined?i+" "+a.rangeStr+" "+a.parse("end"):i},w.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},w.prototype.getDateTime=function(e){return this.newDate(e).getTime()},w.prototype.setValue=function(e){var t=this,a=t.config,n=a.elem[0];return"static"!==a.position&&(e=e||"",t.isInput(n)?lay(n).val(e):(a=t.rangeElem)?("array"!==layui.type(e)&&(e=e.split(" "+t.rangeStr+" ")),a[0].val(e[0]||""),a[1].val(e[1]||"")):(0===lay(n).find("*").length&&lay(n).html(e),lay(n).attr("lay-date",e))),t},w.prototype.preview=function(){var e,t=this,a=t.config;a.isPreview&&(e=lay(t.elem).find("."+x),a=!a.range||(t.rangeLinked?t.endState:t.endDate)?t.parse():"",e.html(a),e.html())&&(e.css({color:"#16b777"}),setTimeout(function(){e.css({color:"#777"})},300))},w.prototype.renderAdditional=function(){this.config.fullPanel&&this.list("time",0)},w.prototype.stampRange=function(){var n,i=this,l=i.config,r=i.rangeLinked?i.startDate:l.dateTime,e=lay(i.elem).find("td");l.range&&!i.endState&&lay(i.footer).find(E).addClass(M),r=r&&i.newDate({year:r.year,month:r.month,date:r.date}).getTime(),n=i.endState&&i.endDate&&i.newDate({year:i.endDate.year,month:i.endDate.month,date:i.endDate.date}).getTime(),lay.each(e,function(e,t){var a=lay(t).attr("lay-ymd").split("-"),a=i.newDate({year:a[0],month:a[1]-1,date:a[2]}).getTime();l.rangeLinked&&!i.startDate&&a===i.newDate(i.systemDate()).getTime()&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?"":"laydate-day-now"),lay(t).removeClass(o+" "+C),a!==r&&a!==n||(i.rangeLinked||!i.rangeLinked&&(e<42?a===r:a===n))&&lay(t).addClass(lay(t).hasClass(y)||lay(t).hasClass(m)?o:C),rn.getDateTime(i.max)&&(n[t]={hours:i.max.hours,minutes:i.max.minutes,seconds:i.max.seconds},lay.extend(l,n[t])))}),a||(n.startDate=lay.extend({},l)),n.endState&&!n.limit({date:n.thisDateTime(1-a)})&&(((r=n.endState&&n.autoCalendarModel.auto?n.autoCalendarModel():r)||n.rangeLinked&&n.endState)&&n.newDate(n.startDate)>n.newDate(n.endDate)&&(n.startDate.year===n.endDate.year&&n.startDate.month===n.endDate.month&&n.startDate.date===n.endDate.date&&(o=n.startTime,n.startTime=n.endTime,n.endTime=o),o=n.startDate,n.startDate=lay.extend({},n.endDate,n.startTime),i.dateTime=lay.extend({},n.startDate),n.endDate=lay.extend({},o,n.endTime)),r)&&(i.dateTime=lay.extend({},n.startDate)),n.rangeLinked?(e=lay.extend({},l),!t||a||r||(o=n.getAsYM(l.year,l.month,"sub"),lay.extend(i.dateTime,{year:o[0],month:o[1]})),n.calendar(e,t,r?"init":null)):n.calendar(null,a,r?"init":null),n.endState&&n.done(null,"change")):"static"===i.position?n.calendar().done().done(null,"change"):"date"===i.type?i.autoConfirm?n.setValue(n.parse()).done().remove():n.calendar().done(null,"change"):"datetime"===i.type&&n.calendar().done(null,"change"))},w.prototype.tool=function(t,e){var a=this,n=a.config,i=a.lang(),l=n.dateTime,r="static"===n.position,o={datetime:function(){lay(t).hasClass(M)||(a.list("time",0),n.range&&a.list("time",1),lay(t).attr("lay-type","date").html(a.lang().dateTips))},date:function(){a.closeList(),lay(t).attr("lay-type","datetime").html(a.lang().timeTips)},clear:function(){r&&(lay.extend(l,a.firstDate),a.calendar()),n.range&&(delete n.dateTime,delete a.endDate,delete a.startTime,delete a.endTime),a.setValue(""),a.done(null,"onClear").done(["",{},{}]).remove()},now:function(){var e=new Date;if(lay(t).hasClass(M))return a.hint(i.tools.now+", "+i.invalidDate);lay.extend(l,a.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),a.setValue(a.parse()),r&&a.calendar(),a.done(null,"onNow").done().remove()},confirm:function(){if(n.range){if(lay(t).hasClass(M))return a.hint("time"===n.type?i.timeout.replace(/\u65e5\u671f/g,"\u65f6\u95f4"):i.timeout)}else if(lay(t).hasClass(M))return a.hint(i.invalidDate);a.setValue(a.parse()),a.done(null,"onConfirm").done().remove()}};o[e]&&o[e]()},w.prototype.change=function(n){var i=this,l=i.config,r=i.thisDateTime(n),o=l.range&&("year"===l.type||"month"===l.type),d=i.elemCont[n||0],s=i.listYM[n],e=function(e){var t=lay(d).find(".laydate-year-list")[0],a=lay(d).find(".laydate-month-list")[0];return t&&(s[0]=e?s[0]-15:s[0]+15,i.list("year",n)),a&&(e?s[0]--:s[0]++,i.list("month",n)),(t||a)&&(lay.extend(r,{year:s[0]}),o&&(r.year=s[0]),l.range||i.done(null,"change"),l.range||i.limit({elem:lay(i.footer).find(E),date:{year:s[0]}})),i.setBtnStatus(),t||a};return{prevYear:function(){e("sub")||(i.rangeLinked?(l.dateTime.year--,i.checkDate("limit").calendar(null,null,"init")):(r.year--,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))},prevMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month,"sub");lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextMonth:function(){i.rangeLinked&&(r=l.dateTime);var e=i.getAsYM(r.year,r.month);lay.extend(r,{year:e[0],month:e[1]}),i.checkDate("limit").calendar(null,null,"init"),i.rangeLinked||(i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change"))},nextYear:function(){e()||(i.rangeLinked?(l.dateTime.year++,i.checkDate("limit").calendar(null,0,"init")):(r.year++,i.checkDate("limit").calendar(null,n),i.autoCalendarModel.auto?i.choose(lay(d).find("td.layui-this"),n):i.done(null,"change")))}}},w.prototype.changeEvent=function(){var i=this;i.config;lay(i.elem).on("click",function(e){lay.stope(e)}).on("mousedown",function(e){lay.stope(e)}),lay.each(i.elemHeader,function(n,e){lay(e[0]).on("click",function(e){i.change(n).prevYear()}),lay(e[1]).on("click",function(e){i.change(n).prevMonth()}),lay(e[2]).find("span").on("click",function(e){var t=lay(this),a=t.attr("lay-ym"),t=t.attr("lay-type");a&&(a=a.split("-"),i.listYM[n]=[0|a[0],0|a[1]],i.list(t,n),lay(i.footer).find("."+I).addClass(M))}),lay(e[3]).on("click",function(e){i.change(n).nextMonth()}),lay(e[4]).on("click",function(e){i.change(n).nextYear()})}),lay.each(i.table,function(e,t){lay(t).find("td").on("click",function(){i.choose(lay(this),e)})}),lay(i.footer).find("span").on("click",function(){var e=lay(this).attr("lay-type");i.tool(this,e)})},w.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())||/INPUT|TEXTAREA/.test(e.tagName)},w.prototype.events=function(){var e,t=this,a=t.config;a.elem[0]&&!a.elem[0].eventHandler&&(a.elem.on(a.trigger,e=function(){D.thisId!==a.id&&t.render()}),a.elem[0].eventHandler=!0,a.eventElem.on(a.trigger,e),t.unbind=function(){t.remove(),a.elem.off(a.trigger,e),a.elem.removeAttr("lay-key"),a.elem.removeAttr(d),a.elem[0].eventHandler=!1,a.eventElem.off(a.trigger,e),a.eventElem.removeAttr("lay-key"),delete s.that[a.id]})},s.that={},s.getThis=function(e){var t=s.that[e];return!t&&n&&layui.hint().error(e?a+" instance with ID '"+e+"' not found":"ID argument required"),t},l.run=function(n){n(v).on("mousedown",function(e){var t,a;D.thisId&&(t=s.getThis(D.thisId))&&(a=t.config,e.target===a.elem[0]||e.target===a.eventElem[0]||e.target===n(a.closeStop)[0]||a.elem[0]&&a.elem[0].contains(e.target)||t.remove())}).on("keydown",function(e){var t;D.thisId&&(t=s.getThis(D.thisId))&&"static"!==t.config.position&&13===e.keyCode&&n("#"+t.elemID)[0]&&t.elemID===w.thisElemDate&&(e.preventDefault(),n(t.footer).find(E)[0].click())}),n(i).on("resize",function(){if(D.thisId){var e=s.getThis(D.thisId);if(e)return!(!e.elem||!n(".layui-laydate")[0])&&void e.position()}})},D.render=function(e){e=new w(e);return s.call(e)},D.reload=function(e,t){e=s.getThis(e);if(e)return e.reload(t)},D.getInst=function(e){e=s.getThis(e);if(e)return e.inst},D.hint=function(e,t){e=s.getThis(e);if(e)return e.hint(t)},D.unbind=function(e){e=s.getThis(e);if(e)return e.unbind()},D.close=function(e){e=s.getThis(e||D.thisId);if(e)return e.remove()},D.parse=function(a,n,i){return a=a||{},n=((n="string"==typeof n?s.formatArr(n):n)||[]).concat(),lay.each(n,function(e,t){/yyyy|y/.test(t)?n[e]=lay.digit(a.year,t.length):/MM|M/.test(t)?n[e]=lay.digit(a.month+(i||0),t.length):/dd|d/.test(t)?n[e]=lay.digit(a.date,t.length):/HH|H/.test(t)?n[e]=lay.digit(a.hours,t.length):/mm|m/.test(t)?n[e]=lay.digit(a.minutes,t.length):/ss|s/.test(t)&&(n[e]=lay.digit(a.seconds,t.length))}),n.join("")},D.getEndDate=function(e,t){var a=new Date;return a.setFullYear(t||a.getFullYear(),e||a.getMonth()+1,1),new Date(a.getTime()-864e5).getDate()},n?(D.ready(),layui.define("lay",function(e){D.path=layui.cache.dir,l.run(lay),e(a,D)})):"function"==typeof define&&define.amd?define(function(){return l.run(lay),D}):(D.ready(),l.run(i.lay),i.laydate=D)}(window,window.document);!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)}("undefined"!=typeof window?window:this,function(T,M){var f=[],g=T.document,c=f.slice,O=f.concat,R=f.push,P=f.indexOf,B={},W=B.toString,m=B.hasOwnProperty,y={},e="1.12.4",C=function(e,t){return new C.fn.init(e,t)},I=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,$=/^-ms-/,z=/-([\da-z])/gi,X=function(e,t){return t.toUpperCase()};function U(e){var t=!!e&&"length"in e&&e.length,n=C.type(e);return"function"!==n&&!C.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+a+")"+a+"*"),ee=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),te=new RegExp(G),ne=new RegExp("^"+s+"$"),f={ID:new RegExp("^#("+s+")"),CLASS:new RegExp("^\\.("+s+")"),TAG:new RegExp("^("+s+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+G),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},re=/^(?:input|select|textarea|button)$/i,ie=/^h\d$/i,c=/^[^{]+\{\s*\[native \w/,oe=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ae=/[+~]/,se=/'|\\/g,d=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig"),p=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)},ue=function(){C()};try{D.apply(n=V.call(v.childNodes),v.childNodes),n[v.childNodes.length].nodeType}catch(F){D={apply:n.length?function(e,t){U.apply(e,V.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}function H(e,t,n,r){var i,o,a,s,u,l,c,f,d=t&&t.ownerDocument,p=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==p&&9!==p&&11!==p)return n;if(!r&&((t?t.ownerDocument||t:v)!==E&&C(t),t=t||E,N)){if(11!==p&&(l=oe.exec(e)))if(i=l[1]){if(9===p){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(d&&(a=d.getElementById(i))&&y(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return D.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&g.getElementsByClassName&&t.getElementsByClassName)return D.apply(n,t.getElementsByClassName(i)),n}if(g.qsa&&!A[e+" "]&&(!m||!m.test(e))){if(1!==p)d=t,f=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(se,"\\$&"):t.setAttribute("id",s=k),o=(c=w(e)).length,u=ne.test(s)?"#"+s:"[id='"+s+"']";o--;)c[o]=u+" "+_(c[o]);f=c.join(","),d=ae.test(e)&&de(t.parentNode)||t}if(f)try{return D.apply(n,d.querySelectorAll(f)),n}catch(h){}finally{s===k&&t.removeAttribute("id")}}}return P(e.replace(L,"$1"),t,n,r)}function le(){var n=[];function r(e,t){return n.push(e+" ")>b.cacheLength&&delete r[n.shift()],r[e+" "]=t}return r}function q(e){return e[k]=!0,e}function h(e){var t=E.createElement("div");try{return!!e(t)}catch(F){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function ce(e,t){for(var n=e.split("|"),r=n.length;r--;)b.attrHandle[n[r]]=t}function fe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function x(a){return q(function(o){return o=+o,q(function(e,t){for(var n,r=a([],e.length,o),i=r.length;i--;)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function de(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in g=H.support={},O=H.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},C=H.setDocument=function(e){var e=e?e.ownerDocument||e:v;return e!==E&&9===e.nodeType&&e.documentElement&&(t=(E=e).documentElement,N=!O(E),(e=E.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",ue,!1):e.attachEvent&&e.attachEvent("onunload",ue)),g.attributes=h(function(e){return e.className="i",!e.getAttribute("className")}),g.getElementsByTagName=h(function(e){return e.appendChild(E.createComment("")),!e.getElementsByTagName("*").length}),g.getElementsByClassName=c.test(E.getElementsByClassName),g.getById=h(function(e){return t.appendChild(e).id=k,!E.getElementsByName||!E.getElementsByName(k).length}),g.getById?(b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&N)return(e=t.getElementById(e))?[e]:[]},b.filter.ID=function(e){var t=e.replace(d,p);return function(e){return e.getAttribute("id")===t}}):(delete b.find.ID,b.filter.ID=function(e){var t=e.replace(d,p);return function(e){e="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),b.find.TAG=g.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):g.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"!==e)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},b.find.CLASS=g.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&N)return t.getElementsByClassName(e)},r=[],m=[],(g.qsa=c.test(E.querySelectorAll))&&(h(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||m.push("\\["+a+"*(?:value|"+Y+")"),e.querySelectorAll("[id~="+k+"-]").length||m.push("~="),e.querySelectorAll(":checked").length||m.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||m.push(".#.+[+~]")}),h(function(e){var t=E.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&m.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),m.push(",.*:")})),(g.matchesSelector=c.test(i=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&h(function(e){g.disconnectedMatch=i.call(e,"div"),i.call(e,"[s!='']:x"),r.push("!=",G)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),e=c.test(t.compareDocumentPosition),y=e||c.test(t.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(n.contains?n.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},$=e?function(e,t){var n;return e===t?(l=!0,0):(n=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!g.sortDetached&&t.compareDocumentPosition(e)===n?e===E||e.ownerDocument===v&&y(v,e)?-1:t===E||t.ownerDocument===v&&y(v,t)?1:u?j(u,e)-j(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===E?-1:t===E?1:i?-1:o?1:u?j(u,e)-j(u,t):0;if(i===o)return fe(e,t);for(n=e;n=n.parentNode;)a.unshift(n);for(n=t;n=n.parentNode;)s.unshift(n);for(;a[r]===s[r];)r++;return r?fe(a[r],s[r]):a[r]===v?-1:s[r]===v?1:0}),E},H.matches=function(e,t){return H(e,null,null,t)},H.matchesSelector=function(e,t){if((e.ownerDocument||e)!==E&&C(e),t=t.replace(ee,"='$1']"),g.matchesSelector&&N&&!A[t+" "]&&(!r||!r.test(t))&&(!m||!m.test(t)))try{var n=i.call(e,t);if(n||g.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(F){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(d,p),e[3]=(e[3]||e[4]||e[5]||"").replace(d,p),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||H.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&H.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return f.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&te.test(n)&&(t=(t=w(n,!0))&&n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(d,p).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=W[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&W(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(e){e=H.attr(e,t);return null==e?"!="===n:!n||(e+="","="===n?e===r:"!="===n?e!==r:"^="===n?r&&0===e.indexOf(r):"*="===n?r&&-1(?:<\/\1>|)$/,G=/^.[^:#\[\.,]*$/;function K(e,n,r){if(C.isFunction(n))return C.grep(e,function(e,t){return!!n.call(e,t,e)!==r});if(n.nodeType)return C.grep(e,function(e){return e===n!==r});if("string"==typeof n){if(G.test(n))return C.filter(n,e,r);n=C.filter(n,e)}return C.grep(e,function(e){return-1)[^>]*|#([\w-]*))$/,ee=((C.fn.init=function(e,t,n){if(e){if(n=n||Q,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):C.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(C):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),C.makeArray(e,this));if(!(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!r[1]&&t)return(!t||t.jquery?t||n:this.constructor(t)).find(e);if(r[1]){if(t=t instanceof C?t[0]:t,C.merge(this,C.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:g,!0)),J.test(r[1])&&C.isPlainObject(t))for(var r in t)C.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r])}else{if((n=g.getElementById(r[2]))&&n.parentNode){if(n.id!==r[2])return Q.find(e);this.length=1,this[0]=n}this.context=g,this.selector=e}}return this}).prototype=C.fn,Q=C(g),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ne(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}C.fn.extend({has:function(e){var t,n=C(e,this),r=n.length;return this.filter(function(){for(t=0;t
            a",y.leadingWhitespace=3===S.firstChild.nodeType,y.tbody=!S.getElementsByTagName("tbody").length,y.htmlSerialize=!!S.getElementsByTagName("link").length,y.html5Clone="<:nav>"!==g.createElement("nav").cloneNode(!0).outerHTML,q.type="checkbox",q.checked=!0,k.appendChild(q),y.appendChecked=q.checked,S.innerHTML="",y.noCloneChecked=!!S.cloneNode(!0).lastChild.defaultValue,k.appendChild(S),(q=g.createElement("input")).setAttribute("type","radio"),q.setAttribute("checked","checked"),q.setAttribute("name","t"),S.appendChild(q),y.checkClone=S.cloneNode(!0).cloneNode(!0).lastChild.checked,y.noCloneEvent=!!S.addEventListener,S[C.expando]=1,y.attributes=!S.getAttribute(C.expando);var x={option:[1,""],legend:[1,"
            ","
            "],area:[1,"",""],param:[1,"",""],thead:[1,"","
            "],tr:[2,"","
            "],col:[2,"","
            "],td:[3,"","
            "],_default:y.htmlSerialize?[0,"",""]:[1,"X
            ","
            "]};function b(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):undefined;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||C.nodeName(r,t)?o.push(r):C.merge(o,b(r,t));return t===undefined||t&&C.nodeName(e,t)?C.merge([e],o):o}function we(e,t){for(var n,r=0;null!=(n=e[r]);r++)C._data(n,"globalEval",!t||C._data(t[r],"globalEval"))}x.optgroup=x.option,x.tbody=x.tfoot=x.colgroup=x.caption=x.thead,x.th=x.td;var Te=/<|&#?\w+;/,Ce=/"!==f[1]||Ce.test(a)?0:u:u.firstChild)&&a.childNodes.length;o--;)C.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(C.merge(h,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=p.lastChild}else h.push(t.createTextNode(a));for(u&&p.removeChild(u),y.appendChecked||C.grep(b(h,"input"),Ee),g=0;a=h[g++];)if(r&&-1]","i"),Pe=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Be=/\s*$/g,ze=be(g).appendChild(g.createElement("div"));function Xe(e,t){return C.nodeName(e,"table")&&C.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ue(e){return e.type=(null!==C.find.attr(e,"type"))+"/"+e.type,e}function Ve(e){var t=Ie.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Ye(e,t){if(1===t.nodeType&&C.hasData(e)){var n,r,i,e=C._data(e),o=C._data(t,e),a=e.events;if(a)for(n in delete o.handle,o.events={},a)for(r=0,i=a[n].length;r")},clone:function(e,t,n){var r,i,o,a,s,u=C.contains(e.ownerDocument,e);if(y.html5Clone||C.isXMLDoc(e)||!Re.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(ze.innerHTML=e.outerHTML,ze.removeChild(o=ze.firstChild)),!(y.noCloneEvent&&y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||C.isXMLDoc(e)))for(r=b(o),s=b(e),a=0;null!=(i=s[a]);++a)if(r[a]){f=c=l=p=d=void 0;var l,c,f,d=i,p=r[a];if(1===p.nodeType){if(l=p.nodeName.toLowerCase(),!y.noCloneEvent&&p[C.expando]){for(c in(f=C._data(p)).events)C.removeEvent(p,c,f.handle);p.removeAttribute(C.expando)}"script"===l&&p.text!==d.text?(Ue(p).text=d.text,Ve(p)):"object"===l?(p.parentNode&&(p.outerHTML=d.outerHTML),y.html5Clone&&d.innerHTML&&!C.trim(p.innerHTML)&&(p.innerHTML=d.innerHTML)):"input"===l&&ge.test(d.type)?(p.defaultChecked=p.checked=d.checked,p.value!==d.value&&(p.value=d.value)):"option"===l?p.defaultSelected=p.selected=d.defaultSelected:"input"!==l&&"textarea"!==l||(p.defaultValue=d.defaultValue)}}if(t)if(n)for(s=s||b(e),r=r||b(o),a=0;null!=(i=s[a]);a++)Ye(i,r[a]);else Ye(e,o);return 0<(r=b(o,"script")).length&&we(r,!u&&b(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=C.expando,u=C.cache,l=y.attributes,c=C.event.special;null!=(n=e[a]);a++)if((t||v(n))&&(o=(i=n[s])&&u[i])){if(o.events)for(r in o.events)c[r]?C.event.remove(n,r):C.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=undefined:n.removeAttribute(s),f.push(i))}}}),C.fn.extend({domManip:w,detach:function(e){return Je(this,e,!0)},remove:function(e){return Je(this,e)},text:function(e){return d(this,function(e){return e===undefined?C.text(this):this.empty().append((this[0]&&this[0].ownerDocument||g).createTextNode(e))},null,e,arguments.length)},append:function(){return w(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Xe(this,e).appendChild(e)})},prepend:function(){return w(this,arguments,function(e){var t;1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(t=Xe(this,e)).insertBefore(e,t.firstChild)})},before:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return w(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&C.cleanData(b(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&C.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return C.clone(this,e,t)})},html:function(e){return d(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined)return 1===t.nodeType?t.innerHTML.replace(Oe,""):undefined;if("string"==typeof e&&!Be.test(e)&&(y.htmlSerialize||!Re.test(e))&&(y.leadingWhitespace||!ve.test(e))&&!x[(me.exec(e)||["",""])[1].toLowerCase()]){e=C.htmlPrefilter(e);try{for(;n")).appendTo(t.documentElement))[0].contentWindow||Ge[0].contentDocument).document).write(),t.close(),n=Qe(e,t),Ge.detach()),Ke[e]=n),n}var n,et,tt,nt,rt,it,ot,a,at=/^margin/,st=new RegExp("^("+e+")(?!px)[a-z%]+$","i"),ut=function(e,t,n,r){var i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.apply(e,r||[]),t)e.style[i]=o[i];return r},lt=g.documentElement;function t(){var e,t=g.documentElement;t.appendChild(ot),a.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=tt=it=!1,et=rt=!0,T.getComputedStyle&&(e=T.getComputedStyle(a),n="1%"!==(e||{}).top,it="2px"===(e||{}).marginLeft,tt="4px"===(e||{width:"4px"}).width,a.style.marginRight="50%",et="4px"===(e||{marginRight:"4px"}).marginRight,(e=a.appendChild(g.createElement("div"))).style.cssText=a.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",a.style.width="1px",rt=!parseFloat((T.getComputedStyle(e)||{}).marginRight),a.removeChild(e)),a.style.display="none",(nt=0===a.getClientRects().length)&&(a.style.display="",a.innerHTML="
            t
            ",a.childNodes[0].style.borderCollapse="separate",(e=a.getElementsByTagName("td"))[0].style.cssText="margin:0;border:0;padding:0;display:none",nt=0===e[0].offsetHeight)&&(e[0].style.display="",e[1].style.display="none",nt=0===e[0].offsetHeight),t.removeChild(ot)}ot=g.createElement("div"),(a=g.createElement("div")).style&&(a.style.cssText="float:left;opacity:.5",y.opacity="0.5"===a.style.opacity,y.cssFloat=!!a.style.cssFloat,a.style.backgroundClip="content-box",a.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===a.style.backgroundClip,(ot=g.createElement("div")).style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",a.innerHTML="",ot.appendChild(a),y.boxSizing=""===a.style.boxSizing||""===a.style.MozBoxSizing||""===a.style.WebkitBoxSizing,C.extend(y,{reliableHiddenOffsets:function(){return null==n&&t(),nt},boxSizingReliable:function(){return null==n&&t(),tt},pixelMarginRight:function(){return null==n&&t(),et},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),rt},reliableMarginLeft:function(){return null==n&&t(),it}}));var l,p,ct=/^(top|right|bottom|left)$/;function ft(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}T.getComputedStyle?(l=function(e){var t=e.ownerDocument.defaultView;return(t=t&&t.opener?t:T).getComputedStyle(e)},p=function(e,t,n){var r,i,o=e.style;return""!==(i=(n=n||l(e))?n.getPropertyValue(t)||n[t]:undefined)&&i!==undefined||C.contains(e.ownerDocument,e)||(i=C.style(e,t)),n&&!y.pixelMarginRight()&&st.test(i)&&at.test(t)&&(e=o.width,t=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=e,o.minWidth=t,o.maxWidth=r),i===undefined?i:i+""}):lt.currentStyle&&(l=function(e){return e.currentStyle},p=function(e,t,n){var r,i,o,a=e.style;return null==(n=(n=n||l(e))?n[t]:undefined)&&a&&a[t]&&(n=a[t]),st.test(n)&&!ct.test(t)&&(r=a.left,(o=(i=e.runtimeStyle)&&i.left)&&(i.left=e.currentStyle.left),a.left="fontSize"===t?"1em":n,n=a.pixelLeft+"px",a.left=r,o)&&(i.left=o),n===undefined?n:n+""||"auto"});var dt=/alpha\([^)]*\)/i,pt=/opacity\s*=\s*([^)]*)/i,ht=/^(none|table(?!-c[ea]).+)/,gt=new RegExp("^("+e+")(.*)$","i"),mt={position:"absolute",visibility:"hidden",display:"block"},yt={letterSpacing:"0",fontWeight:"400"},vt=["Webkit","O","Moz","ms"],xt=g.createElement("div").style;function bt(e){if(e in xt)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=vt.length;n--;)if((e=vt[n]+t)in xt)return e}function wt(e,t){for(var n,r,i,o=[],a=0,s=e.length;a
            a",F=q.getElementsByTagName("a")[0],k.setAttribute("type","checkbox"),q.appendChild(k),(F=q.getElementsByTagName("a")[0]).style.cssText="top:1px",y.getSetAttribute="t"!==q.className,y.style=/top/.test(F.getAttribute("style")),y.hrefNormalized="/a"===F.getAttribute("href"),y.checkOn=!!k.value,y.optSelected=e.selected,y.enctype=!!g.createElement("form").enctype,S.disabled=!0,y.optDisabled=!e.disabled,(k=g.createElement("input")).setAttribute("value",""),y.input=""===k.getAttribute("value"),k.value="t",k.setAttribute("type","radio"),y.radioValue="t"===k.value;var Lt=/\r/g,Ht=/[\x20\t\r\n\f]+/g;C.fn.extend({val:function(t){var n,e,r,i=this[0];return arguments.length?(r=C.isFunction(t),this.each(function(e){1!==this.nodeType||(null==(e=r?t.call(this,e,C(this).val()):t)?e="":"number"==typeof e?e+="":C.isArray(e)&&(e=C.map(e,function(e){return null==e?"":e+""})),(n=C.valHooks[this.type]||C.valHooks[this.nodeName.toLowerCase()])&&"set"in n&&n.set(this,e,"value")!==undefined)||(this.value=e)})):i?(n=C.valHooks[i.type]||C.valHooks[i.nodeName.toLowerCase()])&&"get"in n&&(e=n.get(i,"value"))!==undefined?e:"string"==typeof(e=i.value)?e.replace(Lt,""):null==e?"":e:void 0}}),C.extend({valHooks:{option:{get:function(e){var t=C.find.attr(e,"value");return null!=t?t:C.trim(C.text(e)).replace(Ht," ")}},select:{get:function(e){for(var t,n=e.options,r=e.selectedIndex,i="select-one"===e.type||r<0,o=i?null:[],a=i?r+1:n.length,s=r<0?a:i?r:0;s").append(C.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){C.fn[t]=function(e){return this.on(t,e)}}),C.expr.filters.animated=function(t){return C.grep(C.timers,function(e){return t===e.elem}).length},C.offset={setOffset:function(e,t,n){var r,i,o,a,s=C.css(e,"position"),u=C(e),l={};"static"===s&&(e.style.position="relative"),o=u.offset(),r=C.css(e,"top"),a=C.css(e,"left"),s=("absolute"===s||"fixed"===s)&&-1'+(s?a.title[0]:a.title)+"
            ":"";return a.zIndex=o,t([a.shade?'
            ':"",'
            '+(e&&2!=a.type?"":s)+"'+(n=["layui-icon-tips","layui-icon-success","layui-icon-error","layui-icon-question","layui-icon-lock","layui-icon-face-cry","layui-icon-face-smile"],o="layui-anim layui-anim-rotate layui-anim-loop",0==a.type&&-1!==a.icon?'':3==a.type?(i=["layui-icon-loading","layui-icon-loading-1"],2==a.icon?'
            ':''):"")+((1!=a.type||!e)&&a.content||"")+'
            '+(n=[],r&&(n.push(''),n.push('')),a.closeBtn&&n.push(''),n.join(""))+"
            "+(a.btn?function(){var e="";"string"==typeof a.btn&&(a.btn=[a.btn]);for(var t,i=0,n=a.btn.length;i'+a.btn[i]+"";return'
            '+e+"
            "}():"")+(a.resize?'':"")+"
            "],s,m('
            ')),this},t.pt.creat=function(){var e,t,i,n,a=this,o=a.config,s=a.index,r="object"==typeof(f=o.content),l=m("body"),c=function(e){var t;o.shift&&(o.anim=o.shift),u.anim[o.anim]&&(t="layer-anim "+u.anim[o.anim],e.addClass(t).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){m(this).removeClass(t)}))};if(o.id&&m("."+u[0]).find("#"+o.id)[0])e=m("#"+o.id).closest("."+u[0]),t=e.attr("times"),i=e.data("config"),n=m("#"+u.SHADE+t),"min"===(e.data("maxminStatus")||{})?v.restore(t):i.hideOnClose&&(n.show(),e.show(),c(e),setTimeout(function(){n.css({opacity:n.data(y)})},10));else{switch(o.removeFocus&&document.activeElement.blur(),"string"==typeof o.area&&(o.area="auto"===o.area?["",""]:[o.area,""]),6==v.ie&&(o.fixed=!1),o.type){case 0:o.btn="btn"in o?o.btn:d.btn[0],v.closeAll("dialog");break;case 2:var f=o.content=r?o.content:[o.content||"","auto"];o.content='';break;case 3:delete o.title,delete o.closeBtn,-1===o.icon&&o.icon,v.closeAll("loading");break;case 4:r||(o.content=[o.content,"body"]),o.follow=o.content[1],o.content=o.content[0]+'',delete o.title,o.tips="object"==typeof o.tips?o.tips:[o.tips,!0],o.tipsMore||v.closeAll("tips")}a.vessel(r,function(e,t,i){l.append(e[0]),r?2==o.type||4==o.type?m("body").append(e[1]):f.parents("."+u[0])[0]||(f.data("display",f.css("display")).show().addClass("layui-layer-wrap").wrap(e[1]),m("#"+u[0]+s).find("."+u[5]).before(t)):l.append(e[1]),m("#"+u.MOVE)[0]||l.append(d.moveElem=i),a.layero=m("#"+u[0]+s),a.shadeo=m("#"+u.SHADE+s),o.scrollbar||d.setScrollbar(s)}).auto(s),a.shadeo.css({"background-color":o.shade[1]||"#000",opacity:o.shade[0]||o.shade,transition:o.shade[2]||""}),a.shadeo.data(y,o.shade[0]||o.shade),2==o.type&&6==v.ie&&a.layero.find("iframe").attr("src",f[0]),4==o.type?a.tips():(a.offset(),parseInt(d.getStyle(document.getElementById(u.MOVE),"z-index"))||(a.layero.css("visibility","hidden"),v.ready(function(){a.offset(),a.layero.css("visibility","visible")}))),!o.fixed||d.events.resize[a.index]||(d.events.resize[a.index]=function(){a.resize()},g.on("resize",d.events.resize[a.index])),o.time<=0||setTimeout(function(){v.close(a.index)},o.time),a.move().callback(),c(a.layero),a.layero.data("config",o)}},t.pt.resize=function(){var e=this,t=e.config;e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(e.index),4==t.type&&e.tips()},t.pt.auto=function(e){var t=this.config,i=m("#"+u[0]+e),n=(""===t.area[0]&&0t.maxWidth)&&i.width(t.maxWidth),[i.innerWidth(),i.innerHeight()]),a=i.find(u[1]).outerHeight()||0,o=i.find("."+u[6]).outerHeight()||0,e=function(e){(e=i.find(e)).height(n[1]-a-o-2*(0|parseFloat(e.css("padding-top"))))};return 2===t.type?e("iframe"):""===t.area[1]?0t.maxHeight?(n[1]=t.maxHeight,e("."+u[5])):t.fixed&&n[1]>=g.height()&&(n[1]=g.height(),e("."+u[5])):e("."+u[5]),this},t.pt.offset=function(){var e=this,t=e.config,i=e.layero,n=[i.outerWidth(),i.outerHeight()],a="object"==typeof t.offset;e.offsetTop=(g.height()-n[1])/2,e.offsetLeft=(g.width()-n[0])/2,a?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=g.width()-n[0]:"b"===t.offset?e.offsetTop=g.height()-n[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=g.width()-n[0]):"rb"===t.offset?(e.offsetTop=g.height()-n[1],e.offsetLeft=g.width()-n[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?g.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?g.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=g.scrollTop(),e.offsetLeft+=g.scrollLeft()),"min"===i.data("maxminStatus")&&(e.offsetTop=g.height()-(i.find(u[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},t.pt.tips=function(){var e=this.config,t=this.layero,i=[t.outerWidth(),t.outerHeight()],n=m(e.follow),a={width:(n=n[0]?n:m("body")).outerWidth(),height:n.outerHeight(),top:n.offset().top,left:n.offset().left},o=t.find(".layui-layer-TipsG"),n=e.tips[0];e.tips[1]||o.remove(),a.autoLeft=function(){0g.width()&&(o=g.width()-180-(d.minStackArr.edgeIndex=d.minStackArr.edgeIndex||0,d.minStackArr.edgeIndex+=3))<0&&(o=0),t.minStack&&(r.left=o,r.top=g.height()-n,a||d.minStackIndex++,l.attr("minLeft",o)),l.attr("position",s),v.style(e,r,!0),i.hide(),"page"===l.attr("type")&&l.find(u[4]).hide(),d.restScrollbar(e),c.hide())},v.restore=function(e){var t=m("#"+u[0]+e),i=m("#"+u.SHADE+e),n=t.find(".layui-layer-content"),a=t.attr("area").split(","),o=t.attr("type"),s=t.data("config")||{},r=n.data(l);t.removeData("maxminStatus"),v.style(e,{width:a[0],height:a[1],top:parseFloat(a[2]),left:parseFloat(a[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===o&&t.find(u[4]).show(),s.scrollbar?d.restScrollbar(e):d.setScrollbar(e),r!==h&&(n.removeData(l),(o===d.type[2]?n.children("iframe"):n).css({height:r})),i.show()},v.full=function(t){var i=m("#"+u[0]+t),e=i.data("maxminStatus");"max"!==e&&("min"===e&&v.restore(t),i.data("maxminStatus","max"),d.record(i),u.html.attr("layer-full")||d.setScrollbar(t),setTimeout(function(){var e="fixed"===i.css("position");v.style(t,{top:e?0:g.scrollTop(),left:e?0:g.scrollLeft(),width:"100%",height:"100%"},!0),i.find(".layui-layer-min").hide()},100))},v.title=function(e,t){m("#"+u[0]+(t||v.index)).find(u[1]).html(e)},v.close=function(o,s){var r,e,t,l=(i=m("."+u[0]).children("#"+o).closest("."+u[0]))[0]?(o=i.attr("times"),i):m("#"+u[0]+o),c=l.attr("type"),i=l.data("config")||{},f=i.id&&i.hideOnClose;l[0]&&(r={slideDown:"layer-anim-slide-down-out",slideLeft:"layer-anim-slide-left-out",slideUp:"layer-anim-slide-up-out",slideRight:"layer-anim-slide-right-out"}[i.anim]||"layer-anim-close",e=function(){var e="layui-layer-wrap";if(f)return l.removeClass("layer-anim "+r),l.hide();if(c===d.type[1]&&"object"===l.attr("conType")){l.children(":not(."+u[5]+")").remove();for(var t=l.find("."+e),i=0;i<2;i++)t.unwrap();t.css("display",t.data("display")).removeClass(e)}else{if(c===d.type[2])try{var n=m("#"+u[4]+o)[0];n.contentWindow.document.write(""),n.contentWindow.close(),l.find("."+u[5])[0].removeChild(n)}catch(a){}l[0].innerHTML="",l.remove()}"function"==typeof d.end[o]&&d.end[o](),delete d.end[o],"function"==typeof s&&s(),d.events.resize[o]&&(g.off("resize",d.events.resize[o]),delete d.events.resize[o])},t=m("#"+u.SHADE+o),v.ie&&v.ie<10||!i.isOutAnim?t[f?"hide":"remove"]():(t.css({opacity:0}),setTimeout(function(){t[f?"hide":"remove"]()},350)),i.isOutAnim&&l.addClass("layer-anim "+r),6==v.ie&&d.reselect(),d.restScrollbar(o),"string"==typeof l.attr("minLeft")&&(d.minStackIndex--,d.minStackArr.push(l.attr("minLeft"))),v.ie&&v.ie<10||!i.isOutAnim?e():setTimeout(function(){e()},200))},v.closeAll=function(n,a){"function"==typeof n&&(a=n,n=null);var o=m("."+u[0]);m.each(o,function(e){var t=m(this),i=n?t.attr("type")===n:1;i&&v.close(t.attr("times"),e===o.length-1?a:null)}),0===o.length&&"function"==typeof a&&a()},v.closeLast=function(i,e){var t,n=[],a=m.isArray(i);m("string"==typeof i?".layui-layer-"+i:".layui-layer").each(function(e,t){t=m(t);if(a&&-1===i.indexOf(t.attr("type"))||"none"===t.css("display"))return!0;n.push(Number(t.attr("times")))}),0":'",s=i.success;return delete i.success,v.open(m.extend({type:1,btn:["\u786e\u5b9a","\u53d6\u6d88"],content:o,skin:"layui-layer-prompt"+x("prompt"),maxWidth:g.width(),success:function(e){(a=e.find(".layui-layer-input")).val(i.value||"").focus(),"function"==typeof s&&s(e)},resize:!1,yes:function(e){var t=a.val();t.length>(i.maxlength||500)?v.tips("\u6700\u591a\u8f93\u5165"+(i.maxlength||500)+"\u4e2a\u5b57\u7b26",a,{tips:1}):n&&n(t,e,a)}},i))},v.tab=function(n){var a=(n=n||{}).tab||{},o="layui-this",s=n.success;return delete n.success,v.open(m.extend({type:1,skin:"layui-layer-tab"+x("tab"),resize:!1,title:function(){var e=a.length,t=1,i="";if(0'+a[0].title+"";t"+a[t].title+"";return i}(),content:'
              '+function(){var e=a.length,t=1,i="";if(0'+(a[0].content||"no content")+"";t'+(a[t].content||"no content")+"";return i}()+"
            ",success:function(e){var t=e.find(".layui-layer-title").children(),i=e.find(".layui-layer-tabmain").children();t.on("mousedown",function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0;var e=m(this),t=e.index();e.addClass(o).siblings().removeClass(o),i.eq(t).show().siblings().hide(),"function"==typeof n.change&&n.change(t)}),"function"==typeof s&&s(e)}},n))},v.photos=function(n,e,a){var s={};if((n=m.extend(!0,{toolbar:!0,footer:!0},n)).photos){var t=!("string"==typeof n.photos||n.photos instanceof m),i=t?n.photos:{},o=i.data||[],r=i.start||0,l=n.success;if(s.imgIndex=1+(0|r),n.img=n.img||"img",delete n.success,t){if(0===o.length)return v.msg("\u6ca1\u6709\u56fe\u7247")}else{var c=m(n.photos),f=function(){o=[],c.find(n.img).each(function(e){var t=m(this);t.attr("layer-index",e),o.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("lay-src")||t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(f(),0===o.length)return;if(e||c.on("click",n.img,function(){f();var e=m(this).attr("layer-index");v.photos(m.extend(n,{photos:{start:e,data:o,tab:n.tab},full:n.full}),!0)}),!e)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=o.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>o.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){var t;s.end||(t=e.keyCode,e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&v.close(s.index))},s.tabimg=function(e){if(!(o.length<=1))return i.start=s.imgIndex-1,v.close(s.index),v.photos(n,!0,e)},s.isNumber=function(e){return"number"==typeof e&&!isNaN(e)},s.image={},s.getTransform=function(e){var t=[],i=e.rotate,n=e.scaleX,e=e.scale;return s.isNumber(i)&&0!==i&&t.push("rotate("+i+"deg)"),s.isNumber(n)&&1!==n&&t.push("scaleX("+n+")"),s.isNumber(e)&&t.push("scale("+e+")"),t.length?t.join(" "):"none"},s.event=function(e,i,n){var a,o;s.main.find(".layui-layer-photos-prev").on("click",function(e){e.preventDefault(),s.imgprev(!0)}),s.main.find(".layui-layer-photos-next").on("click",function(e){e.preventDefault(),s.imgnext(!0)}),m(document).on("keyup",s.keyup),e.off("click").on("click","*[toolbar-event]",function(){var e=m(this);switch(e.attr("toolbar-event")){case"rotate":s.image.rotate=((s.image.rotate||0)+Number(e.attr("data-option")))%360,s.imgElem.css({transform:s.getTransform(s.image)});break;case"scalex":s.image.scaleX=-1===s.image.scaleX?1:-1,s.imgElem.css({transform:s.getTransform(s.image)});break;case"zoom":var t=Number(e.attr("data-option"));s.image.scale=(s.image.scale||1)+t,t<0&&s.image.scale<0-t&&(s.image.scale=0-t),s.imgElem.css({transform:s.getTransform(s.image)});break;case"reset":s.image.scaleX=1,s.image.scale=1,s.image.rotate=0,s.imgElem.css({transform:"none"});break;case"close":v.close(i)}n.offset(),n.auto(i)}),s.main.on("mousewheel DOMMouseScroll",function(e){var t=e.originalEvent.wheelDelta||-e.originalEvent.detail,i=s.main.find('[toolbar-event="zoom"]');(0n)&&("left"===t.direction?s.imgnext(!0):"right"===t.direction&&s.imgprev(!0))},m.each([n.shadeo,s.main],function(e,t){a.touchSwipe(t,{onTouchEnd:o})}))},s.loadi=v.load(1,{shade:!("shade"in n)&&[.9,h,"unset"],scrollbar:!1});var t=o[r].src,d=function(e){v.close(s.loadi);var t,i=o[r].alt||"";a&&(n.anim=-1),s.index=v.open(m.extend({type:1,id:"layui-layer-photos",area:(e=[e.width,e.height],t=[m(p).width()-100,m(p).height()-100],!n.full&&(t[0]'+i+''+(t=['
            '],1','','',"
            "].join("")),n.toolbar&&t.push(['
            ','','','','','','',"
            "].join("")),n.footer&&t.push(['"].join("")),t.push(""),t.join(""))+"",success:function(e,t,i){s.main=e.find(".layer-layer-photos-main"),s.footer=e.find(".layui-layer-photos-footer"),s.imgElem=s.main.children("img"),s.event(e,t,i),n.tab&&n.tab(o[r],e),"function"==typeof l&&l(e)},end:function(){s.end=!0,m(document).off("keyup",s.keyup)}},n))},u=function(){v.close(s.loadi),v.msg("\u5f53\u524d\u56fe\u7247\u5730\u5740\u5f02\u5e38\uff0c
            \u662f\u5426\u7ee7\u7eed\u67e5\u770b\u4e0b\u4e00\u5f20\uff1f",{time:3e4,btn:["\u4e0b\u4e00\u5f20","\u4e0d\u770b\u4e86"],yes:function(){1").addClass(r));layui.each(i.bars,function(t,e){var n=s('
          • ');n.addClass(e.icon).attr({"lay-type":e.type,style:e.style||(i.bgcolor?"background-color: "+i.bgcolor:"")}).html(e.content),n.on("click",function(){var t=s(this).attr("lay-type");"top"===t&&("body"===i.target?s("html,body"):u).animate({scrollTop:0},i.duration),"function"==typeof i.click&&i.click.call(this,t)}),"object"===layui.type(i.on)&&layui.each(i.on,function(t,e){n.on(t,function(){var t=s(this).attr("lay-type");"function"==typeof e&&e.call(this,t)})}),"top"===e.type&&(n.addClass("layui-fixbar-top"),o=n),l.append(n)}),c.find("."+r).remove(),"object"==typeof i.css&&l.css(i.css),c.append(l),o&&(e=function e(){return u.scrollTop()>=i.margin?t||(o.show(),t=1):t&&(o.hide(),t=0),e}()),u.on("scroll",function(){e&&(clearTimeout(n),n=setTimeout(function(){e()},100))})},countdown:function(i){i=s.extend(!0,{date:new Date,now:new Date},i);var o=arguments,r=(1]|&(?=#[a-zA-Z0-9]+)/g.test(t+="")?t.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,"""):t},unescape:function(t){return t!==undefined&&null!==t||(t=""),(t+="").replace(/\&/g,"&").replace(/\</g,"<").replace(/\>/g,">").replace(/\'/g,"'").replace(/\"/g,'"')},openWin:function(t){var e=(t=t||{}).window||window.open(t.url||"",t.target,t.specs);t.url||(e.document.open("text/html","replace"),e.document.write(t.content||""),e.document.close())},toVisibleArea:function(t){var e,n,i,o,r,a,c,u;(t=s.extend({margin:160,duration:200,type:"y"},t)).scrollElem[0]&&t.thisElem[0]&&(e=t.scrollElem,c=t.thisElem,i=(r="y"===t.type)?"top":"left",o=e[n=r?"scrollTop":"scrollLeft"](),r=e[r?"height":"width"](),a=e.offset()[i],u={},(c=c.offset()[i]-a)>r-t.margin||c."+v,T=function(e){var i=this;i.index=++f.index,i.config=c.extend({},i.config,f.config,e),i.init()};T.prototype.config={trigger:"click",content:"",className:"",style:"",show:!1,isAllowSpread:!0,isSpreadItem:!0,data:[],delay:[200,300],shade:0,accordion:!1},T.prototype.reload=function(e,i){var t=this;t.config=c.extend({},t.config,e),t.init(!0,i)},T.prototype.init=function(e,i){var t,n=this,l=n.config,a=c(l.elem);return 1');return 0\u6682\u65e0\u6570\u636e
          • '),e},u=function(r,e){return layui.each(e,function(e,i){var t,n=i[s.children]&&0",(t="href"in i?''+a+"":a,n?'
            '+t+("parent"===o?'':"group"===o&&d.isAllowSpread?'':"")+"
            ":'
            '+t+"
            "),""].join(""))).data("item",i),n&&(l=c('
            '),t=c("
              "),"parent"===o?(l.append(u(t,i[s.children])),a.append(l)):a.append(u(t,i[s.children]))),r.append(a))}),r},l=['
              ',"
              "].join("");!(e="contextmenu"!==d.trigger&&!lay.isTopElem(d.elem[0])?e:!0)&&d.elem.data(y+"_opened")||(a.elemView=c("."+g+'[lay-id="'+d.id+'"]'),"reloadData"===i&&a.elemView.length?a.elemView.html(d.content||n()):(a.elemView=c(l),a.elemView.append(d.content||n()),d.className&&a.elemView.addClass(d.className),d.style&&a.elemView.attr("style",d.style),f.thisId=d.id,a.remove(),t.append(a.elemView),d.elem.data(y+"_opened",!0),e=d.shade?'
              ':"",a.elemView.before(e),"mouseenter"===d.trigger&&a.elemView.on("mouseenter",function(){clearTimeout(h.timer)}).on("mouseleave",function(){a.delayRemove()})),a.position(),(h.prevElem=a.elemView).data("prevElem",d.elem),a.elemView.find(".layui-menu").on(o,function(e){layui.stope(e)}),a.elemView.find(".layui-menu li").on("click",function(e){var i=c(this),t=i.data("item")||{},n=t[s.children]&&0n.width()&&(t.addClass(x),(i=t[0].getBoundingClientRect()).left<0)&&t.removeClass(x),i.bottom>n.height())&&t.eq(0).css("margin-top",-(i.bottom-n.height()+5))}).on("mouseleave",t,function(e){var i=c(this).children("."+C);i.removeClass(x),i.css("margin-top",0)}),f.close=function(e){e=h.getThis(e);return e?(e.remove(),h.call(e)):this},f.reload=function(e,i,t){e=h.getThis(e);return e?(e.reload(i,t),h.call(e)):this},f.reloadData=function(){var t=c.extend([],arguments),n=(t[2]="reloadData",new RegExp("^("+["data","templet","content"].join("|")+")$"));return layui.each(t[1],function(e,i){n.test(e)||delete t[1][e]}),f.reload.apply(null,t)},f.render=function(e){e=new T(e);return h.call(e)},e(r,f)});layui.define(["jquery","lay"],function(e){"use strict";var g=layui.$,x=layui.lay,m={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=g.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,i,e,t)}},i="slider",f="layui-disabled",b="layui-slider-bar",T="layui-slider-wrap",w="layui-slider-wrap-btn",M="layui-slider-tips",L="layui-slider-input-txt",E="layui-slider-hover",t=function(e){var t=this;t.index=++m.index,t.config=g.extend({},t.config,m.config,e),t.render()};t.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,tipsAlways:!1,input:!1,range:!1,height:200,disabled:!1,theme:"#16baaa"},t.prototype.render=function(){var n=this,a=n.config,e=g(a.elem);if(1a.max&&(a.value=a.max),l=Math.floor((a.value-a.min)/(a.max-a.min)*100)+"%");var t,e=a.disabled?"#c2c2c2":a.theme,i='
              '+(a.tips?'
              ":"")+'
              '+(a.range?'
              ':"")+"
              ",l=g(a.elem),s=l.next(".layui-slider");if(s[0]&&s.remove(),n.elemTemp=g(i),a.range?(n.elemTemp.find("."+T).eq(0).data("value",a.value[0]),n.elemTemp.find("."+T).eq(1).data("value",a.value[1])):n.elemTemp.find("."+T).data("value",a.value),l.html(n.elemTemp),"vertical"===a.type&&n.elemTemp.height(a.height+"px"),a.showstep){for(var o=(a.max-a.min)/a.step,r="",u=1;u<1+o;u++){var d=100*u/o;d<100&&(r+='
              ')}n.elemTemp.append(r)}function c(e){e=e.parent().data("value"),e=a.setTips?a.setTips(e):e;n.elemTemp.find("."+M).html(e)}function v(e){var t="vertical"===a.type?a.height:n.elemTemp[0].offsetWidth,i=n.elemTemp.find("."+T);return("vertical"===a.type?t-e.parent()[0].offsetTop-i.height():e.parent()[0].offsetLeft)/t*100}function p(e){"vertical"===a.type?n.elemTemp.find("."+M).css({bottom:e+"%","margin-bottom":"20px",display:"inline-block"}):n.elemTemp.find("."+M).css({left:e+"%",display:"inline-block"})}a.input&&!a.range&&(e=g('
              '),l.css("position","relative"),l.append(e),l.find("."+L).children("input").val(a.value),"vertical"===a.type?e.css({left:0,top:-48}):n.elemTemp.css("margin-right",e.outerWidth()+15)),a.disabled?(n.elemTemp.addClass(f),n.elemTemp.find("."+w).addClass(f)):n.slide(),a.tips&&(a.tipsAlways?(c(s=n.elemTemp.find("."+w)),p(v(s))):n.elemTemp.find("."+w).on("mouseover",function(){c(g(this));var e=v(g(this));clearTimeout(t),t=setTimeout(function(){p(e)},300)}).on("mouseout",function(){clearTimeout(t),a.tipsAlways||n.elemTemp.find("."+M).css("display","none")}))},t.prototype.slide=function(e,t,i){var u=this,d=u.config,c=u.elemTemp,v=function(){return"vertical"===d.type?d.height:c[0].offsetWidth},p=c.find("."+T),o=c.next(".layui-slider-input"),r=o.children("."+L).children("input").val(),m=100/((d.max-d.min)/Math.ceil(d.step)),f=function(e,t,i){e=(e=100<(e=100n[1]&&n.reverse(),u.value=d.range?n:l,d.change&&d.change(u.value),"done"===i&&d.done&&d.done(u.value)},h=function(e){var t=e/v()*100/m,i=Math.round(t)*m;return i=e==v()?Math.ceil(t)*m:i},y=g(['
              v()?v():t)/v()*100/m;f(t,o),r.addClass(E),c.find("."+M).show(),e.preventDefault()},n=function(e){r.removeClass(E),d.tipsAlways||setTimeout(function(){c.find("."+M).hide()},e)},a=function(){n&&n(x.touchEventsSupported()?1e3:0),y.remove(),d.done&&d.done(u.value),x.touchEventsSupported()&&(t[0].removeEventListener("touchmove",i,!!x.passiveSupported&&{passive:!1}),t[0].removeEventListener("touchend",a),t[0].removeEventListener("touchcancel",a))},g("#LAY-slider-moving")[0]||g("body").append(y),y.on("mousemove",i),y.on("mouseup",a).on("mouseleave",a),x.touchEventsSupported()&&(t[0].addEventListener("touchmove",i,!!x.passiveSupported&&{passive:!1}),t[0].addEventListener("touchend",a),t[0].addEventListener("touchcancel",a))})}),c.on("click",function(e){var t=g("."+w),i=g(this);!t.is(event.target)&&0===t.has(event.target).length&&t.length&&(i=(t=(t=(t="vertical"===d.type?v()-e.clientY+i.offset().top-g(window).scrollTop():e.clientX-i.offset().left-g(window).scrollLeft())<0?0:t)>v()?v():t)/v()*100/m,t=d.range?"vertical"===d.type?Math.abs(t-parseInt(g(p[0]).css("bottom")))>Math.abs(t-parseInt(g(p[1]).css("bottom")))?1:0:Math.abs(t-p[0].offsetLeft)>Math.abs(t-p[1].offsetLeft)?1:0:0,f(i,t,"done"),e.preventDefault())}),o.children(".layui-slider-input-btn").children("i").each(function(t){g(this).on("click",function(){r=o.children("."+L).children("input").val();var e=((r=1==t?r-d.stepd.max?d.max:Number(r)+d.step)-d.min)/(d.max-d.min)*100/m;f(e,0,"done")})});var n=function(){var e=this.value,e=(e=(e=(e=isNaN(e)?0:e)d.max?d.max:e,((this.value=e)-d.min)/(d.max-d.min)*100/m);f(e,0,"done")};o.children("."+L).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),n.call(this))}).on("change",n)},t.prototype.events=function(){this.config},m.render=function(e){e=new t(e);return function(){var i=this,n=i.config;return{setValue:function(e,t){return e=(e=e>n.max?n.max:e)',"",'','',"","","
              "].join("")),t=i.elem=k(i.elem);i.size&&o.addClass("layui-colorpicker-"+i.size),t.addClass("layui-inline").html(e.elemColorBox=o),i.id="id"in i?i.id:t.attr("id")||e.index,e.color=e.elemColorBox.find("."+C)[0].style.background,e.events()},d.prototype.renderPicker=function(){var o,e=this,i=e.config,t=e.elemColorBox[0],r=e.elemPicker=k(['
              ','
              ','
              ','
              ','
              ','
              ',"
              ",'
              ','
              ',"
              ","
              ",'
              ','
              ','
              ',"
              ","
              ",i.predefine?(o=['
              '],layui.each(i.colors,function(e,i){o.push(['
              ','
              ',"
              "].join(""))}),o.push("
              "),o.join("")):"",'
              ','
              ','',"
              ",'
              ','','',"","
              "].join(""));e.elemColorBox.find("."+C)[0];k(a)[0]&&k(a).data("index")==e.index?e.removePicker(d.thisElemInd):(e.removePicker(d.thisElemInd),k("body").append(r)),n.thisId=i.id,d.thisElemInd=e.index,d.thisColor=t.style.background,e.position(),e.pickerEvents()},d.prototype.removePicker=function(e){var i=this.config,e=k("#layui-colorpicker"+(e||this.index));return e[0]&&(e.remove(),delete n.thisId,"function"==typeof i.close)&&i.close(this.color),this},d.prototype.position=function(){var e=this,i=e.config;return r.position(e.bindElem||e.elemColorBox[0],e.elemPicker[0],{position:i.position,align:"center"}),e},d.prototype.val=function(){var e,i=this,o=(i.config,i.elemColorBox.find("."+C)),t=i.elemPicker.find("."+M),r=o[0].style.backgroundColor;r?(e=Y(F(r)),o=o.attr("lay-type"),i.select(e.h,e.s,e.b),"torgb"===o?t.find("input").val(r):"rgba"===o?(o=F(r),3===(r.match(/[0-9]{1,3}/g)||[]).length?(t.find("input").val("rgba("+o.r+", "+o.g+", "+o.b+", 1)"),i.elemPicker.find("."+D).css("left",280)):(t.find("input").val(r),r=280*r.slice(r.lastIndexOf(",")+1,r.length-1),i.elemPicker.find("."+D).css("left",r)),i.elemPicker.find("."+T)[0].style.background="linear-gradient(to right, rgba("+o.r+", "+o.g+", "+o.b+", 0), rgb("+o.r+", "+o.g+", "+o.b+"))"):t.find("input").val("#"+j(e))):(i.select(0,100,100),t.find("input").val(""),i.elemPicker.find("."+T)[0].style.background="",i.elemPicker.find("."+D).css("left",280))},d.prototype.side=function(){var n=this,l=n.config,c=n.elemColorBox.find("."+C),a=c.attr("lay-type"),s=n.elemPicker.find(".layui-colorpicker-side"),e=n.elemPicker.find("."+B),d=n.elemPicker.find("."+I),t=n.elemPicker.find("."+E),u=n.elemPicker.find("."+T),f=n.elemPicker.find("."+D),p=e[0].offsetTop/180*360,h=100-(t[0].offsetTop+3)/180*100,g=(t[0].offsetLeft+3)/260*100,v=Math.round(f[0].offsetLeft/280*100)/100,y=n.elemColorBox.find("."+w),i=n.elemPicker.find(".layui-colorpicker-pre").children("div"),m=function(e,i,o,t){n.select(e,i,o);var r=X({h:e,s:i,b:o}),e=j({h:e,s:i,b:o}),i=n.elemPicker.find("."+M).find("input");y.addClass(x).removeClass(P),c[0].style.background="rgb("+r.r+", "+r.g+", "+r.b+")","torgb"===a?i.val("rgb("+r.r+", "+r.g+", "+r.b+")"):"rgba"===a?(f.css("left",280*t),i.val("rgba("+r.r+", "+r.g+", "+r.b+", "+t+")"),c[0].style.background="rgba("+r.r+", "+r.g+", "+r.b+", "+t+")",u[0].style.background="linear-gradient(to right, rgba("+r.r+", "+r.g+", "+r.b+", 0), rgb("+r.r+", "+r.g+", "+r.b+"))"):i.val("#"+e),l.change&&l.change(k.trim(n.elemPicker.find("."+M).find("input").val()))},o=k(['
              '].join("")),b=function(e){k("#LAY-colorpicker-moving")[0]||k("body").append(o),o.on("mousemove",e),o.on("mouseup",function(){o.remove()}).on("mouseleave",function(){o.remove()})};e.on("mousedown",function(e){var t=this.offsetTop,r=e.clientY;b(function(e){var i=t+(e.clientY-r),o=s[0].offsetHeight,o=(i=o<(i=i<0?0:i)?o:i)/180*360;m(p=o,g,h,v),e.preventDefault()}),e.preventDefault()}),s.on("click",function(e){var i=e.clientY-k(this).offset().top+L.scrollTop(),i=(i=(i=i<0?0:i)>this.offsetHeight?this.offsetHeight:i)/180*360;m(p=i,g,h,v),e.preventDefault()}),t.on("mousedown",function(e){var n=this.offsetTop,l=this.offsetLeft,c=e.clientY,a=e.clientX;layui.stope(e),b(function(e){var i=n+(e.clientY-c),o=l+(e.clientX-a),t=d[0].offsetHeight-3,r=d[0].offsetWidth-3,r=((o=r<(o=o<-3?-3:o)?r:o)+3)/260*100,o=100-((i=t<(i=i<-3?-3:i)?t:i)+3)/180*100;m(p,g=r,h=o,v),e.preventDefault()}),e.preventDefault()}),d.on("mousedown",function(e){var i=e.clientY-k(this).offset().top-3+L.scrollTop(),o=e.clientX-k(this).offset().left-3+L.scrollLeft(),o=((i=i<-3?-3:i)>this.offsetHeight-3&&(i=this.offsetHeight-3),((o=(o=o<-3?-3:o)>this.offsetWidth-3?this.offsetWidth-3:o)+3)/260*100),i=100-(i+3)/180*100;m(p,g=o,h=i,v),layui.stope(e),e.preventDefault(),t.trigger(e,"mousedown")}),f.on("mousedown",function(e){var t=this.offsetLeft,r=e.clientX;b(function(e){var i=t+(e.clientX-r),o=u[0].offsetWidth,o=(o<(i=i<0?0:i)&&(i=o),Math.round(i/280*100)/100);m(p,g,h,v=o),e.preventDefault()}),e.preventDefault()}),u.on("click",function(e){var i=e.clientX-k(this).offset().left,i=((i=i<0?0:i)>this.offsetWidth&&(i=this.offsetWidth),Math.round(i/280*100)/100);m(p,g,h,v=i),e.preventDefault()}),i.each(function(){k(this).on("click",function(){k(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e=this.style.backgroundColor,i=Y(F(e)),o=e.slice(e.lastIndexOf(",")+1,e.length-1);p=i.h,g=i.s,h=i.b,3===(e.match(/[0-9]{1,3}/g)||[]).length&&(o=1),v=o,m(i.h,i.s,i.b,o)})}),r.touchEventsSupported()&&layui.each([{elem:s,eventType:"click"},{elem:u,eventType:"click"},{elem:d,eventType:"mousedown"}],function(e,t){r.touchSwipe(t.elem,{onTouchMove:function(e){var i,o;e=e,i=t.eventType,e=e.touches[0],(o=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,e.screenX,e.screenY,e.clientX,e.clientY,!1,!1,!1,!1,0,null),e.target.dispatchEvent(o)}})})},d.prototype.select=function(e,i,o,t){this.config;var r=j({h:e,s:100,b:100}),e=(j({h:e,s:i,b:o}),e/360*180),o=180-o/100*180-3,i=i/100*260-3;this.elemPicker.find("."+B).css("top",e),this.elemPicker.find("."+I)[0].style.background="#"+r,this.elemPicker.find("."+E).css({top:o,left:i})},d.prototype.pickerEvents=function(){var c=this,a=c.config,s=c.elemColorBox.find("."+C),d=c.elemPicker.find("."+M+" input"),o={clear:function(e){s[0].style.background="",c.elemColorBox.find("."+w).removeClass(x).addClass(P),c.color="",a.done&&a.done(""),c.removePicker()},confirm:function(e,i){var o,t,r,n,l=k.trim(d.val());-1>16,g:(65280&r)>>8,b:255&r},t=Y(n),s[0].style.background=o="#"+j(t),c.elemColorBox.find("."+w).removeClass(P).addClass(x)),"change"===i?(c.select(t.h,t.s,t.b,i),a.change&&a.change(o)):(c.color=l,a.done&&a.done(l),c.removePicker())}};c.elemPicker.on("click","*[colorpicker-events]",function(){var e=k(this),i=e.attr("colorpicker-events");o[i]&&o[i].call(this,e)}),d.on("keyup",function(e){var i=k(this);o.confirm.call(this,i,13===e.keyCode?null:"change")})},d.prototype.events=function(){var e=this;e.config;e.elemColorBox.on("click",function(){e.renderPicker(),k(a)[0]&&(e.val(),e.side())})},s.on(i,function(e){var i,o,t;n.thisId&&(i=l.getThis(n.thisId))&&(o=i.config,t=i.elemColorBox.find("."+C),k(e.target).hasClass(c)||k(e.target).parents("."+c)[0]||k(e.target).hasClass(a.replace(/\./g,""))||k(e.target).parents(a)[0]||i.elemPicker&&(i.color?(e=Y(F(i.color)),i.select(e.h,e.s,e.b)):i.elemColorBox.find("."+w).removeClass(x).addClass(P),t[0].style.background=i.color||"","function"==typeof o.cancel&&o.cancel(i.color),i.removePicker()))}),L.on("resize",function(){if(n.thisId){var e=l.getThis(n.thisId);if(e)return!(!e.elemPicker||!k(a)[0])&&void e.position()}}),l.that={},l.getThis=function(e){var i=l.that[e];return i||o.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},n.render=function(e){e=new d(e);return l.call(e)},e(t,n)});layui.define("jquery",function(t){"use strict";var u=layui.$,d=(layui.hint(),layui.device()),c="element",r="layui-this",h="layui-show",o=".layui-tab-title",i=function(){this.config={}},y=(i.prototype.set=function(t){return u.extend(!0,this.config,t),this},i.prototype.on=function(t,i){return layui.onevent.call(this,c,t,i)},i.prototype.tabAdd=function(t,i){var a,e=u(".layui-tab[lay-filter="+t+"]"),l=e.children(o),n=l.children(".layui-tab-bar"),e=e.children(".layui-tab-content"),s=""+(i.title||"unnaming")+"";return n[0]?n.before(s):l.append(s),e.append('
              '+(i.content||"")+"
              "),i.change&&this.tabChange(t,i.id),l.data("LAY_TAB_CHANGE",i.change),C.tabAuto(i.change?"change":null),this},i.prototype.tabDelete=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabDelete(null,t),this},i.prototype.tabChange=function(t,i){t=u(".layui-tab[lay-filter="+t+"]").children(o).find('>li[lay-id="'+i+'"]');return C.tabClick.call(t[0],{liElem:t}),this},i.prototype.tab=function(a){a=a||{},e.on("click",a.headerElem,function(t){var i=u(this).index();C.tabClick.call(this,{index:i,options:a})})},i.prototype.progress=function(t,i){var a="layui-progress",t=u("."+a+"[lay-filter="+t+"]").find("."+a+"-bar"),a=t.find("."+a+"-text");return t.css("width",function(){return/^.+\/.+$/.test(i)?100*new Function("return "+i)()+"%":i}).attr("lay-percent",i),a.text(i),this},".layui-nav"),f="layui-nav-item",p="layui-nav-bar",b="layui-nav-tree",v="layui-nav-child",m="layui-nav-more",g="layui-anim layui-anim-upbit",C={tabClick:function(t){var i=(t=t||{}).options||{},a=t.liElem||u(this),e=i.headerElem?a.parent():a.parents(".layui-tab").eq(0),i=i.bodyElem?u(i.bodyElem):e.children(".layui-tab-content").children(".layui-tab-item"),l=a.find("a"),l="javascript:;"!==l.attr("href")&&"_blank"===l.attr("target"),n="string"==typeof a.attr("lay-unselect"),s=e.attr("lay-filter"),t="index"in t?t.index:a.parent().children("li").index(a);l||n||(a.addClass(r).siblings().removeClass(r),i.eq(t).addClass(h).siblings().removeClass(h)),layui.event.call(this,c,"tab("+s+")",{elem:e,index:t})},tabDelete:function(t,i){var i=i||u(this).parent(),a=i.parent().children("li").index(i),e=i.closest(".layui-tab"),l=e.children(".layui-tab-content").children(".layui-tab-item"),n=e.attr("lay-filter");i.hasClass(r)&&(i.next()[0]&&i.next().is("li")?C.tabClick.call(i.next()[0],{index:a+1}):i.prev()[0]&&i.prev().is("li")&&C.tabClick.call(i.prev()[0],null,a-1)),i.remove(),l.eq(a).remove(),setTimeout(function(){C.tabAuto()},50),layui.event.call(this,c,"tabDelete("+n+")",{elem:e,index:a})},tabAuto:function(l){var n="layui-tab-more",s="layui-tab-bar",o="layui-tab-close",c=this;u(".layui-tab").each(function(){var t,i=u(this),a=i.children(".layui-tab-title"),e=(i.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),e=u('');c===window&&d.ie,i.attr("lay-allowclose")&&a.find("li").each(function(){var t,i=u(this);i.find("."+o)[0]||((t=u('')).on("click",C.tabDelete),i.append(t))}),"string"!=typeof i.attr("lay-unauto")&&(a.prop("scrollWidth")>a.outerWidth()+1||a.find("li").length&&a.height()>(t=a.find("li").eq(0).height())+t/2?("change"===l&&a.data("LAY_TAB_CHANGE")&&a.addClass(n),a.find("."+s)[0]||(a.append(e),i.attr("overflow",""),e.on("click",function(t){var i=a.hasClass(n);a[i?"removeClass":"addClass"](n)}))):(a.find("."+s).remove(),i.removeAttr("overflow")))})},hideTabMore:function(t){var i=u(".layui-tab-title");!0!==t&&"tabmore"===u(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=u(this),i=t.closest(y),a=i.attr("lay-filter"),e=t.parent(),l=t.siblings("."+v),n="string"==typeof e.attr("lay-unselect");if("javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||n||l[0]||(i.find("."+r).removeClass(r),e.addClass(r)),i.hasClass(b)){var n=f+"ed",s=!e.hasClass(n),o=function(){u(this).css({display:""}),i.children("."+p).css({opacity:0})};if(l.is(":animated"))return;l.removeClass(g),l[0]&&(s?(l.slideDown(200,o),e.addClass(n)):(e.removeClass(n),l.show().slideUp(200,o)),"string"!=typeof i.attr("lay-accordion")&&"all"!==i.attr("lay-shrink")||((s=e.siblings("."+n)).removeClass(n),s.children("."+v).show().stop().slideUp(200,o)))}layui.event.call(this,c,"nav("+a+")",t)},collapse:function(){var t=u(this),i=t.find(".layui-colla-icon"),a=t.siblings(".layui-colla-content"),e=t.parents(".layui-collapse").eq(0),l=e.attr("lay-filter"),n="none"===a.css("display");"string"==typeof e.attr("lay-accordion")&&((e=e.children(".layui-colla-item").children("."+h)).siblings(".layui-colla-title").children(".layui-colla-icon").html(""),e.removeClass(h)),a[n?"addClass":"removeClass"](h),i.html(n?"":""),layui.event.call(this,c,"collapse("+l+")",{title:t,content:a,show:n})}},a=(i.prototype.render=i.prototype.init=function(t,i){var a=i?'[lay-filter="'+i+'"]':"",i={tab:function(){C.tabAuto.call({})},nav:function(){var s={},o={},c={},r="layui-nav-title";u(y+a).each(function(t){var i=u(this),a=u(''),e=i.find("."+f);i.find("."+p)[0]||(i.append(a),(i.hasClass(b)?e.find("dd,>."+r):e).on("mouseenter",function(){!function(t,i,a){var e,l=u(this),n=l.find("."+v);i.hasClass(b)?n[0]||(e=l.children("."+r),t.css({top:l.offset().top-i.offset().top,height:(e[0]?e:l).outerHeight(),opacity:1})):(n.addClass(g),n.hasClass("layui-nav-child-c")&&n.css({left:-(n.outerWidth()-l.width())/2}),n[0]?t.css({left:t.position().left+t.width()/2,width:0,opacity:0}):t.css({left:l.position().left+parseFloat(l.css("marginLeft")),top:l.position().top+l.height()-t.height()}),s[a]=setTimeout(function(){t.css({width:n[0]?0:l.width(),opacity:n[0]?0:1})},d.ie&&d.ie<10?0:200),clearTimeout(c[a]),"block"===n.css("display")&&clearTimeout(o[a]),o[a]=setTimeout(function(){n.addClass(h),l.find("."+m).addClass(m+"d")},300))}.call(this,a,i,t)}).on("mouseleave",function(){i.hasClass(b)?a.css({height:0,opacity:0}):(clearTimeout(o[t]),o[t]=setTimeout(function(){i.find("."+v).removeClass(h),i.find("."+m).removeClass(m+"d")},300))}),i.on("mouseleave",function(){clearTimeout(s[t]),c[t]=setTimeout(function(){i.hasClass(b)||a.css({width:0,left:a.position().left+a.width()/2,opacity:0})},200)})),e.find("a").each(function(){var t=u(this);t.parent();t.siblings("."+v)[0]&&!t.children("."+m)[0]&&t.append(''),t.off("click",C.clickThis).on("click",C.clickThis)})})},breadcrumb:function(){u(".layui-breadcrumb"+a).each(function(){var t=u(this),i="lay-separator",a=t.attr(i)||"/",e=t.find("a");e.next("span["+i+"]")[0]||(e.each(function(t){t!==e.length-1&&u(this).after(""+a+"")}),t.css("visibility","visible"))})},progress:function(){var e="layui-progress";u("."+e+a).each(function(){var t=u(this),i=t.find(".layui-progress-bar"),a=i.attr("lay-percent");i.css("width",function(){return/^.+\/.+$/.test(a)?100*new Function("return "+a)()+"%":a}),t.attr("lay-showpercent")&&setTimeout(function(){i.html(''+a+"")},350)})},collapse:function(){u(".layui-collapse"+a).each(function(){u(this).find(".layui-colla-item").each(function(){var t=u(this),i=t.find(".layui-colla-title"),t="none"===t.find(".layui-colla-content").css("display");i.find(".layui-colla-icon").remove(),i.append(''+(t?"":"")+""),i.off("click",C.collapse).on("click",C.collapse)})})}};return i[t]?i[t]():layui.each(i,function(t,i){i()})},new i),e=u(document);u(function(){a.render()}),e.on("click",".layui-tab-title li",C.tabClick),u(window).on("resize",C.tabAuto),t(c,a)});layui.define(["lay","layer"],function(e){"use strict";var x=layui.$,a=layui.lay,i=layui.layer,b=layui.device(),t="upload",r="layui_"+t+"_index",o={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var i=this;return i.config=x.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var i=this,e=i.config.id;return{upload:function(e){i.upload.call(i,e)},reload:function(e){i.reload.call(i,e)},config:(l.that[e]=i).config}},u="layui-upload-file",f="layui-upload-form",F="layui-upload-iframe",w="layui-upload-choose",L="UPLOADING",j=function(e){var i=this;i.index=++o.index,i.config=x.extend({},i.config,o.config,e),i.render()};j.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",force:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1,text:{"cross-domain":"Cross-domain requests are not supported","data-format-error":"Please return JSON data format","check-error":"",error:"","limit-number":null,"limit-size":null}},j.prototype.reload=function(e){var i=this;i.config=x.extend({},i.config,e),i.render(!0)},j.prototype.render=function(e){var i=this,t=i.config,n=x(t.elem);return 1"].join("")),n=i.elem.next();(n.hasClass(u)||n.hasClass(f))&&n.remove(),b.ie&&b.ie<10&&i.elem.wrap('
              '),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(t),b.ie&&b.ie<10&&e.initIE()},j.prototype.initIE=function(){var t,e=this.config,i=x(''),n=x(['
              ',"
              "].join(""));x("#"+F)[0]||x("body").append(i),e.elem.next().hasClass(f)||(this.elemFile.wrap(n),e.elem.next("."+f).append((t=[],layui.each(e.data,function(e,i){i="function"==typeof i?i():i,t.push('')}),t.join(""))))},j.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},j.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},j.prototype.preview=function(n){window.FileReader&&layui.each(this.chooseFiles,function(e,i){var t=new FileReader;t.readAsDataURL(i),t.onload=function(){n&&n(e,i,this.result)}})},j.prototype.upload=function(e,i){var t,n,a,o,u=this,f=u.config,c=f.text||{},l=u.elemFile[0],s=function(){return e||u.files||u.chooseFiles||l.files},r=function(){var a=0,o=0,l=s(),r=function(){f.multiple&&a+o===u.fileLength&&"function"==typeof f.allDone&&f.allDone({total:u.fileLength,successful:a,failed:o})},t=function(t){var n=new FormData,i=function(e){t.unified?layui.each(l,function(e,i){delete i[L]}):delete e[L]};if(layui.each(f.data,function(e,i){i="function"==typeof i?t.unified?i():i(t.index,t.file):i,n.append(e,i)}),t.unified)layui.each(l,function(e,i){i[L]||(i[L]=!0,n.append(f.field,i))});else{if(t.file[L])return;n.append(f.field,t.file),t.file[L]=!0}var e={url:f.url,type:"post",data:n,dataType:f.dataType||"json",contentType:!1,processData:!1,headers:f.headers||{},success:function(e){f.unified?a+=u.fileLength:a++,p(t.index,e),r(t.index),i(t.file)},error:function(e){f.unified?o+=u.fileLength:o++,u.msg(c.error||["Upload failed, please try again.","status: "+(e.status||"")+" - "+(e.statusText||"error")].join("
              ")),m(t.index),r(t.index),i(t.file)}};"function"==typeof f.progress&&(e.xhr=function(){var e=x.ajaxSettings.xhr();return e.upload.addEventListener("progress",function(e){var i;e.lengthComputable&&(i=Math.floor(e.loaded/e.total*100),f.progress(i,(f.item||f.elem)[0],e,t.index))}),e}),x.ajax(e)};f.unified?t({unified:!0,index:0}):layui.each(l,function(e,i){t({index:e,file:i})})},d=function(){var n=x("#"+F);u.elemFile.parent().submit(),clearInterval(j.timer),j.timer=setInterval(function(){var e,i=n.contents().find("body");try{e=i.text()}catch(t){u.msg(c["cross-domain"]),clearInterval(j.timer),m()}e&&(clearInterval(j.timer),i.html(""),p(0,e))},30)},p=function(e,i){if(u.elemFile.next("."+w).remove(),l.value="","json"===f.force&&"object"!=typeof i)try{i=JSON.parse(i)}catch(t){return i={},u.msg(c["data-format-error"])}"function"==typeof f.done&&f.done(i,e||0,function(e){u.upload(e)})},m=function(e){f.auto&&(l.value=""),"function"==typeof f.error&&f.error(e||0,function(e){u.upload(e)})},h=f.exts,g=(n=[],layui.each(e||u.chooseFiles,function(e,i){n.push(i.name)}),n),v={preview:function(e){u.preview(e)},upload:function(e,i){var t={};t[e]=i,u.upload(t)},pushFile:function(){return u.files=u.files||{},layui.each(u.chooseFiles,function(e,i){u.files[e]=i}),u.files},resetFile:function(e,i,t){i=new File([i],t);u.files=u.files||{},u.files[e]=i}},y={file:"\u6587\u4ef6",images:"\u56fe\u7247",video:"\u89c6\u9891",audio:"\u97f3\u9891"}[f.accept]||"\u6587\u4ef6",g=0===g.length?l.value.match(/[^\/\\]+\..+/g)||[]:g;if(0!==g.length){switch(f.accept){case"file":layui.each(g,function(e,i){if(h&&!RegExp(".\\.("+h+")$","i").test(escape(i)))return t=!0});break;case"video":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(i)))return t=!0});break;case"audio":layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(i)))return t=!0});break;default:layui.each(g,function(e,i){if(!RegExp(".\\.("+(h||"jpg|png|gif|bmp|jpeg|svg")+")$","i").test(escape(i)))return t=!0})}if(t)return u.msg(c["check-error"]||"\u9009\u62e9\u7684"+y+"\u4e2d\u5305\u542b\u4e0d\u652f\u6301\u7684\u683c\u5f0f"),l.value="";if("choose"!==i&&!f.auto||(f.choose&&f.choose(v),"choose"!==i)){if(u.fileLength=(a=0,y=s(),layui.each(y,function(){a++}),a),f.number&&u.fileLength>f.number)return u.msg("function"==typeof c["limit-number"]?c["limit-number"](f,u.fileLength):"\u540c\u65f6\u6700\u591a\u53ea\u80fd\u4e0a\u4f20: "+f.number+" \u4e2a\u6587\u4ef6
              \u60a8\u5f53\u524d\u5df2\u7ecf\u9009\u62e9\u4e86: "+u.fileLength+" \u4e2a\u6587\u4ef6");if(01024*f.size&&(i=1<=(i=f.size/1024)?i.toFixed(2)+"MB":f.size+"KB",l.value="",o=i)}),o)return u.msg("function"==typeof c["limit-size"]?c["limit-size"](f,o):"\u6587\u4ef6\u5927\u5c0f\u4e0d\u80fd\u8d85\u8fc7 "+o);if(!f.before||!1!==f.before(v))b.ie?(9'+e+"")};a.elem.off("upload.start").on("upload.start",function(){var e=x(this);n.config.item=e,n.elemFile[0].click()}),b.ie&&b.ie<10||a.elem.off("upload.over").on("upload.over",function(){x(this).attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){x(this).removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(e,i){var t=x(this),i=i.originalEvent.dataTransfer.files||[];t.removeAttr("lay-over"),o(i),a.auto?n.upload():l(i)}),n.elemFile.on("change",function(){var e=this.files||[];0!==e.length&&(o(e),a.auto?n.upload():l(e))}),a.bindAction.off("upload.action").on("upload.action",function(){n.upload()}),a.elem.data(r)||(a.elem.on("click",function(){n.isFile()||x(this).trigger("upload.start")}),a.drag&&a.elem.on("dragover",function(e){e.preventDefault(),x(this).trigger("upload.over")}).on("dragleave",function(e){x(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),x(this).trigger("upload.drop",e)}),a.bindAction.on("click",function(){x(this).trigger("upload.action")}),a.elem.data(r,a.id))},l.that={},l.getThis=function(e){var i=l.that[e];return i||hint.error(e?t+" instance with ID '"+e+"' not found":"ID argument required"),i},o.render=function(e){e=new j(e);return l.call(e)},e(t,o)});layui.define(["lay","layer","util"],function(e){"use strict";var w=layui.$,h=layui.layer,f=layui.util,l=layui.hint(),N=(layui.device(),"form"),o=".layui-form",T="layui-this",$="layui-hide",F="layui-disabled",t=function(){this.config={verify:{required:function(e){if(!/[\S]+/.test(e))return"\u5fc5\u586b\u9879\u4e0d\u80fd\u4e3a\u7a7a"},phone:function(e){if(e&&!/^1\d{10}$/.test(e))return"\u624b\u673a\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"},email:function(e){if(e&&!/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(e))return"\u90ae\u7bb1\u683c\u5f0f\u4e0d\u6b63\u786e"},url:function(e){if(e&&!/^(#|(http(s?)):\/\/|\/\/)[^\s]+\.[^\s]+$/.test(e))return"\u94fe\u63a5\u683c\u5f0f\u4e0d\u6b63\u786e"},number:function(e){if(e&&isNaN(e))return"\u53ea\u80fd\u586b\u5199\u6570\u5b57"},date:function(e){if(e&&!/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/.test(e))return"\u65e5\u671f\u683c\u5f0f\u4e0d\u6b63\u786e"},identity:function(e){if(e&&!/(^\d{15}$)|(^\d{17}(x|X|\d)$)/.test(e))return"\u8eab\u4efd\u8bc1\u53f7\u683c\u5f0f\u4e0d\u6b63\u786e"}},autocomplete:null}},i=(t.prototype.set=function(e){return w.extend(!0,this.config,e),this},t.prototype.verify=function(e){return w.extend(!0,this.config.verify,e),this},t.prototype.getFormElem=function(e){return w(o+(e?'[lay-filter="'+e+'"]':""))},t.prototype.on=function(e,t){return layui.onevent.call(this,N,e,t)},t.prototype.val=function(e,i){return this.getFormElem(e).each(function(e,t){var a=w(this);layui.each(i,function(e,t){var i,e=a.find('[name="'+e+'"]');e[0]&&("checkbox"===(i=e[0].type)?e[0].checked=t:"radio"===i?e.each(function(){this.checked=this.value==t}):e.val(t))})}),r.render(null,e),this.getValue(e)},t.prototype.getValue=function(e,t){t=t||this.getFormElem(e);var a={},n={},e=t.find("input,select,textarea");return layui.each(e,function(e,t){var i;w(this);t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name&&(/^.*\[\]$/.test(t.name)&&(i=t.name.match(/^(.*)\[\]$/g)[0],a[i]=0|a[i],i=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]+++"]")),/^(checkbox|radio)$/.test(t.type)&&!t.checked||(n[i||t.name]=t.value))}),n},t.prototype.render=function(e,t){var i=this.config,a=w(o+(t?'[lay-filter="'+t+'"]':"")),n={input:function(e){var e=e||a.find("input,textarea"),t=(i.autocomplete&&e.attr("autocomplete",i.autocomplete),function(e,t){var i=e.val(),a=Number(i),n=Number(e.attr("step"))||1,l=Number(e.attr("min")),r=Number(e.attr("max")),s=Number(e.attr("lay-precision")),o="click"!==t&&""===i,c="init"===t;isNaN(a)||("click"===t&&(a=!!w(this).index()?a-n:a+n),t=function(e){return((e.toString().match(/\.(\d+$)/)||[])[1]||"").length},s=0<=s?s:Math.max(t(n),t(i)),o||(c||r<=(a=a<=l?l:a)&&(a=r),s&&(a=a.toFixed(s)),e.val(a)),e[(a'),e=layui.isArray(i.value)?i.value:[i.value],e=w((a=[],layui.each(e,function(e,t){a.push('')}),a.join(""))),n=(t.append(e),i.split&&t.addClass("layui-input-split"),i.className&&t.addClass(i.className),r.next("."+u)),l=(n[0]&&n.remove(),r.parent().hasClass(o)||r.wrap('
              '),r.next("."+c));l[0]?((n=l.find("."+u))[0]&&n.remove(),l.prepend(t),r.css("padding-right",function(){return(r.closest(".layui-input-group")[0]?0:l.outerWidth())+t.outerWidth()})):(t.addClass(c),r.after(t)),"auto"===i.show&&d(t,r.val()),"function"==typeof i.init&&i.init.call(this,r,i),r.on("input propertychange",function(){var e=this.value;"auto"===i.show&&d(t,e)}),r.on("blur",function(){"function"==typeof i.blur&&i.blur.call(this,r,i)}),e.on("click",function(){var e=r.attr("lay-filter");w(this).hasClass(F)||("function"==typeof i.click&&i.click.call(this,r,i),layui.event.call(this,N,"input-affix("+e+")",{elem:r[0],affix:s,options:i}))})},f={eye:{value:"eye-invisible",click:function(e,t){var i="LAY_FORM_INPUT_AFFIX_SHOW",a=e.data(i);e.attr("type",a?"password":"text").data(i,!a),n({value:a?"eye-invisible":"eye"})}},clear:{value:"clear",click:function(e){e.val("").focus(),d(w(this).parent(),null)},show:"auto",disabled:e},number:{value:["up","down"],split:!0,className:"layui-input-number",disabled:r.is("[disabled]"),init:function(e){t.call(this,e,"init")},click:function(e){t.call(this,e,"click")},blur:function(e){t.call(this,e,"blur")}}};n()})},select:function(e){var p,u="\u8bf7\u9009\u62e9",m="layui-form-select",x="layui-select-title",g="layui-select-none",b="layui-select-create-option",k="",e=e||a.find("select"),C=function(e,t){w(e.target).parent().hasClass(x)&&!t||((e=w("."+m)).removeClass(m+"ed "+m+"up"),e.hasClass("layui-select-creatable")&&e.children("dl").children("."+b).remove(),p&&k&&p.val(k)),p=null},d=function(a,e,t,o){var s,c,i,n,u,l,r=w(this),d=a.find("."+x),f=d.find("input"),h=a.find("dl"),y=(h.children("dd"),h.children("dt")),v=this.selectedIndex;e||(c=r.attr("lay-search"),i=function(){var e=a.offset().top+a.outerHeight()+5-A.scrollTop(),t=h.outerHeight(),i=h.children("dd");v=r[0].selectedIndex,a.addClass(m+"ed"),i.removeClass($),y.removeClass($),s=null,i.removeClass(T),0<=v&&i.eq(v).addClass(T),e+t>A.height()&&t<=e&&a.addClass(m+"up"),u()},n=function(e){a.removeClass(m+"ed "+m+"up"),f.blur(),s=null,o&&h.children("."+b).remove(),e||l(f.val(),function(e){var t=r[0].selectedIndex;e&&(k=w(r[0].options[t]).html(),0===t&&k===f.attr("placeholder")&&(k=""),f.val(k||""))})},u=function(){var e,t,i=h.children("dd."+T);i[0]&&(e=i.position().top,t=h.height(),i=i.height(),t"+a+"
              ").text(),(i=h.children("."+b))[0]?(i.attr("lay-value",a),i.text(t)):h.append('
              '+t+"
              ")):e?h.find("."+g)[0]||h.append('

              \u65e0\u5339\u914d\u9879

              '):h.find("."+g).remove()},"keyup"),""===a&&(r.val(""),h.find("."+T).removeClass(T),(r[0].options[0]||{}).value||h.children("dd:eq(0)").addClass(T),h.find("."+g).remove(),o)&&h.children("."+b).remove(),u()}).on("blur",function(e){var t=r[0].selectedIndex;p=f,k=w(r[0].options[t]).text(),0===t&&k===f.attr("placeholder")&&(k=""),setTimeout(function(){l(f.val(),function(e){k||f.val("")},"blur")},200)})),h.on("click","dd",function(){var e=w(this),t=e.attr("lay-value"),i=r.attr("lay-filter");return e.hasClass(F)||(e.hasClass("layui-select-tips")?f.val(""):(f.val(e.text()),e.addClass(T)),o&&e.hasClass(b)&&(e.removeClass(b),r.append('")),e.siblings().removeClass(T),r.val(t).removeClass("layui-form-danger"),layui.event.call(this,N,"select("+i+")",{elem:r[0],value:t,othis:a}),n(!0)),!1}),a.find("dl>dt").on("click",function(e){return!1}),w(document).off("click",C).on("click",C))};e.each(function(e,t){var i=w(this),a=i.next("."+m),n=this.disabled,l=t.value,r=w(t.options[t.selectedIndex]),t=t.options[0];if("string"==typeof i.attr("lay-ignore"))return i.show();var s,o="string"==typeof i.attr("lay-search"),c="string"==typeof i.attr("lay-creatable")&&o,t=t&&!t.value&&t.innerHTML||u,r=w(['
              ','
              ','','
              ','
              ',(t=i.find("*"),s=[],layui.each(t,function(e,t){var i=t.tagName.toLowerCase();0!==e||t.value||"optgroup"===i?s.push("optgroup"===i?"
              "+t.label+"
              ":'
              '+w.trim(t.innerHTML)+"
              "):s.push('
              '+w.trim(t.innerHTML||u)+"
              ")}),0===s.length&&s.push('
              \u6ca1\u6709\u9009\u9879
              '),s.join("")+"
              "),"
              "].join(""));a[0]&&a.remove(),i.after(r),d.call(this,r,n,o,c)})},checkbox:function(e){var o={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],"switch":["layui-form-switch","layui-form-onswitch","switch"],SUBTRA:"layui-icon-indeterminate"},e=e||a.find("input[type=checkbox]");e.each(function(e,t){var i=w(this),a=i.attr("lay-skin")||"primary",n=f.escape(w.trim(t.title||(t.title=i.attr("lay-text")||""))),l=this.disabled,r=o[a]||o.checkbox,s=i.next("."+r[0]);if(s[0]&&s.remove(),i.next("[lay-checkbox]")[0]&&(n=i.next().html()||""),n="switch"===a?n.split("|"):[n],"string"==typeof i.attr("lay-ignore"))return i.show();l=w(['
              ",(s={checkbox:[n[0]?"
              "+n[0]+"
              ":"primary"===a?"":"
              ",''].join(""),"switch":"
              "+((t.checked?n[0]:n[1])||"")+"
              "})[a]||s.checkbox,"
              "].join(""));i.after(l),function(a,n){var l=w(this);a.on("click",function(){var e=w(this),t=l.attr("lay-filter"),e=e.next("*[lay-checkbox]")[0]?e.next().html():l.attr("title")||"",i=l.attr("lay-skin")||"primary",e="switch"===i?e.split("|"):[e];l[0].disabled||(l[0].indeterminate&&(l[0].indeterminate=!1,a.find("."+o.SUBTRA).removeClass(o.SUBTRA).addClass("layui-icon-ok")),l[0].checked?(l[0].checked=!1,a.removeClass(n[1]),"switch"===i&&a.children("div").html(e[1])):(l[0].checked=!0,a.addClass(n[1]),"switch"===i&&a.children("div").html(e[0])),layui.event.call(l[0],N,n[2]+"("+t+")",{elem:l[0],value:l[0].value,othis:a}))})}.call(this,l,r)})},radio:function(e){var r="layui-form-radio",s=["layui-icon-radio","layui-icon-circle"],e=e||a.find("input[type=radio]");e.each(function(e,t){var i=w(this),a=i.next("."+r),n=this.disabled;if("string"==typeof i.attr("lay-ignore"))return i.show();a[0]&&a.remove();n=w(['
              ','',"
              "+(a=f.escape(t.title||""),a=i.next("[lay-radio]")[0]?i.next().html():a)+"
              ","
              "].join(""));i.after(n),function(a){var n=w(this),l="layui-anim-scaleSpring";a.on("click",function(){var e=n[0].name,t=n.parents(o),i=n.attr("lay-filter"),e=t.find("input[name="+e.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(e,function(){var e=w(this).next("."+r);this.checked=!1,e.removeClass(r+"ed"),e.children(".layui-icon").removeClass(l+" "+s[0]).addClass(s[1])}),n[0].checked=!0,a.addClass(r+"ed"),a.children(".layui-icon").addClass(l+" "+s[0]),layui.event.call(n[0],N,"radio("+i+")",{elem:n[0],value:n[0].value,othis:a}))})}.call(this,n)})}},t=function(){layui.each(n,function(e,t){t()})};return"object"===layui.type(e)?w(e).is(o)?(a=w(e),t()):e.each(function(e,t){var i=w(t);i.closest(o).length&&("SELECT"===t.tagName?n.select(i):"INPUT"===t.tagName&&("checkbox"===(t=t.type)||"radio"===t?n[t](i):n.input(i)))}):e?n[e]?n[e]():l.error('\u4e0d\u652f\u6301\u7684 "'+e+'" \u8868\u5355\u6e32\u67d3'):t(),this},t.prototype.validate=function(e){var u,d=this.config.verify,f="layui-form-danger";return!(e=w(e))[0]||(e.attr("lay-verify")!==undefined||!1!==this.validate(e.find("*[lay-verify]")))&&(layui.each(e,function(e,r){var s=w(this),t=(s.attr("lay-verify")||"").split("|"),o=s.attr("lay-vertype"),c=w.trim(s.val());if(s.removeClass(f),layui.each(t,function(e,t){var i="",a=d[t];if(a){var n="function"==typeof a?i=a(c,r):!a[0].test(c),l="select"===r.tagName.toLowerCase()||/^(checkbox|radio)$/.test(r.type),i=i||a[1];if("required"===t&&(i=s.attr("lay-reqtext")||i),n)return"tips"===o?h.tips(i,"string"!=typeof s.attr("lay-ignore")&&l?s.next():s,{tips:1}):"alert"===o?h.alert(i,{title:"\u63d0\u793a",shadeClose:!0}):/\b(string|number)\b/.test(typeof i)&&h.msg(i,{icon:5,shift:6}),setTimeout(function(){(l?s.next().find("input"):r).focus()},7),s.addClass(f),u=!0}}),u)return u}),!u)},t.prototype.submit=function(e,t){var i={},a=w(this),e="string"==typeof e?e:a.attr("lay-filter"),n=this.getFormElem?this.getFormElem(e):a.parents(o).eq(0),l=n.find("*[lay-verify]");return!!r.validate(l)&&(i=r.getValue(null,n),l={elem:this.getFormElem?window.event&&window.event.target:this,form:(this.getFormElem?n:a.parents("form"))[0],field:i},"function"==typeof t&&t(l),layui.event.call(this,N,"submit("+e+")",l))}),r=new t,t=w(document),A=w(window);w(function(){r.render()}),t.on("reset",o,function(){var e=w(this).attr("lay-filter");setTimeout(function(){r.render(null,e)},50)}),t.on("submit",o,i).on("click","*[lay-submit]",i),e(N,r)});layui.define(["lay","laytpl","laypage","form","util"],function(n){"use strict";var f=layui.$,r=layui.lay,m=layui.laytpl,O=layui.laypage,p=layui.layer,v=layui.form,g=layui.util,x=layui.hint(),b=layui.device(),k={config:{checkName:"LAY_CHECKED",indexName:"LAY_INDEX",numbersName:"LAY_NUM",disabledName:"LAY_DISABLED"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){return this.config=f.extend({},this.config,e),this},on:function(e,t){return layui.onevent.call(this,N,e,t)}},w=function(){var a=this,e=a.config,i=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){k.reloadData(i,e,t)},setColsWidth:function(){a.setColsWidth.call(a)},resize:function(){a.resize.call(a)}}},C=function(e){var t=w.that[e];return t||x.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},l=function(e){var t=w.config[e];return t||x.error(e?"The table instance with ID '"+e+"' not found":"ID argument required"),t||null},T=function(e){var t=this.config||{},a=(e=e||{}).item3,i=e.content;"numbers"===a.type&&(i=e.tplData[k.config.numbersName]);("escape"in a?a:t).escape&&(i=g.escape(i));t=e.text&&a.exportTemplet||a.templet||a.toolbar;return t&&(i="function"==typeof t?t.call(a,e.tplData,e.obj):m(function(e){try{return r(e).html()}catch(t){return e}}(t)||String(i)).render(f.extend({LAY_COL:a},e.tplData))),e.text?f("
              "+i+"
              ").text():i},N="table",t=".layui-table",R="layui-hide",y="layui-hide-v",h="layui-none",D="layui-table-view",o=".layui-table-header",L=".layui-table-body",u=".layui-table-fixed-r",z=".layui-table-pageview",E=".layui-table-sort",A="layui-table-checked",_="layui-table-edit",M="layui-table-hover",I="laytable-cell-group",W="layui-table-col-special",j="layui-table-tool-panel",H="layui-table-expanded",S="LAY_TABLE_MOVE_DICT",e=function(e){return['',"","{{# layui.each(d.data.cols, function(i1, item1){ }}","","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',(e=e||{}).fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':"","{{# var isSort = !(item2.colGroup) && item2.sort; }}",'",e.fixed?"{{# }; }}":"","{{# }); }}","","{{# }); }}","","
              ','
              ','{{# if(item2.type === "checkbox"){ }}','',"{{# } else { }}",'{{-item2.title||""}}',"{{# if(isSort){ }}",'',"{{# } }}","{{# } }}","
              ","
              "].join("")},a=['',"","
              "].join(""),s=[,"{{# if(d.data.toolbar){ }}",'
              ','
              ','
              ',"
              ","{{# } }}",'
              ',"{{# if(d.data.loading){ }}",'
              ','',"
              ","{{# } }}","{{# var left, right; }}",'
              ',e(),"
              ",'
              ',a,"
              ","{{# if(left){ }}",'
              ','
              ',e({fixed:!0}),"
              ",'
              ',a,"
              ","
              ","{{# }; }}","{{# if(right){ }}",'
              ','
              ',e({fixed:"right"}),'
              ',"
              ",'
              ',a,"
              ","
              ","{{# }; }}","
              ","{{# if(d.data.totalRow){ }}",'
              ','','',"
              ","
              ","{{# } }}",'
              ','
              ',"
              "].join(""),d=f(window),F=f(document),i=function(e){this.index=++k.index,this.config=f.extend({},this.config,k.config,e),this.render()},c=(i.prototype.config={limit:10,loading:!0,escape:!0,cellMinWidth:60,cellMaxWidth:Number.MAX_VALUE,editTrigger:"click",defaultToolbar:["filter","exports","print"],defaultContextmenu:!0,autoSort:!0,text:{none:"\u65e0\u6570\u636e"},cols:[]},i.prototype.render=function(e){var t=this,a=t.config,i=(a.elem=f(a.elem),a.where=a.where||{},a.id="id"in a?a.id:a.elem.attr("id")||t.index);if(w.that[i]=t,(w.config[i]=a).request=f.extend({pageName:"page",limitName:"limit"},a.request),a.response=f.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",totalRowName:"totalRow",countName:"count"},a.response),null!==a.page&&"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,t.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return t;if(a.elem.attr("lay-filter")||a.elem.attr("lay-filter",a.id),"reloadData"===e)return t.pullData(t.page,{type:"reloadData"});a.index=t.index,t.key=a.id||a.index,t.setInit(),a.height&&/^full-.+$/.test(a.height)?(t.fullHeightGap=a.height.split("-")[1],a.height=d.height()-(parseFloat(t.fullHeightGap)||0)):a.height&&/^#\w+\S*-.+$/.test(a.height)?(i=a.height.split("-"),t.parentHeightGap=i.pop(),t.parentDiv=i.join("-"),a.height=f(t.parentDiv).height()-(parseFloat(t.parentHeightGap)||0)):"function"==typeof a.height&&(t.customHeightFunc=a.height,a.height=t.customHeightFunc());var l,e=a.elem,i=e.next("."+D),n=t.elem=f("
              ");n.addClass((l=[D,D+"-"+t.index,"layui-form","layui-border-box"],a.className&&l.push(a.className),l.join(" "))).attr({"lay-filter":"LAY-TABLE-FORM-DF-"+t.index,"lay-id":a.id,style:(l=[],a.width&&l.push("width:"+a.width+"px;"),l.join(""))}).html(m(s,{open:"{{",close:"}}"}).render({data:a,index:t.index})),t.renderStyle(),i[0]&&i.remove(),e.after(n),t.layTool=n.find(".layui-table-tool"),t.layBox=n.find(".layui-table-box"),t.layHeader=n.find(o),t.layMain=n.find(".layui-table-main"),t.layBody=n.find(L),t.layFixed=n.find(".layui-table-fixed"),t.layFixLeft=n.find(".layui-table-fixed-l"),t.layFixRight=n.find(u),t.layTotal=n.find(".layui-table-total"),t.layPage=n.find(".layui-table-page"),t.renderToolbar(),t.renderPagebar(),t.fullSize(),t.pullData(t.page),t.events()},i.prototype.initOpts=function(e){this.config;e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||{checkbox:50,radio:50,space:30,numbers:60}[e.type])},i.prototype.setInit=function(e){var l,a,d=this,r=d.config;if(r.clientWidth=r.width||(l=function(e){var t,a=(e=e||r.elem.parent()).width();try{t="none"===e.css("display")}catch(i){}return!e[0]||a&&!t?a:l(e.parent())})(),"width"===e)return r.clientWidth;r.height=r.maxHeight||r.height,r.css&&-1===r.css.indexOf(D)&&(a=r.css.split("}"),layui.each(a,function(e,t){t&&(a[e]="."+D+"-"+d.index+" "+t)}),r.css=a.join("}"));var c=function(a,e,i,l){var n,o;l?(l.key=[r.index,a,i].join("-"),l.colspan=l.colspan||0,l.rowspan=l.rowspan||0,d.initOpts(l),(n=a+(parseInt(l.rowspan)||1)) td:hover > .layui-table-cell{overflow: auto;}"].concat(b.ie?[".layui-table-edit{height: "+i+";}","td[data-edit]:hover:after{height: "+i+";}"]:[]),function(e,t){t&&o.push(a+" "+t)})),l.css&&o.push(l.css),r.style({target:this.elem[0],text:o.join(""),id:"DF-table-"+n})},i.prototype.renderToolbar=function(){var e=this.config,t=['
              ','
              ','
              '].join(""),a=this.layTool.find(".layui-table-tool-temp"),i=("default"===e.toolbar?a.html(t):"string"==typeof e.toolbar&&(t=f(e.toolbar).html()||"")&&a.html(m(t).render(e)),{filter:{title:"\u7b5b\u9009\u5217",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"\u5bfc\u51fa",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"\u6253\u5370",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}}),l=[];"object"==typeof e.defaultToolbar&&layui.each(e.defaultToolbar,function(e,t){t="string"==typeof t?i[t]:t;t&&l.push('
              ')}),this.layTool.find(".layui-table-tool-self").html(l.join(""))},i.prototype.renderPagebar=function(){var e,t=this.config,a=this.layPagebar=f('
              ');t.pagebar&&((e=f(t.pagebar).html()||"")&&a.append(m(e).render(t)),this.layPage.append(a))},i.prototype.setParentCol=function(e,t){var a=this.config,i=this.layHeader.find('th[data-key="'+t+'"]'),l=parseInt(i.attr("colspan"))||0;i[0]&&(t=t.split("-"),t=a.cols[t[1]][t[2]],e?l--:l++,i.attr("colspan",l),i[l?"removeClass":"addClass"](R),t.colspan2=l,t.hide=l<1,a=i.data("parentkey"))&&this.setParentCol(e,a)},i.prototype.setColsPatch=function(){var a=this,e=a.config;layui.each(e.cols,function(e,t){layui.each(t,function(e,t){t.hide&&a.setParentCol(t.hide,t.parentKey)})})},i.prototype.setGroupWidth=function(i){var e,l=this;l.config.cols.length<=1||((e=l.layHeader.find((i?"th[data-key="+i.data("parentkey")+"]>":"")+"."+I)).css("width",0),layui.each(e.get().reverse(),function(){var e=f(this),t=e.parent().data("key"),a=0;l.layHeader.eq(0).find("th[data-parentkey="+t+"]").width(function(e,t){f(this).hasClass(R)||0 tr:first-child > th:last-child")).data("field")&&e.prev()[0]?t(e.prev()):e})()).data("key"),n.cssRules(e,function(e){var t=e.style.width||a.outerWidth();e.style.width=parseFloat(t)+l+"px",0'+(e||"Error")+"
              ");a[0]&&(t.layNone.remove(),a.remove()),t.layFixed.addClass(R),t.layMain.find("tbody").html(""),t.layMain.append(t.layNone=e),t.layTotal.addClass(y),t.layPage.find(z).addClass(y),k.cache[t.key]=[],t.syncCheckAll(),t.renderForm(),t.setColsWidth()},i.prototype.page=1,i.prototype.pullData=function(a,t){var e,i,l=this,n=l.config,o=(n.HAS_SET_COLS_PATCH||l.setColsPatch(),n.HAS_SET_COLS_PATCH=!0,n.request),d=n.response,r=function(){"object"==typeof n.initSort&&l.sort({field:n.initSort.field,type:n.initSort.type,reloadType:t.type})},c=function(e,t){l.setColsWidth(),"function"==typeof n.done&&n.done(e,a,e[d.countName],t)};t=t||{},"function"==typeof n.before&&n.before(n),l.startTime=(new Date).getTime(),t.renderData?((e={})[d.dataName]=k.cache[l.key],e[d.countName]=n.url?"object"===layui.type(n.page)?n.page.count:e[d.dataName].length:n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},l.totalRow)),l.renderData({res:e,curr:a,count:e[d.countName],type:t.type,sort:!0}),c(e,"renderData")):n.url?(i={},n.page&&(i[o.pageName]=a,i[o.limitName]=n.limit),o=f.extend(i,n.where),n.contentType&&0==n.contentType.indexOf("application/json")&&(o=JSON.stringify(o)),l.loading(),f.ajax({type:n.method||"get",url:n.url,contentType:n.contentType,data:o,dataType:n.dataType||"json",jsonpCallback:n.jsonpCallback,headers:n.headers||{},complete:"function"==typeof n.complete?n.complete:undefined,success:function(e){(e="function"==typeof n.parseData?n.parseData(e)||e:e)[d.statusName]!=d.statusCode?l.errorView(e[d.msgName]||'\u8fd4\u56de\u7684\u6570\u636e\u4e0d\u7b26\u5408\u89c4\u8303\uff0c\u6b63\u786e\u7684\u6210\u529f\u72b6\u6001\u7801\u5e94\u4e3a\uff1a"'+d.statusName+'": '+d.statusCode):(l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),n.time=(new Date).getTime()-l.startTime+" ms"),c(e)},error:function(e,t){l.errorView("\u8bf7\u6c42\u5f02\u5e38\uff0c\u9519\u8bef\u63d0\u793a\uff1a"+t),"function"==typeof n.error&&n.error(e,t)}})):"array"===layui.type(n.data)&&(e={},i=a*n.limit-n.limit,o=n.data.concat(),e[d.dataName]=n.page?o.splice(i,n.limit):o,e[d.countName]=n.data.length,"object"==typeof n.totalRow&&(e[d.totalRowName]=f.extend({},n.totalRow)),l.totalRow=e[d.totalRowName],l.renderData({res:e,curr:a,count:e[d.countName],type:t.type}),r(),c(e))},i.prototype.eachCols=function(e){return k.eachCols(null,e,this.config.cols),this},i.prototype.col=function(e){try{return e=e.split("-"),this.config.cols[e[1]][e[2]]||{}}catch(t){return x.error(t),{}}},i.prototype.getTrHtml=function(a,l,n,e){var s=this,u=s.config,y=e&&e.trs||[],h=e&&e.trs_fixed||[],p=e&&e.trs_fixed_r||[];return n=n||1,layui.each(a,function(e,o){var i=[],d=[],r=[],c=e+u.limit*(n-1)+1;if("object"!=typeof o){a[e]=o={LAY_KEY:o};try{k.cache[s.key][e]=o}catch(t){}}"array"===layui.type(o)&&0===o.length||(o[k.config.numbersName]=c,l||(o[k.config.indexName]=e),s.eachCols(function(e,l){var t,e=l.field||e,a=l.key,n=o[e];n!==undefined&&null!==n||(n=""),l.colGroup||(e=['','
              "+function(){var e,t=f.extend(!0,{LAY_COL:l},o),a=k.config.checkName,i=k.config.disabledName;switch(l.type){case"checkbox":return'';case"radio":return'';case"numbers":return c}return l.toolbar?m(f(l.toolbar).html()||"").render(t):T.call(s,{item3:l,content:n,tplData:t})}(),"
              "].join(""),i.push(e),l.fixed&&"right"!==l.fixed&&d.push(e),"right"===l.fixed&&r.push(e))}),e=['data-index="'+e+'"'],o[k.config.checkName]&&e.push('class="'+A+'"'),e=e.join(" "),y.push(""+i.join("")+""),h.push(""+d.join("")+""),p.push(""+r.join("")+""))}),{trs:y,trs_fixed:h,trs_fixed_r:p}},k.getTrHtml=function(e,t){e=C(e);return e.getTrHtml(t,null,e.page)},i.prototype.renderData=function(e){var a=this,i=a.config,t=e.res,l=e.curr,n=a.count=e.count,o=e.sort,d=t[i.response.dataName]||[],t=t[i.response.totalRowName],r=[],c=[],s=[],u=function(){if(!o&&a.sortKey)return a.sort({field:a.sortKey.field,type:a.sortKey.sort,pull:!0,reloadType:e.type});a.getTrHtml(d,o,l,{trs:r,trs_fixed:c,trs_fixed_r:s}),"fixed"===i.scrollPos&&"reloadData"===e.type||a.layBody.scrollTop(0),"reset"===i.scrollPos&&a.layBody.scrollLeft(0),a.layMain.find("."+h).remove(),a.layMain.find("tbody").html(r.join("")),a.layFixLeft.find("tbody").html(c.join("")),a.layFixRight.find("tbody").html(s.join("")),a.syncCheckAll(),a.renderForm(),a.fullSize(),a.haveInit?a.scrollPatch():setTimeout(function(){a.scrollPatch()},50),a.haveInit=!0,p.close(a.tipsIndex)};return k.cache[a.key]=d,a.layTotal[0==d.length?"addClass":"removeClass"](y),a.layPage[i.page||i.pagebar?"removeClass":"addClass"](R),a.layPage.find(z)[!i.page||0==n||0===d.length&&1==l?"addClass":"removeClass"](y),0===d.length?a.errorView(i.text.none):(a.layFixLeft.removeClass(R),o?u():(u(),a.renderTotal(d,t),a.layTotal&&a.layTotal.removeClass(R),void(i.page&&(i.page=f.extend({elem:"layui-table-page"+i.index,count:n,limit:i.limit,limits:i.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'',next:'',jump:function(e,t){t||(a.page=e.curr,i.limit=e.limit,a.pullData(e.curr))}},i.page),i.page.count=n,O.render(i.page)))))},k.renderData=function(e){e=C(e);e&&e.pullData(e.page,{renderData:!0,type:"reloadData"})},i.prototype.renderTotal=function(e,o){var d,r=this,c=r.config,s={};c.totalRow&&(layui.each(e,function(e,i){"array"===layui.type(i)&&0===i.length||r.eachCols(function(e,t){var e=t.field||e,a=i[e];t.totalRow&&(s[e]=(s[e]||0)+(parseFloat(a)||0))})}),r.dataTotal=[],d=[],r.eachCols(function(e,t){var a,e=t.field||e,i=o&&o[t.field],l="totalRowDecimals"in t?t.totalRowDecimals:2,l=s[e]?parseFloat(s[e]||0).toFixed(l):"",l=(a=t.totalRowText||"",(n={LAY_COL:t})[e]=l,n=t.totalRow&&T.call(r,{item3:t,content:l,tplData:n})||a,i||n),n=(t.field&&r.dataTotal.push({field:t.field,total:f("
              "+l+"
              ").text()}),['','
              "+("string"==typeof(a=t.totalRow||c.totalRow)?m(a).render(f.extend({TOTAL_NUMS:i||s[e],TOTAL_ROW:o||{},LAY_COL:t},t)):l),"
              "].join(""));d.push(n)}),e=r.layTotal.find(".layui-table-patch"),r.layTotal.find("tbody").html(""+d.join("")+(e.length?e.get(0).outerHTML:"")+""))},i.prototype.getColElem=function(e,t){return e.eq(0).find(".laytable-cell-"+t+":eq(0)")},i.prototype.renderForm=function(e){this.config;var t=this.elem.attr("lay-filter");v.render(e,t)},i.prototype.renderFormByElem=function(a){layui.each(["input","select"],function(e,t){v.render(a.find(t))})},i.prototype.syncCheckAll=function(){var a,e=this,i=e.config,t=e.layHeader.find('input[name="layTableCheckbox"]'),l=k.checkStatus(e.key);t[0]&&(a=l.isAll,e.eachCols(function(e,t){"checkbox"===t.type&&(t[i.checkName]=a)}),t.prop({checked:l.isAll,indeterminate:!l.isAll&&l.data.length}),v.render(t))},i.prototype.setRowActive=function(e,t,a){this.config;e=this.layBody.find('tr[data-index="'+e+'"]');if(t=t||"layui-table-click",a)return e.removeClass(t);e.addClass(t),e.siblings("tr").removeClass(t)},i.prototype.setRowChecked=function(i){var e=this,l=e.config,n="all"===i.index,o="array"===layui.type(i.index),d=(t=e.layBody.find("tr"),n?t:t.filter(o?function(){var e=f(this).data("index");return-1!==i.index.indexOf(e)}:'[data-index="'+i.index+'"]')),t=(i=f.extend({type:"checkbox"},i),k.cache[e.key]),a="checked"in i,r=function(e){return"radio"===i.type||(a?i.checked:!e)},t=(layui.each(t,function(e,t){var a;"array"===layui.type(t)||t[l.disabledName]||(n||(o?-1!==i.index.indexOf(e):Number(i.index)===e)?(a=t[l.checkName]=r(t[l.checkName]),(e=d.filter('[data-index="'+e+'"]'))[a?"addClass":"removeClass"](A),"radio"===i.type&&e.siblings().removeClass(A)):"radio"===i.type&&delete t[l.checkName])}),d.find('input[lay-type="'+({radio:"layTableRadio",checkbox:"layTableCheckbox"}[i.type]||"checkbox")+'"]:not(:disabled)')),c=t.last(),s=c.closest(u);("radio"===i.type&&s.hasClass(R)?t.first():t).prop("checked",r(c.prop("checked"))),e.syncCheckAll(),e.renderForm(i.type)},i.prototype.sort=function(l){var e,t=this,a={},i=t.config,n=i.elem.attr("lay-filter"),o=k.cache[t.key];"string"==typeof(l=l||{}).field&&(d=l.field,t.layHeader.find("th").each(function(e,t){var a=f(this),i=a.data("field");if(i===l.field)return l.field=a,d=i,!1}));try{var d=d||l.field.data("field"),r=l.field.data("key");if(t.sortKey&&!l.pull&&d===t.sortKey.field&&l.type===t.sortKey.sort)return;var c=t.layHeader.find("th .laytable-cell-"+r).find(E);t.layHeader.find("th").find(E).removeAttr("lay-sort"),c.attr("lay-sort",l.type||null),t.layFixed.find("th")}catch(s){x.error("Table modules: sort field '"+d+"' not matched")}t.sortKey={field:d,sort:l.type},i.autoSort&&("asc"===l.type?e=layui.sort(o,d,null,!0):"desc"===l.type?e=layui.sort(o,d,!0,!0):(e=layui.sort(o,k.config.indexName,null,!0),delete t.sortKey,delete i.initSort)),a[i.response.dataName]=e||o,t.renderData({res:a,curr:t.page,count:t.count,sort:!0,type:l.reloadType}),l.fromEvent&&(i.initSort={field:d,type:l.type},layui.event.call(l.field,N,"sort("+n+")",f.extend({config:i},i.initSort)))},i.prototype.loading=function(e){var t=this;t.config.loading&&(e?(t.layInit&&t.layInit.remove(),delete t.layInit,t.layBox.find(".layui-table-init").remove()):(t.layInit=f(['
              ','',"
              "].join("")),t.layBox.append(t.layInit)))},i.prototype.cssRules=function(t,a){var e=this.elem.children("style")[0];r.getStyleRules(e,function(e){if(e.selectorText===".laytable-cell-"+t)return a(e),!0})},i.prototype.fullSize=function(){var e,a,i=this,t=i.config,l=t.height;i.fullHeightGap?(l=d.height()-i.fullHeightGap)<135&&(l=135):i.parentDiv&&i.parentHeightGap?(l=f(i.parentDiv).height()-i.parentHeightGap)<135&&(l=135):i.customHeightFunc&&(l=i.customHeightFunc())<135&&(l=135),1
              ')).find("div").css({width:a}),e.find("tr").append(t)):e.find(".layui-table-patch").remove()};n(e.layHeader),n(e.layTotal);n=e.layMain.height()-i;e.layFixed.find(L).css("height",t.height()>=n?n:"auto").scrollTop(e.layMain.scrollTop()),e.layFixRight[k.cache[e.key]&&k.cache[e.key].length&&0');a.html(t),s.height&&a.css("max-height",s.height-(c.layTool.outerHeight()||50)),i.find("."+j)[0]||i.append(a),c.renderForm(),a.on("click",function(e){layui.stope(e)}),e.done&&e.done(a,t)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),p.close(c.tipsIndex),t){case"LAYTABLE_COLS":n({list:(a=[],c.eachCols(function(e,t){t.field&&"normal"==t.type&&a.push('
            • "+(t.fieldTitle||t.title||t.field)+"").text())+'" lay-filter="LAY_TABLE_TOOL_COLS">
            • ')}),a.join("")),done:function(){v.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var e=f(e.elem),t=this.checked,a=e.data("key"),i=c.col(a),l=i.hide,e=e.data("parentkey");i.key&&(i.hide=!t,c.elem.find('*[data-key="'+a+'"]')[t?"removeClass":"addClass"](R),l!=i.hide&&c.setParentCol(!t,e),c.resize(),layui.event.call(this,N,"colToggled("+u+")",{col:i,config:s}))})}});break;case"LAYTABLE_EXPORT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});b.ie?p.tips("\u5bfc\u51fa\u529f\u80fd\u4e0d\u652f\u6301 IE\uff0c\u8bf7\u7528 Chrome \u7b49\u9ad8\u7ea7\u6d4f\u89c8\u5668\u5bfc\u51fa",this,{tips:3}):n({list:['
            • \u5bfc\u51fa csv \u683c\u5f0f\u6587\u4ef6
            • ','
            • \u5bfc\u51fa xls \u683c\u5f0f\u6587\u4ef6
            • '].join(""),done:function(e,t){t.on("click",function(){var e=f(this).data("type");k.exportFile.call(c,s.id,null,e)})}});break;case"LAYTABLE_PRINT":if(!l.length)return p.tips("\u5f53\u524d\u8868\u683c\u65e0\u6570\u636e",this,{tips:3});var o=window.open("about:blank","_blank"),d=[""].join(""),r=f(c.layHeader.html());r.append(c.layMain.find("table").html()),r.append(c.layTotal.find("table").html()),r.find("th.layui-table-patch").remove(),r.find("thead>tr>th."+W).filter(function(e,t){return!f(t).children("."+I).length}).remove(),r.find("tbody>tr>td."+W).remove(),o.document.write(d+r.prop("outerHTML")),o.document.close(),layui.device("edg").edg?(o.onafterprint=o.close,o.print()):(o.print(),o.close())}layui.event.call(this,N,"toolbar("+u+")",f.extend({event:t,config:s},{}))}),c.layHeader.on("click","*[lay-event]",function(e){var t=f(this),a=t.attr("lay-event"),t=t.closest("th").data("key"),t=c.col(t);layui.event.call(this,N,"colTool("+u+")",f.extend({event:a,config:s,col:t},{}))}),c.layPagebar.on("click","*[lay-event]",function(e){var t=f(this).attr("lay-event");layui.event.call(this,N,"pagebar("+u+")",f.extend({event:t,config:s},{}))}),e.on("mousemove",function(e){var t=f(this),a=t.offset().left,e=e.clientX-a;t.data("unresize")||w.eventMoveElem||(d.allowResize=t.width()-e<=10,o.css("cursor",d.allowResize?"col-resize":""))}).on("mouseleave",function(){f(this);w.eventMoveElem||(d.allowResize=!1,o.css("cursor",""))}).on("mousedown",function(e){var t,a=f(this);d.allowResize&&(t=a.data("key"),e.preventDefault(),d.offset=[e.clientX,e.clientY],c.cssRules(t,function(e){var t=e.style.width||a.outerWidth();d.rule=e,d.ruleWidth=parseFloat(t),d.minWidth=a.data("minwidth")||s.cellMinWidth,d.maxWidth=a.data("maxwidth")||s.cellMaxWidth}),a.data(S,d),w.eventMoveElem=a)}),w.docEvent||F.on("mousemove",function(e){var t,a;w.eventMoveElem&&(t=w.eventMoveElem.data(S)||{},w.eventMoveElem.data("resizing",1),e.preventDefault(),t.rule)&&(e=t.ruleWidth+e.clientX-t.offset[0],a=w.eventMoveElem.closest("."+D).attr("lay-id"),a=C(a))&&((e=et.maxWidth&&(e=t.maxWidth),t.rule.style.width=e+"px",a.setGroupWidth(w.eventMoveElem),p.close(c.tipsIndex))}).on("mouseup",function(e){var t,a,i,l,n;w.eventMoveElem&&(i=(t=w.eventMoveElem).closest("."+D).attr("lay-id"),a=C(i))&&(i=t.data("key"),l=a.col(i),n=a.config.elem.attr("lay-filter"),d={},o.css("cursor",""),a.scrollPatch(),t.removeData(S),delete w.eventMoveElem,a.cssRules(i,function(e){l.width=parseFloat(e.style.width),layui.event.call(t[0],N,"colResized("+n+")",{col:l,config:a.config})}))}),w.docEvent=!0,e.on("click",function(e){var t=f(this),a=t.find(E),i=a.attr("lay-sort");if(!a[0]||1===t.data("resizing"))return t.removeData("resizing");c.sort({field:t,type:"asc"===i?"desc":"desc"===i?null:"asc",fromEvent:!0})}).find(E+" .layui-edge ").on("click",function(e){var t=f(this),a=t.index(),t=t.parents("th").eq(0).data("field");layui.stope(e),0===a?c.sort({field:t,type:"asc",fromEvent:!0}):c.sort({field:t,type:"desc",fromEvent:!0})}),c.commonMember=function(e){var a=f(this).parents("tr").eq(0).data("index"),t=c.layBody.find('tr[data-index="'+a+'"]'),i=(k.cache[c.key]||[])[a]||{},l={tr:t,config:s,data:k.clearCacheKey(i),dataCache:i,index:a,del:function(){k.cache[c.key][a]=[],t.remove(),c.scrollPatch()},update:function(e,t){c.updateRow({index:a,data:e=e||{},related:t},function(e,t){l.data[e]=t})},setRowChecked:function(e){c.setRowChecked(f.extend({index:a},e))}};return f.extend(l,e)}),a=(c.elem.on("click",'input[name="layTableCheckbox"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=(c.layBody.find('input[name="layTableCheckbox"]'),t.parents("tr").eq(0).data("index")),l=t[0].checked,n="layTableAllChoose"===t.attr("lay-filter");t[0].disabled||(n?c.setRowChecked({index:"all",checked:l}):(c.setRowChecked({index:i,checked:l}),layui.stope(e)),layui.event.call(t[0],N,"checkbox("+u+")",r.call(t[0],{checked:l,type:n?"all":"one",getCol:function(){return c.col(a.data("key"))}})))}),c.elem.on("click",'input[lay-type="layTableRadio"]+',function(e){var t=f(this),a=t.closest("td"),t=t.prev(),i=t[0].checked,l=t.parents("tr").eq(0).data("index");if(layui.stope(e),t[0].disabled)return!1;c.setRowChecked({type:"radio",index:l}),layui.event.call(t[0],N,"radio("+u+")",r.call(t[0],{checked:i,getCol:function(){return c.col(a.data("key"))}}))}),c.layBody.on("mouseenter","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").addClass(M)}).on("mouseleave","tr",function(){var e=f(this),t=e.index();e.data("off")||c.layBody.find("tr:eq("+t+")").removeClass(M)}).on("click","tr",function(e){var t=[".layui-form-checkbox",".layui-form-switch",".layui-form-radio","[lay-unrow]"].join(",");f(e.target).is(t)||f(e.target).closest(t)[0]||a.call(this,"row")}).on("dblclick","tr",function(){a.call(this,"rowDouble")}).on("contextmenu","tr",function(e){s.defaultContextmenu||e.preventDefault(),a.call(this,"rowContextmenu")}),function(e){var t=f(this);t.data("off")||layui.event.call(this,N,e+"("+u+")",r.call(t.children("td")[0]))}),n=function(e,t){var a,i,l;(e=f(e)).data("off")||(l=e.data("field"),i=e.data("key"),i=c.col(i),a=e.closest("tr").data("index"),a=k.cache[c.key][a],e.children(y),(i="function"==typeof i.edit?i.edit(a):i.edit)&&((i=f("textarea"===i?'':''))[0].value=(l=e.data("content")||a[l])===undefined||null===l?"":l,e.find("."+_)[0]||e.append(i),i.focus(),t)&&layui.stope(t))},i=(c.layBody.on("change","."+_,function(){var e=f(this),t=e.parent(),a=this.value,i=e.parent().data("field"),e=e.closest("tr").data("index"),e=k.cache[c.key][e],l=r.call(t[0],{value:a,field:i,oldValue:e[i],td:t,reedit:function(){setTimeout(function(){n(l.td);var e={};e[i]=l.oldValue,l.update(e)})},getCol:function(){return c.col(t.data("key"))}}),e={};e[i]=a,l.update(e),layui.event.call(t[0],N,"edit("+u+")",l)}).on("blur","."+_,function(){f(this).remove()}),c.layBody.on(s.editTrigger,"td",function(e){n(this,e)}).on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),c.layTotal.on("mouseenter","td",function(){t.call(this)}).on("mouseleave","td",function(){t.call(this,"hide")}),"layui-table-grid-down"),t=function(e){var t=f(this),a=t.children(y);t.data("off")||t.parent().hasClass(H)||(e?t.find(".layui-table-grid-down").remove():!(a.prop("scrollWidth")>a.outerWidth()||0'))},l=function(e,t){var a=f(this),i=a.parent(),l=i.data("key"),n=c.col(l),o=i.parent().data("index"),d=i.children(y),i="layui-table-cell-c",r=f('');"tips"===(t=t||n.expandedMode||s.cellExpandedMode)?c.tipsIndex=p.tips(['
              ',d.html(),"
              ",''].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:b.ios||b.android?300:c.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){p.close(t)})}}):(c.elem.find("."+i).trigger("click"),c.cssRules(l,function(e){var t=e.style.width,a=n.expandedWidth||s.cellExpandedWidth;atr").each(function(i){n.cols[i]=[],f(this).children().each(function(e){var t=f(this),a=t.attr("lay-data"),a=r.options(this,{attr:a?"lay-data":null,errorText:d+(a||t.attr("lay-options"))}),t=f.extend({title:t.text(),colspan:parseInt(t.attr("colspan"))||1,rowspan:parseInt(t.attr("rowspan"))||1},a);n.cols[i].push(t)})}),e.find("tbody>tr")),t=k.render(n);!a.length||o.data||t.config.url||(l=0,k.eachCols(t.config.id,function(e,i){a.each(function(e){n.data[e]=n.data[e]||{};var t=f(this),a=i.field;n.data[e][a]=t.children("td").eq(l).html()}),l++}),t.reloadData({data:n.data}))}),this},w.that={},w.config={},function(a,i,e,l){var n,o;l.colGroup&&(n=0,a++,l.CHILD_COLS=[],o=e+(parseInt(l.rowspan)||1),layui.each(i[o],function(e,t){t.parentKey?t.parentKey===l.key&&(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),c(a,i,o,t)):t.PARENT_COL_INDEX||1<=n&&n==(l.colspan||1)||(t.PARENT_COL_INDEX=a,l.CHILD_COLS.push(t),n+=parseInt(1td').filter('[data-field="'+e+'"]')}}})).replace(/"/g,'""'),n.push(a='"'+a+'"')):t.field&&"normal"!==t.type&&0==i&&(r[t.field]=!0)}),d.push(n.join(","))}),c&&layui.each(c.dataTotal,function(e,t){r[t.field]||i.push('"'+(t.total||"")+'"')}),o.join(",")+"\r\n"+d.join("\r\n")+"\r\n"+i.join(","))),u.download=(a.title||n.title||"table_"+(n.index||""))+"."+l,document.body.appendChild(u),u.click(),document.body.removeChild(u)},k.getOptions=l,k.hideCol=function(e,l){var n=C(e);n&&("boolean"===layui.type(l)?n.eachCols(function(e,t){var a=t.key,i=n.col(a),t=t.parentKey;i.hide!=l&&(i=i.hide=l,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))}):(l=layui.isArray(l)?l:[l],layui.each(l,function(e,l){n.eachCols(function(e,t){var a,i;l.field===t.field&&(a=t.key,i=n.col(a),t=t.parentKey,"hide"in l)&&i.hide!=l.hide&&(i=i.hide=!!l.hide,n.elem.find('*[data-key="'+a+'"]')[i?"addClass":"removeClass"](R),n.setParentCol(i,t))})})),f("."+j).remove(),n.resize())},k.reload=function(e,t,a,i){if(l(e))return(e=C(e)).reload(t,a,i),w.call(e)},k.reloadData=function(){var a=f.extend([],arguments),i=(a[3]="reloadData",new RegExp("^("+["elem","id","cols","width","height","maxHeight","toolbar","defaultToolbar","className","css","pagebar"].join("|")+")$"));return layui.each(a[1],function(e,t){i.test(e)&&delete a[1][e]}),k.reload.apply(null,a)},k.render=function(e){e=new i(e);return w.call(e)},k.clearCacheKey=function(e){return delete(e=f.extend({},e))[k.config.checkName],delete e[k.config.indexName],delete e[k.config.numbersName],delete e[k.config.disabledName],e},f(function(){k.init()}),n(N,k)});layui.define(["table"],function(e){"use strict";var E=layui.$,x=layui.form,B=layui.table,y=layui.hint(),j={config:{},on:B.on,eachCols:B.eachCols,index:B.index,set:function(e){var t=this;return t.config=E.extend({},t.config,e),t},resize:B.resize,getOptions:B.getOptions,hideCol:B.hideCol,renderData:B.renderData},i=function(){var a=this,e=a.config,n=e.id||e.index;return{config:e,reload:function(e,t){a.reload.call(a,e,t)},reloadData:function(e,t){j.reloadData(n,e,t)}}},P=function(e){var t=i.that[e];return t||y.error(e?"The treeTable instance with ID '"+e+"' not found":"ID argument required"),t||null},F="layui-hide",L=".layui-table-main",q=".layui-table-fixed-l",R=".layui-table-fixed-r",l="layui-table-checked",h="layui-table-tree",Y="LAY_DATA_INDEX",m="LAY_DATA_INDEX_HISTORY",s="LAY_PARENT_INDEX",b="LAY_CHECKBOX_HALF",H="LAY_EXPAND",z="LAY_HAS_EXPANDED",X="LAY_ASYNC_STATUS",n=["all","parent","children","none"],t=function(e){var t=this;t.index=++j.index,t.config=E.extend(!0,{},t.config,j.config,e),t.init(),t.render()},f=function(n,i,e){var l=B.cache[n];layui.each(e||l,function(e,t){var a=t[Y]||"";-1!==a.indexOf("-")&&(l[a]=t),t[i]&&f(n,i,t[i])})},d=function(l,a,e){var d=P(l),r=("reloadData"!==e&&(d.status={expand:{}}),E.extend(!0,{},d.getOptions(),a)),n=r.tree,o=n.customName.children,i=n.customName.id,c=(delete a.hasNumberCol,delete a.hasChecboxCol,delete a.hasRadioCol,B.eachCols(null,function(e,t){"numbers"===t.type?a.hasNumberCol=!0:"checkbox"===t.type?a.hasChecboxCol=!0:"radio"===t.type&&(a.hasRadioCol=!0)},r.cols),a.parseData),u=a.done;r.url?e&&(!c||c.mod)||(a.parseData=function(){var e=this,t=arguments,a=t[0],t=("function"===layui.type(c)&&(a=c.apply(e,t)||t[0]),e.response.dataName);return n.data.isSimpleData&&!n["async"].enable&&(a[t]=d.flatToTree(a[t])),p(a[t],function(e){e[H]=H in e?e[H]:e[i]!==undefined&&d.status.expand[e[i]]},o),e.autoSort&&e.initSort&&e.initSort.type&&layui.sort(a[t],e.initSort.field,"desc"===e.initSort.type,!0),d.initData(a[t]),a},a.parseData.mod=!0):(a.data=a.data||[],n.data.isSimpleData&&(a.data=d.flatToTree(a.data)),d.initData(a.data)),e&&(!u||u.mod)||(a.done=function(){var e,t=arguments,a=t[3],n=(a||delete d.isExpandAll,this.elem.next()),i=(d.updateStatus(null,{LAY_HAS_EXPANDED:!1}),f(l,o),n.find('[name="layTableCheckbox"][lay-filter="layTableAllChoose"]'));if(i.length&&(e=j.checkStatus(l),i.prop({checked:e.isAll&&e.data.length,indeterminate:!e.isAll&&e.data.length})),!a&&r.autoSort&&r.initSort&&r.initSort.type&&j.sort(l),d.renderTreeTable(n),"function"===layui.type(u))return u.apply(this,t)},a.done.mod=!0)};t.prototype.init=function(){var e=this.config,t=e.tree.data.cascade,t=(-1===n.indexOf(t)&&(e.tree.data.cascade="all"),B.render(E.extend({},e,{data:[],url:"",done:null}))),a=t.config.id;(i.that[a]=this).tableIns=t,d(a,e)},t.prototype.config={tree:{customName:{children:"children",isParent:"isParent",name:"name",id:"id",pid:"parentId",icon:"icon"},view:{indent:14,flexIconClose:'',flexIconOpen:'',showIcon:!0,icon:"",iconClose:'',iconOpen:'',iconLeaf:'',showFlexIconIfNotParent:!1,dblClickExpand:!0,expandAllDefault:!1},data:{isSimpleData:!1,rootPid:null,cascade:"all"},"async":{enable:!1,url:"",type:null,contentType:null,headers:null,where:null,autoParam:[]},callback:{beforeExpand:null,onExpand:null}}},t.prototype.getOptions=function(){return this.tableIns?B.getOptions(this.tableIns.config.id):this.config},t.prototype.flatToTree=function(e){var a,n,i,t,l,d,r,o=this.getOptions(),c=o.tree,u=c.customName,o=o.id;return e=e||B.cache[o],o=e,a=u.id,n=u.pid,i=u.children,t=c.data.rootPid,a=a||"id",n=n||"parentId",i=i||"children",r={},layui.each(o,function(e,t){l=a+t[a],r[l]=E.extend({},t),r[l][i]=[]}),layui.each(r,function(e,t){(d=a+t[n])&&r[d]&&r[d][i].push(t)}),Object.keys(r).map(function(e){return r[e]}).filter(function(e){return t?e[n]===t:!e[n]})},t.prototype.treeToFlat=function(e,n,i){var l=this,d=l.getOptions().tree.customName,r=d.children,o=d.pid,c=[];return layui.each(e,function(e,t){var e=(i?i+"-":"")+e,a=E.extend({},t);a[o]=t[o]||n,c.push(a),c=c.concat(l.treeToFlat(t[r],t[d.id],e))}),c},t.prototype.getTreeNode=function(e){var t,a,n=this;return e?(a=(t=n.getOptions()).tree,t.id,a.customName,{data:e,dataIndex:e[Y],getParentNode:function(){return n.getNodeByIndex(e[s])}}):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeByIndex=function(t){var a,e,n=this,i=n.getNodeDataByIndex(t);return i?((e=n.getOptions()).tree.customName.parent,a=e.id,(e={data:i,dataIndex:i[Y],getParentNode:function(){return n.getNodeByIndex(i[s])},update:function(e){return j.updateNode(a,t,e)},remove:function(){return j.removeNode(a,t)},expand:function(e){return j.expandNode(a,E.extend({},e,{index:t}))},setChecked:function(e){return j.setRowChecked(a,E.extend({},e,{index:t}))}}).dataIndex=t,e):y.error("\u627e\u4e0d\u5230\u8282\u70b9\u6570\u636e")},t.prototype.getNodeById=function(a){var e=this.getOptions(),n=e.tree.customName.id,i="",e=j.getData(e.id,!0);if(layui.each(e,function(e,t){if(t[n]===a)return i=t[Y],!0}),i)return this.getNodeByIndex(i)},t.prototype.getNodeDataByIndex=function(e,t,a){var n=this.getOptions(),i=n.tree,n=n.id,n=B.cache[n],l=n[e];if("delete"!==a&&l)return E.extend(l,a),t?E.extend({},l):l;for(var d=n,r=String(e).split("-"),o=0,c=i.customName.children;o
              '),N=function(e){y[X]="success",y[s.children]=e,c.initData(y[s.children],y[Y]),U(t,!0,!p&&n,i,l)},C=m.format,"function"===layui.type(C)?C(y,o,N):(I=E.extend({},m.where||o.where),C=m.autoParam,layui.each(C,function(e,t){t=t.split("=");I[t[0].trim()]=y[(t[1]||t[0]).trim()]}),(C=m.contentType||o.contentType)&&0==C.indexOf("application/json")&&(I=JSON.stringify(I)),w=m.method||o.method,D=m.dataType||o.dataType,T=m.jsonpCallback||o.jsonpCallback,k=m.headers||o.headers,_=m.parseData||o.parseData,O=m.response||o.response,E.ajax({type:w||"get",url:b,contentType:C,data:I,dataType:D||"json",jsonpCallback:T,headers:k||{},success:function(e){(e="function"==typeof _?_.call(o,e)||e:e)[O.statusName]!=O.statusCode?(y[X]="error",g.html('')):N(e[O.dataName])},error:function(e,t){y[X]="error","function"==typeof o.error&&o.error(e,t)}})),h;y[z]=!0,v.length&&(!o.initSort||o.url&&!o.autoSort||((m=o.initSort).type?layui.sort(v,m.field,"desc"===m.type,!0):layui.sort(v,B.config.indexName,null,!0)),c.initData(y[s.children],y[Y]),w=B.getTrHtml(r,v,null,null,e),S={trs:E(w.trs.join("")),trs_fixed:E(w.trs_fixed.join("")),trs_fixed_r:E(w.trs_fixed_r.join(""))},A=(e.split("-").length-1||0)+1,layui.each(v,function(e,t){S.trs.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A}),S.trs_fixed_r.eq(e).attr({"data-index":t[Y],"lay-data-index":t[Y],"data-level":A})}),d.find(L).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs),d.find(q).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed),d.find(R).find('tbody tr[lay-data-index="'+e+'"]').after(S.trs_fixed_r),c.renderTreeTable(S.trs,A),n)&&!p&&layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)})}else c.isExpandAll=!1,(n&&!p?(layui.each(v,function(e,t){U({dataIndex:t[Y],trElem:d.find('tr[lay-data-index="'+t[Y]+'"]').first(),tableViewElem:d,tableId:r,options:o},a,n,i,l)}),d.find(v.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(","))):(b=c.treeToFlat(v,y[s.id],e),d.find(b.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))).addClass(F);V("resize-"+r,function(){j.resize(r)},0)(),l&&"loading"!==y[X]&&(C=u.callback.onExpand,"function"===layui.type(C))&&C(r,y,x)}return h},g=(j.expandNode=function(e,t){var a,n,i,e=P(e);if(e)return a=(t=t||{}).index,n=t.expandFlag,i=t.inherit,t=t.callbackFlag,e=e.getOptions().elem.next(),U({trElem:e.find('tr[lay-data-index="'+a+'"]').first()},n,i,null,t)},j.expandAll=function(a,e){if("boolean"!==layui.type(e))return y.error("expandAll \u7684\u5c55\u5f00\u72b6\u6001\u53c2\u6570\u53ea\u63a5\u6536true/false");var t=P(a);if(t){t.isExpandAll=e;var n=t.getOptions(),i=n.tree,l=n.elem.next(),d=i.customName.isParent,r=i.customName.id,o=i.view.showFlexIconIfNotParent;if(e){e=j.getData(a,!0);if(i["async"].enable){var c=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[X])return!(c=!1)}),!c)return void layui.each(j.getData(a),function(e,t){j.expandNode(a,{index:t[Y],expandFlag:!0,inherit:!0})})}var u=!0;if(layui.each(e,function(e,t){if(t[d]&&!t[z])return!(u=!1)}),u)t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),l.find('tbody tr[data-level!="0"]').removeClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconOpen),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconOpen);else{if(t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!0,e[z]=!0,e[r]!==undefined)&&(t.status.expand[e[r]]=!0)}),n.initSort&&n.initSort.type&&n.autoSort)return j.sort(a);var s,n=B.getTrHtml(a,e),f={trs:E(n.trs.join("")),trs_fixed:E(n.trs_fixed.join("")),trs_fixed_r:E(n.trs_fixed_r.join(""))};layui.each(e,function(e,t){var a=t[Y].split("-").length-1;s={"data-index":t[Y],"lay-data-index":t[Y],"data-level":a},f.trs.eq(e).attr(s),f.trs_fixed.eq(e).attr(s),f.trs_fixed_r.eq(e).attr(s)}),layui.each(["main","fixed-l","fixed-r"],function(e,t){l.find(".layui-table-"+t+" tbody").html(f[["trs","trs_fixed","trs_fixed_r"][e]])}),t.renderTreeTable(l,0,!1)}}else t.updateStatus(null,function(e){(e[d]||o)&&(e[H]=!1,e[r]!==undefined)&&(t.status.expand[e[r]]=!1)}),l.find('.layui-table-box tbody tr[data-level!="0"]').addClass(F),l.find(".layui-table-tree-flexIcon").html(i.view.flexIconClose),i.view.showIcon&&l.find(".layui-table-tree-nodeIcon:not(.layui-table-tree-iconCustom,.layui-table-tree-iconLeaf)").html(i.view.iconClose);j.resize(a)}},t.prototype.renderTreeTable=function(e,t,a){var n=this,i=n.getOptions(),l=i.elem.next(),d=(l.hasClass(h)||l.addClass(h),i.id),r=i.tree||{},o=(r.data,r.view||{}),c=r.customName||{},u=c.isParent,s=(l.attr("lay-filter"),n),f=((t=t||0)||(l.find(".layui-table-body tr:not([data-level])").attr("data-level",t),layui.each(B.cache[d],function(e,t){l.find('.layui-table-main tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-l tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y]),l.find('.layui-table-fixed-r tbody tr[data-level="0"]:eq('+e+")").attr("lay-data-index",t[Y])})),null),y=c.name,p=o.indent||14;if(layui.each(e.find('td[data-field="'+y+'"]'),function(e,t){var a,n,i=(t=E(t)).closest("tr"),t=t.children(".layui-table-cell");t.hasClass("layui-table-tree-item")||(n=i.attr("lay-data-index"))&&(i=l.find('tr[lay-data-index="'+n+'"]'),(a=s.getNodeDataByIndex(n))[H]&&a[u]&&((f=f||{})[n]=!0),a[b]&&i.find('input[type="checkbox"][name="layTableCheckbox"]').prop("indeterminate",!0),n=t.html(),(t=i.find('td[data-field="'+y+'"]>div.layui-table-cell')).addClass("layui-table-tree-item"),t.html(['
              ',a[H]?o.flexIconOpen:o.flexIconClose,"
              ",o.showIcon?'
              '+(a[c.icon]||o.icon||(a[u]?a[H]?o.iconOpen:o.iconClose:o.iconLeaf)||"")+"
              ":"",n].join("")).find(".layui-table-tree-flexIcon").on("click",function(e){layui.stope(e),U({trElem:i},null,null,null,!0)}))}),!t&&r.view.expandAllDefault&&n.isExpandAll===undefined)return j.expandAll(d,!0);(!1!==a&&f?(layui.each(f,function(e,t){e=l.find('tr[lay-data-index="'+e+'"]');e.find(".layui-table-tree-flexIcon").html(o.flexIconOpen),U({trElem:e.first()},!0)}),V("renderTreeTable2-"+d,function(){x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0)):V("renderTreeTable-"+d,function(){i.hasNumberCol&&g(n),x.render(E('.layui-table-tree[lay-id="'+d+'"]'))},0))()},function(a){var e=a.getOptions(),t=e.elem.next(),n=0,i=t.find(".layui-table-main tbody tr"),l=t.find(".layui-table-fixed-l tbody tr"),d=t.find(".layui-table-fixed-r tbody tr");layui.each(a.treeToFlat(B.cache[e.id]),function(e,t){t.LAY_HIDE||(a.getNodeDataByIndex(t[Y]).LAY_NUM=++n,i.eq(e).find(".laytable-cell-numbers").html(n),l.eq(e).find(".laytable-cell-numbers").html(n),d.eq(e).find(".laytable-cell-numbers").html(n))})}),p=(t.prototype.render=function(e){var t=this;t.tableIns=B["reloadData"===e?"reloadData":"reload"](t.tableIns.config.id,E.extend(!0,{},t.config)),t.config=t.tableIns.config},t.prototype.reload=function(e,t,a){var n=this;e=e||{},delete n.haveInit,layui.each(e,function(e,t){"array"===layui.type(t)&&delete n.config[e]}),d(n.getOptions().id,e,a||!0),n.config=E.extend(t,{},n.config,e),n.render(a)},j.reloadData=function(){var e=E.extend(!0,[],arguments);return e[3]="reloadData",j.reload.apply(null,e)},function(e,a,n,i){var l=[];return layui.each(e,function(e,t){"function"===layui.type(a)?a(t):E.extend(t,a),l.push(E.extend({},t)),i||(l=l.concat(p(t[n],a,n,i)))}),l}),o=(t.prototype.updateStatus=function(e,t,a){var n=this.getOptions(),i=n.tree;return e=e||B.cache[n.id],p(e,t,i.customName.children,a)},t.prototype.getTableData=function(){var e=this.getOptions();return B.cache[e.id]},j.updateStatus=function(e,t,a){var e=P(e),n=e.getOptions();return a=a||(n.url?B.cache[n.id]:n.data),e.updateStatus(a,t)},j.sort=function(e){var t=P(e);t&&t.getOptions().autoSort&&(t.initData(),j.renderData(e))},function(n){var t=n.config.id,i=P(t),a=n.data=j.getNodeDataByIndex(t,n.index),l=a[Y],d=(n.dataIndex=l,n.update);n.update=function(){var e=arguments,t=(E.extend(i.getNodeDataByIndex(l),e[0]),d.apply(this,e)),a=n.config.tree.customName.name;return a in e[0]&&n.tr.find('td[data-field="'+a+'"]').children("div.layui-table-cell").removeClass("layui-table-tree-item"),i.renderTreeTable(n.tr,n.tr.attr("data-level"),!1),t},n.del=function(){j.removeNode(t,a)},n.setRowChecked=function(e){j.setRowChecked(t,{index:a,checked:e})}}),u=(j.updateNode=function(e,a,t){var n,i,l,d,r,o=P(e);o&&((d=o.getOptions()).tree,d=(n=d.elem.next()).find('tr[lay-data-index="'+a+'"]'),i=d.attr("data-index"),l=d.attr("data-level"),t)&&(d=o.getNodeDataByIndex(a,!1,t),r=B.getTrHtml(e,[d]),layui.each(["main","fixed-l","fixed-r"],function(e,t){n.find(".layui-table-"+t+' tbody tr[lay-data-index="'+a+'"]').replaceWith(E(r[["trs","trs_fixed","trs_fixed_r"][e]].join("")).attr({"data-index":i,"lay-data-index":a,"data-level":l}))}),o.renderTreeTable(n.find('tr[lay-data-index="'+a+'"]'),l))},j.removeNode=function(e,t){var a,n,i,l,d,r=P(e);r&&(d=(a=r.getOptions()).tree,n=a.elem.next(),i=[],t=r.getNodeDataByIndex("string"===layui.type(t)?t:t[Y],!1,"delete"),l=r.getNodeDataByIndex(t[s]),r.updateCheckStatus(l),l=r.treeToFlat([t],t[d.customName.pid],t[s]),layui.each(l,function(e,t){i.push('tr[lay-data-index="'+t[Y]+'"]')}),n.find(i.join(",")).remove(),d=r.initData(),layui.each(r.treeToFlat(d),function(e,t){t[m]&&t[m]!==t[Y]&&n.find('tr[lay-data-index="'+t[m]+'"]').attr({"data-index":t[Y],"lay-data-index":t[Y]})}),layui.each(B.cache[e],function(e,t){n.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.hasNumberCol&&g(r),j.resize(e))},j.addNodes=function(e,t){var a=P(e);if(a){var n=a.getOptions(),i=n.tree,l=n.elem.next(),d=B.config.checkName,r=(t=t||{}).parentIndex,o=t.index,c=t.data,t=t.focus,u=(r="number"===layui.type(r)?r.toString():r)?a.getNodeDataByIndex(r):null,o="number"===layui.type(o)?o:-1,c=E.extend(!0,[],layui.isArray(c)?c:[c]);layui.each(c,function(e,t){d in t||!u||(t[d]=u[d])}),a.getTableData();if(u){var s=i.customName.isParent,f=i.customName.children;u[s]=!0;var y=(y=u[f])?(p=y.splice(-1===o?y.length:o),u[f]=y.concat(c,p)):u[f]=c,f=(a.updateStatus(y,function(e){(e[s]||i.view.showFlexIconIfNotParent)&&(e[z]=!1)}),a.treeToFlat(y));l.find(f.map(function(e){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")).remove(),a.initData(),u[z]=!1,u[X]="local",U({trElem:l.find('tr[lay-data-index="'+r+'"]')},!0)}else{var p=B.cache[e].splice(-1===o?B.cache[e].length:o);if(B.cache[e]=B.cache[e].concat(c,p),n.url||(n.page?(y=n.page,n.data.splice.apply(n.data,[y.limit*(y.curr-1),y.limit].concat(B.cache[e]))):n.data=B.cache[e]),a.initData(),l.find(".layui-none").length)return B.renderData(e),c;var x,f=B.getTrHtml(e,c),h={trs:E(f.trs.join("")),trs_fixed:E(f.trs_fixed.join("")),trs_fixed_r:E(f.trs_fixed_r.join(""))},r=(layui.each(c,function(e,t){x={"data-index":t[Y],"lay-data-index":t[Y],"data-level":"0"},h.trs.eq(e).attr(x),h.trs_fixed.eq(e).attr(x),h.trs_fixed_r.eq(e).attr(x)}),parseInt(c[0][Y])-1),y=l.find(L),n=l.find(q),f=l.find(R);-1==r?(y.find('tr[data-level="0"][data-index="0"]').before(h.trs),n.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="0"]').before(h.trs_fixed_r)):-1===o?(y.find("tbody").append(h.trs),n.find("tbody").append(h.trs_fixed),f.find("tbody").append(h.trs_fixed_r)):(r=p[0][m],y.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs),n.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed),f.find('tr[data-level="0"][data-index="'+r+'"]').before(h.trs_fixed_r)),layui.each(B.cache[e],function(e,t){l.find('tr[data-level="0"][lay-data-index="'+t[Y]+'"]').attr("data-index",e)}),a.renderTreeTable(l.find(c.map(function(e,t,a){return'tr[lay-data-index="'+e[Y]+'"]'}).join(",")))}return a.updateCheckStatus(u),j.resize(e),t&&l.find(L).find('tr[lay-data-index="'+c[0][Y]+'"]').get(0).scrollIntoViewIfNeeded(),c}},j.checkStatus=function(e,n){var i,t,a,l=P(e);if(l)return l=l.getOptions().tree,i=B.config.checkName,t=j.getData(e,!0).filter(function(e,t,a){return e[i]||n&&e[b]}),a=!0,layui.each("all"===l.data.cascade?B.cache[e]:j.getData(e,!0),function(e,t){if(!t[i])return!(a=!1)}),{data:t,isAll:a}},j.on("sort",function(e){var e=e.config,t=e.elem.next(),e=e.id;t.hasClass(h)&&j.sort(e)}),j.on("row",function(e){e.config.elem.next().hasClass(h)&&o(e)}),j.on("rowDouble",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),(t.tree||{}).view.dblClickExpand)&&U({trElem:e.tr.first()},null,null,null,!0)}),j.on("rowContextmenu",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("tool",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&o(e)}),j.on("edit",function(e){var t=e.config,a=t.elem.next();t.id;a.hasClass(h)&&(o(e),e.field===t.tree.customName.name)&&((a={})[e.field]=e.value,e.update(a))}),j.on("radio",function(e){var t=e.config,a=t.elem.next(),t=t.id;a.hasClass(h)&&(a=P(t),o(e),u.call(a,e.tr,e.checked))}),t.prototype.setRowCheckedClass=function(e,t){var a=this.getOptions(),n=(e.data("index"),a.elem.next());e[t?"addClass":"removeClass"](l),e.each(function(){var e=E(this).data("index");n.find('.layui-table-fixed-r tbody tr[data-index="'+e+'"]')[t?"addClass":"removeClass"](l)})},t.prototype.updateCheckStatus=function(e,t){var a,n,i,l,d,r,o,c=this,u=c.getOptions();return!!u.hasChecboxCol&&(a=u.tree,n=u.id,i=u.elem.next(),l=B.config.checkName,"all"!==(d=a.data.cascade)&&"parent"!==d||!e||(d=c.updateParentCheckStatus(e,"boolean"===layui.type(t)?t:null),layui.each(d,function(e,t){var a=i.find('tr[lay-data-index="'+t[Y]+'"] input[name="layTableCheckbox"]:not(:disabled)'),n=t[l];c.setRowCheckedClass(a.closest("tr"),n),x.render(a.prop({checked:n,indeterminate:t[b]}))})),o=!(r=!0),e=(e="all"===a.data.cascade?B.cache[n]:j.getData(n,!0)).filter(function(e){return!e[u.disabledName]}),layui.each(e,function(e,t){if((t[l]||t[b])&&(o=!0),t[l]||(r=!1),o&&!r)return!0}),o=o&&!r,x.render(i.find('input[name="layTableCheckbox"][lay-filter="layTableAllChoose"]').prop({checked:r,indeterminate:o})),r)},t.prototype.updateParentCheckStatus=function(a,n){var i,e=this.getOptions(),t=e.tree,e=e.id,l=B.config.checkName,t=t.customName.children,d=[];return!(a[b]=!1)===n?a[t].length?layui.each(a[t],function(e,t){if(!t[l])return n=!1,a[b]=!0}):n=!1:!1===n?layui.each(a[t],function(e,t){if(t[l]||t[b])return a[b]=!0}):(n=!1,i=0,layui.each(a[t],function(e,t){t[l]&&i++}),n=a[t].length?a[t].length===i:a[l],a[b]=!n&&0')),n=(e.tree(a),i.elem=p(i.elem));if(n[0]){if(e.key=i.id||e.index,e.elem=a,e.elemNone=p('
              '+i.text.none+"
              "),n.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);i.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=p(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(T),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(T)}),e.events()}},l.prototype.renderForm=function(e){i.render(e,"LAY-tree-"+this.index)},l.prototype.tree=function(r,e){var d=this,s=d.config,o=s.customName,e=e||s.data;layui.each(e,function(e,i){var a,n,t=i[o.children]&&0"),c=p(['
              ','
              ','
              ',s.showLine?t?'':'':'',s.showCheckbox?'':"",s.isJump&&i.href?''+(i[o.title]||i.label||s.text.defaultNodeName)+"":''+(i[o.title]||i.label||s.text.defaultNodeName)+"","
              ",s.edit?(a={add:'',update:'',del:''},n=['
              '],!0===s.edit&&(s.edit=["update","del"]),"object"==typeof s.edit?(layui.each(s.edit,function(e,i){n.push(a[i]||"")}),n.join("")+"
              "):void 0):"","
              "].join(""));t&&(c.append(l),d.tree(l,i[o.children])),r.append(c),c.prev("."+k)[0]&&c.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),t||c.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),d.spread(c,i),s.showCheckbox&&(i.checked&&d.checkids.push(i[o.id]),d.checkClick(c,i)),s.edit&&d.operate(c,i)})},l.prototype.spread=function(n,t){var l=this,c=l.config,e=n.children("."+b),i=e.children("."+g),a=i.find('input[same="layuiTreeCheck"]'),r=e.find("."+C),e=e.find("."+w),d=c.onlyIconControl?r:i,s="";d.on("click",function(e){var i=n.children("."+N),a=(d.children(".layui-icon")[0]?d:d.find(".layui-tree-icon")).children(".layui-icon");i[0]?n.hasClass(F)?(n.removeClass(F),i.slideUp(200),a.removeClass(x).addClass(v),l.updateFieldValue(t,"spread",!1)):(n.addClass(F),i.slideDown(200),a.addClass(x).removeClass(v),l.updateFieldValue(t,"spread",!0),c.accordion&&((i=n.siblings("."+k)).removeClass(F),i.children("."+N).slideUp(200),i.find(".layui-tree-icon").children(".layui-icon").removeClass(x).addClass(v))):s="normal"}),e.on("click",function(){p(this).hasClass(u)||(s=n.hasClass(F)?c.onlyIconControl?"open":"close":c.onlyIconControl?"close":"open",a[0]&&l.updateFieldValue(t,"checked",a.prop("checked")),c.click&&c.click({elem:n,state:s,data:t}))})},l.prototype.updateFieldValue=function(e,i,a){i in e&&(e[i]=a)},l.prototype.setCheckbox=function(e,i,a){var t,n=this,l=n.config.customName,c=a.prop("checked");a.prop("disabled")||("object"!=typeof i[l.children]&&!e.find("."+N)[0]||e.find("."+N).find('input[same="layuiTreeCheck"]').each(function(e){this.disabled||((e=i[l.children][e])&&n.updateFieldValue(e,"checked",c),n.updateFieldValue(this,"checked",c))}),(t=function(e){var i,a,n;e.parents("."+k)[0]&&(a=(e=e.parent("."+N)).parent(),n=e.prev().find('input[same="layuiTreeCheck"]'),c?n.prop("checked",c):(e.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||n.prop("checked",!1)),t(a))})(e),n.renderForm("checkbox"))},l.prototype.checkClick=function(a,n){var t=this,l=t.config;a.children("."+b).children("."+g).on("click",'input[same="layuiTreeCheck"]+',function(e){layui.stope(e);var e=p(this).prev(),i=e.prop("checked");e.prop("disabled")||(t.setCheckbox(a,n,e),t.updateFieldValue(n,"checked",i),l.oncheck&&l.oncheck({elem:a,checked:i,data:n}))})},l.prototype.operate=function(r,d){var s=this,o=s.config,u=o.customName,e=r.children("."+b),h=e.children("."+g);e.children(".layui-tree-btnGroup").on("click",".layui-icon",function(e){layui.stope(e);var i,e=p(this).data("type"),n=r.children("."+N),t={data:d,type:e,elem:r};if("add"==e){n[0]||(o.showLine?(h.find("."+C).addClass("layui-tree-icon"),h.find("."+C).children(".layui-icon").addClass(v).removeClass("layui-icon-file")):h.find(".layui-tree-iconArrow").removeClass(m),r.append('
              '));var a,l=o.operate&&o.operate(t),c={};if(c[u.title]=o.text.defaultNodeName,c[u.id]=l,s.tree(r.children("."+N),[c]),o.showLine&&(n[0]?(n.hasClass(S)||n.addClass(S),r.find("."+N).each(function(){p(this).children("."+k).last().addClass(T)}),(n.children("."+k).last().prev().hasClass(T)?n.children("."+k).last().prev():n.children("."+k).last()).removeClass(T),!r.parent("."+N)[0]&&r.next()[0]&&n.children("."+k).last().removeClass(T)):(l=r.siblings("."+k),a=1,c=r.parent("."+N),layui.each(l,function(e,i){p(i).children("."+N)[0]||(a=0)}),(1==a?(l.children("."+N).addClass(L),l.children("."+N).children("."+k).removeClass(T),r.children("."+N).addClass(L),c.removeClass(S),c.children("."+k).last().children("."+N).children("."+k).last()):r.children("."+N).children("."+k)).addClass(T))),!o.showCheckbox)return;h.find('input[same="layuiTreeCheck"]')[0].checked&&(r.children("."+N).children("."+k).last().find('input[same="layuiTreeCheck"]')[0].checked=!0),s.renderForm("checkbox")}else"update"==e?(l=h.children("."+w).html(),h.children("."+w).html(""),h.append(''),h.children(".layui-tree-editInput").val(f.unescape(l)).focus(),i=function(e){var i=e.val().trim()||o.text.defaultNodeName;e.remove(),h.children("."+w).html(i),t.data[u.title]=i,o.operate&&o.operate(t)},h.children(".layui-tree-editInput").blur(function(){i(p(this))}),h.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),i(p(this)))})):y.confirm('\u786e\u8ba4\u5220\u9664\u8be5\u8282\u70b9 "'+(d[u.title]||"")+'" \u5417\uff1f',function(e){var l,a,i;o.operate&&o.operate(t),t.status="remove",y.close(e),r.prev("."+k)[0]||r.next("."+k)[0]||r.parent("."+N)[0]?(r.siblings("."+k).children("."+b)[0]?(o.showCheckbox&&(l=function(e){var i,a,n,t;e.parents("."+k)[0]&&(i=e.siblings("."+k).children("."+b),a=(e=e.parent("."+N).prev()).find('input[same="layuiTreeCheck"]')[0],n=1,(t=0)==a.checked)&&(i.each(function(e,i){i=p(i).find('input[same="layuiTreeCheck"]')[0];0!=i.checked||i.disabled||(n=0),i.disabled||(t=1)}),1==n)&&1==t&&(a.checked=!0,s.renderForm("checkbox"),l(e.parent("."+k)))})(r),o.showLine&&(e=r.siblings("."+k),a=1,i=r.parent("."+N),layui.each(e,function(e,i){p(i).children("."+N)[0]||(a=0)}),1==a?(n[0]||(i.removeClass(S),e.children("."+N).addClass(L),e.children("."+N).children("."+k).removeClass(T)),(r.next()[0]?i.children("."+k).last():r.prev()).children("."+N).children("."+k).last().addClass(T),r.next()[0]||r.parents("."+k)[1]||r.parents("."+k).eq(0).next()[0]||r.prev("."+k).addClass(T)):!r.next()[0]&&r.hasClass(T)&&r.prev().addClass(T))):(e=r.parent("."+N).prev(),o.showLine?(e.find("."+C).removeClass("layui-tree-icon"),e.find("."+C).children(".layui-icon").removeClass(x).addClass("layui-icon-file"),(i=e.parents("."+N).eq(0)).addClass(S),i.children("."+k).each(function(){p(this).children("."+N).children("."+k).last().addClass(T)})):e.find(".layui-tree-iconArrow").addClass(m),r.parents("."+k).eq(0).removeClass(F),r.parent("."+N).remove()),r.remove()):(r.remove(),s.elem.append(s.elemNone))})})},l.prototype.events=function(){var i=this,t=i.config;i.elem.find(".layui-tree-checkedFirst");i.setChecked(i.checkids),i.elem.find(".layui-tree-search").on("keyup",function(){var e=p(this),a=e.val(),e=e.nextAll(),n=[];e.find("."+w).each(function(){var i,e=p(this).parents("."+b);-1!=p(this).html().indexOf(a)&&(n.push(p(this).parent()),(i=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+N)[0]&&i(e.parent("."+N).parent("."+k))})(e.parent("."+k)))}),e.find("."+b).each(function(){var e=p(this).parent("."+k);e.hasClass("layui-tree-searchShow")||e.addClass(m)}),0==e.find(".layui-tree-searchShow").length&&i.elem.append(i.elemNone),t.onsearch&&t.onsearch({elem:n})}),i.elem.find(".layui-tree-search").on("keydown",function(){p(this).nextAll().find("."+b).each(function(){p(this).parent("."+k).removeClass("layui-tree-searchShow "+m)}),p(".layui-tree-emptyText")[0]&&p(".layui-tree-emptyText").remove()})},l.prototype.getChecked=function(){var t=this,e=t.config,l=e.customName,i=[],a=[],c=(t.elem.find(".layui-form-checked").each(function(){i.push(p(this).prev()[0].value)}),function(e,n){layui.each(e,function(e,a){layui.each(i,function(e,i){if(a[l.id]==i)return t.updateFieldValue(a,"checked",!0),delete(i=p.extend({},a))[l.children],n.push(i),a[l.children]&&(i[l.children]=[],c(a[l.children],i[l.children])),!0})})});return c(p.extend({},e.data),a),a},l.prototype.setChecked=function(l){this.config;this.elem.find("."+k).each(function(e,i){var a=p(this).data("id"),n=p(i).children("."+b).find('input[same="layuiTreeCheck"]'),t=n.next();if("number"==typeof l){if(a.toString()==l.toString())return n[0].checked||t.click(),!1}else"object"==typeof l&&layui.each(l,function(e,i){if(i.toString()==a.toString()&&!n[0].checked)return t.click(),!0})})},n.that={},n.config={},t.reload=function(e,i){e=n.that[e];return e.reload(i),n.call(e)},t.getChecked=function(e){return n.that[e].getChecked()},t.setChecked=function(e,i){return n.that[e].setChecked(i)},t.render=function(e){e=new l(e);return n.call(e)},e(a,t)});layui.define(["laytpl","form"],function(e){"use strict";var d=layui.$,n=layui.laytpl,t=layui.form,a="transfer",i={config:{},index:layui[a]?layui[a].index+1e4:0,set:function(e){var t=this;return t.config=d.extend({},t.config,e),t},on:function(e,t){return layui.onevent.call(this,a,e,t)}},l=function(){var t=this,e=t.config,a=e.id||t.index;return l.that[a]=t,{config:l.config[a]=e,reload:function(e){t.reload.call(t,e)},getData:function(){return t.getData.call(t)}}},s="layui-hide",u="layui-btn-disabled",c="layui-none",r="layui-transfer-box",h="layui-transfer-header",o="layui-transfer-search",f="layui-transfer-data",y=function(e){return['
              ','
              ','","
              ","{{# if(d.data.showSearch){ }}",'","{{# } }}",'
                ',"
                "].join("")},p=['
                ',y({index:0,checkAllName:"layTransferLeftCheckAll"}),'
                ','",'","
                ",y({index:1,checkAllName:"layTransferRightCheckAll"}),"
                "].join(""),v=function(e){var t=this;t.index=++i.index,t.config=d.extend({},t.config,i.config,e),t.render()};v.prototype.config={title:["\u5217\u8868\u4e00","\u5217\u8868\u4e8c"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"\u65e0\u6570\u636e",searchNone:"\u65e0\u5339\u914d\u6570\u636e"}},v.prototype.reload=function(e){var t=this;t.config=d.extend({},t.config,e),t.render()},v.prototype.render=function(){var e=this,t=e.config,a=e.elem=d(n(p,{open:"{{",close:"}}"}).render({data:t,index:e.index})),i=t.elem=d(t.elem);i[0]&&(t.data=t.data||[],t.value=t.value||[],t.id="id"in t?t.id:elem.attr("id")||e.index,e.key=t.id,i.html(e.elem),e.layBox=e.elem.find("."+r),e.layHeader=e.elem.find("."+h),e.laySearch=e.elem.find("."+o),e.layData=a.find("."+f),e.layBtn=a.find(".layui-transfer-active .layui-btn"),e.layBox.css({width:t.width,height:t.height}),e.layData.css({height:(i=t.height-e.layHeader.outerHeight(),t.showSearch&&(i-=e.laySearch.outerHeight()),i-2)}),e.renderData(),e.events())},v.prototype.renderData=function(){var e=this,t=e.config,l=[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}];e.parseData(function(a){var i=a.selected?1:0,n=["
              • ",'',"
              • "].join("");i?layui.each(t.value,function(e,t){t==a.value&&a.selected&&(l[i].views[e]=n)}):l[i].views.push(n),delete a.selected}),e.layData.eq(0).html(l[0].views.join("")),e.layData.eq(1).html(l[1].views.join("")),e.renderCheckBtn()},v.prototype.renderForm=function(e){t.render(e,"LAY-transfer-"+this.index)},v.prototype.renderCheckBtn=function(c){var r=this,o=r.config;c=c||{},r.layBox.each(function(e){var t=d(this),a=t.find("."+f),t=t.find("."+h).find('input[type="checkbox"]'),i=a.find('input[type="checkbox"]'),n=0,l=!1;i.each(function(){var e=d(this).data("hide");(this.checked||this.disabled||e)&&n++,this.checked&&!e&&(l=!0)}),t.prop("checked",l&&n===i.length),r.layBtn.eq(e)[l?"removeClass":"addClass"](u),c.stopNone||(i=a.children("li:not(."+s+")").length,r.noneView(a,i?"":o.text.none))}),r.renderForm("checkbox")},v.prototype.noneView=function(e,t){var a=d('

                '+(t||"")+"

                ");e.find("."+c)[0]&&e.find("."+c).remove(),t.replace(/\s/g,"")&&e.append(a)},v.prototype.setValue=function(){var e=this.config,t=[];return this.layBox.eq(1).find("."+f+' input[type="checkbox"]').each(function(){d(this).data("hide")||t.push(this.value)}),e.value=t,this},v.prototype.parseData=function(t){var i=this.config,n=[];return layui.each(i.data,function(e,a){a=("function"==typeof i.parseData?i.parseData(a):a)||a,n.push(a=d.extend({},a)),layui.each(i.value,function(e,t){t==a.value&&(a.selected=!0)}),t&&t(a)}),i.data=n,this},v.prototype.getData=function(e){var t=this.config,i=[];return this.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&i.push(t)})}),i},v.prototype.transfer=function(e,t){var a,i=this,n=i.config,l=i.layBox.eq(e),c=[],t=(t?((a=(t=t).find('input[type="checkbox"]'))[0].checked=!1,l.siblings("."+r).find("."+f).append(t.clone()),t.remove(),c.push(a[0].value),i.setValue()):l.each(function(e){d(this).find("."+f).children("li").each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t.data("hide");t[0].checked&&!a&&(t[0].checked=!1,l.siblings("."+r).find("."+f).append(e.clone()),e.remove(),c.push(t[0].value)),i.setValue()})}),i.renderCheckBtn(),l.siblings("."+r).find("."+o+" input"));""!==t.val()&&t.trigger("keyup"),n.onchange&&n.onchange(i.getData(c),e)},v.prototype.events=function(){var n=this,l=n.config;n.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var e=d(this).prev(),t=e[0].checked,a=e.parents("."+r).eq(0).find("."+f);e[0].disabled||("all"===e.attr("lay-type")&&a.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=t)}),setTimeout(function(){n.renderCheckBtn({stopNone:!0})},0))}),n.elem.on("dblclick","."+f+">li",function(e){var t=d(this),a=t.children('input[type="checkbox"]'),i=t.parent().parent().data("index");a[0].disabled||!1!==("function"==typeof l.dblclick?l.dblclick({elem:t,data:n.getData([a[0].value])[0],index:i}):null)&&n.transfer(i,t)}),n.layBtn.on("click",function(){var e=d(this),t=e.data("index");e.hasClass(u)||n.transfer(t)}),n.laySearch.find("input").on("keyup",function(){var i=this.value,e=d(this).parents("."+o).eq(0).siblings("."+f),t=e.children("li"),t=(t.each(function(){var e=d(this),t=e.find('input[type="checkbox"]'),a=t[0].title,a=("cs"!==l.showSearch&&(a=a.toLowerCase(),i=i.toLowerCase()),-1!==a.indexOf(i));e[a?"removeClass":"addClass"](s),t.data("hide",!a)}),n.renderCheckBtn(),t.length===e.children("li."+s).length);n.noneView(e,t?l.text.searchNone:"")})},l.that={},l.config={},i.reload=function(e,t){e=l.that[e];return e.reload(t),l.call(e)},i.getData=function(e){return l.that[e].getData()},i.render=function(e){e=new v(e);return l.call(e)},e(a,i)});layui.define(["jquery","lay"],function(e){"use strict";var a=layui.$,l=layui.lay,t=(layui.hint(),layui.device(),{config:{},set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,i){return layui.onevent.call(this,d,e,i)}}),d="carousel",r="layui-this",s="layui-carousel-left",u="layui-carousel-right",c="layui-carousel-prev",h="layui-carousel-next",o="layui-carousel-arrow",m="layui-carousel-ind",i=function(e){var i=this;i.config=a.extend({},i.config,t.config,e),i.render()};i.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},i.prototype.render=function(){var e=this,i=e.config,n=a(i.elem);if(1*[carousel-item]>*"),i.index<0&&(i.index=0),i.index>=e.elemItem.length&&(i.index=e.elemItem.length-1),i.interval<800&&(i.interval=800),i.full?i.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):i.elem.css({width:i.width,height:i.height}),i.elem.attr("lay-anim",i.anim),e.elemItem.eq(i.index).addClass(r),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},i.prototype.reload=function(e){var i=this;clearInterval(i.timer),i.config=a.extend({},i.config,e),i.render()},i.prototype.prevIndex=function(){var e=this.config.index-1;return e=e<0?this.elemItem.length-1:e},i.prototype.nextIndex=function(){var e=this.config.index+1;return e=e>=this.elemItem.length?0:e},i.prototype.addIndex=function(e){var i=this.config;i.index=i.index+(e=e||1),i.index>=this.elemItem.length&&(i.index=0)},i.prototype.subIndex=function(e){var i=this.config;i.index=i.index-(e=e||1),i.index<0&&(i.index=this.elemItem.length-1)},i.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},i.prototype.arrow=function(){var i=this,e=i.config,n=a(['",'"].join(""));e.elem.attr("lay-arrow",e.arrow),e.elem.find("."+o)[0]&&e.elem.find("."+o).remove(),e.elem.append(n),n.on("click",function(){var e=a(this).attr("lay-type");i.slide(e)})},i.prototype["goto"]=function(e){var i=this,n=i.config;e>n.index?i.slide("add",e-n.index):e
                  ',(i=[],layui.each(e.elemItem,function(e){i.push("")}),i.join("")),"
                "].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+m)[0]&&n.elem.find("."+m).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-t.height()/2),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){e["goto"](a(this).index())})},i.prototype.slide=function(e,i){var n=this,t=n.elemItem,a=n.config,o=a.index,l=a.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),t.eq(a.index).addClass(c),setTimeout(function(){t.eq(o).addClass(u),t.eq(a.index).addClass(u)},50)):(n.addIndex(i),t.eq(a.index).addClass(h),setTimeout(function(){t.eq(o).addClass(s),t.eq(a.index).addClass(s)},50)),setTimeout(function(){t.removeClass(r+" "+c+" "+h+" "+s+" "+u),t.eq(a.index).addClass(r),n.haveSlide=!1},350),n.elemInd.find("li").eq(a.index).addClass(r).siblings().removeClass(r),n.haveSlide=!0,e={index:a.index,prevIndex:o,item:t.eq(a.index)},"function"==typeof a.change&&a.change(e),layui.event.call(this,d,"change("+l+")",e))},i.prototype.events=function(){var t,a,o=this,e=o.config;e.elem.data("haveEvents")||(e.elem.on("mouseenter touchstart",function(){"always"!==o.config.autoplay&&clearInterval(o.timer)}).on("mouseleave touchend",function(){"always"!==o.config.autoplay&&o.autoplay()}),t=e.elem,a="updown"===e.anim,l.touchSwipe(t,{onTouchEnd:function(e,i){var n=Date.now()-i.timeStart,i=a?i.distanceY:i.distanceX;(.25t[a?"height":"width"]()/3)&&o.slide(0a.length&&(a.value=a.length),parseInt(a.value)===a.value||a.half||(a.value=Math.ceil(a.value)-a.value<.5?Math.ceil(a.value):Math.floor(a.value)),'
                  "),n=1;n<=a.length;n++){var o='
                • ";a.half&&parseInt(a.value)!==a.value&&n==Math.ceil(a.value)?i=i+'
                • ":i+=o}i+="
                "+(a.text?''+a.value+"\u661f":"")+"";var l=a.elem,s=l.next(".layui-rate");s[0]&&s.remove(),e.elemTemp=u(i),a.span=e.elemTemp.next("span"),a.setText&&a.setText(a.value),l.html(e.elemTemp),l.addClass("layui-inline"),a.readonly||e.action()},a.prototype.setvalue=function(e){this.config.value=e,this.render()},a.prototype.action=function(){var n=this.config,t=this.elemTemp,i=t.find("i").width(),l=t.children("li");l.each(function(e){var a=e+1,l=u(this);l.on("click",function(e){n.value=a,n.half&&e.pageX-u(this).offset().left<=i/2&&(n.value=n.value-.5),n.text&&t.next("span").text(n.value+"\u661f"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value)}),l.on("mousemove",function(e){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+a+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&e.pageX-u(this).offset().left<=i/2&&l.children("i").addClass(o).removeClass(f)}),l.on("mouseleave",function(){t.find("i").each(function(){u(this).addClass(h).removeClass(s)}),t.find("i:lt("+Math.floor(n.value)+")").each(function(){u(this).addClass(f).removeClass(v)}),n.half&&parseInt(n.value)!==n.value&&t.children("li:eq("+Math.floor(n.value)+")").children("i").addClass(o).removeClass("layui-icon-rate-solid layui-icon-rate")})}),r.touchSwipe(t,{onTouchMove:function(e,a){var i;Date.now()-a.timeStart<=200||(a=e.touches[0].pageX,e=t.width()/n.length,a=(a-t.offset().left)/e,(i=(i=(e=a%1)<=.5&&n.half?.5+(a-e):Math.ceil(a))>n.length?n.length:i)<0&&(i=0),l.each(function(e){var a=u(this).children("i"),l=Math.ceil(i)-e==1,t=Math.ceil(i)>e,e=i-e==.5;t?(a.addClass(f).removeClass(v),n.half&&e&&a.addClass(o).removeClass(f)):a.addClass(h).removeClass(s),a.toggleClass("layui-rate-hover",l)}),n.value=i,n.text&&t.next("span").text(n.value+"\u661f"),n.setText&&n.setText(n.value))},onTouchEnd:function(e,a){Date.now()-a.timeStart<=200||(t.find("i").removeClass("layui-rate-hover"),n.choose&&n.choose(n.value),n.setText&&n.setText(n.value))}})},a.prototype.events=function(){},c.render=function(e){e=new a(e);return function(){var a=this;return{setvalue:function(e){a.setvalue.call(a,e)},config:a.config}}.call(e)},e(l,c)});layui.define("jquery",function(o){"use strict";var v=layui.$,e=function(o){};e.prototype.load=function(o){var i,n,r,e,c,m,l,a,s,u,f,p,t,d,y=this,h=0,g=v((o=o||{}).elem);if(g[0])return c=v(o.scrollElem||document),m="mb"in o?o.mb:50,l=!("isAuto"in o)||o.isAuto,a=o.end||"\u6ca1\u6709\u66f4\u591a\u4e86",s="top"===(o.direction||"bottom"),u=o.scrollElem&&o.scrollElem!==document,p=v('"),g.find(".layui-flow-more")[0]||g[s?"prepend":"append"](p),t=function(o,e){var l=u?c.prop("scrollHeight"):document.documentElement.scrollHeight,t=c.scrollTop();o=v(o),p[s?"after":"before"](o),(e=0==e||null)?p.html(a):p.find("a").html(f),n=e,i=null,r&&r(),s&&(o=u?c.prop("scrollHeight"):document.documentElement.scrollHeight,1===h?c.scrollTop(o):1'),"function"==typeof o.done&&o.done(++h,t)})(),p.find("a").on("click",function(){v(this);n||i||d()}),o.isLazyimg&&(r=y.lazyimg({elem:o.elem+" img",scrollElem:o.scrollElem,direction:o.direction})),l&&c.on("scroll",function(){var l=v(this),t=l.scrollTop();e&&clearTimeout(e),!n&&g.width()&&(e=setTimeout(function(){var o=(u?l:v(window)).height(),e=u?l.prop("scrollHeight"):document.documentElement.scrollHeight;(s?t<=m:e-t-o<=m)&&!i&&d()},100))}),y},e.prototype.lazyimg=function(o){var e,m=this,a=0,s=v((o=o||{}).scrollElem||document),u=o.elem||"img",n="top"===(o.direction||"bottom"),f=o.scrollElem&&o.scrollElem!==document,p=function(e,o){var l,t=s.scrollTop(),o=t+o,i=f?e.offset().top-s.offset().top+t:e.offset().top;(n?i+e.height():i)>=t&&i<=o&&e.attr("lay-src")&&(l=e.attr("lay-src"),layui.img(l,function(){var o=m.lazyimg.elem.eq(a);e.attr("src",l).removeAttr("lay-src"),o[0]&&r(o),a++},function(){m.lazyimg.elem.eq(a);e.removeAttr("lay-src")}))},r=function(o,e){var l=(f?e||s:v(window)).height(),t=s.scrollTop(),i=t+l;if(m.lazyimg.elem=v(u),o)p(o,l);else for(var n=0;n"),preview:"Preview"},wordWrap:!0,lang:"text",highlighter:!1,langMarker:!1},W=layui.code?layui.code.index+1e4:0,R=function(e){return String(e).replace(/\s+$/,"").replace(/^\n|\n$/,"")};e("code",function(l,e){var o,i,t,a,n,d,c,s,r,u,y,p,E,f,h,v,m,L,_,M,C,g={config:l=x.extend(!0,{},T,l),reload:function(e){layui.code(this.updateOptions(e))},updateOptions:function(e){return delete(e=e||{}).elem,x.extend(!0,l,e)},reloadCode:function(e){layui.code(this.updateOptions(e),"reloadCode")}},w=x(l.elem);return 1',l.ln?['
                ',D.digit(t+1)+".","
                "].join(""):"",'
                ',e||" ","
                ",""].join("")})}},a=l.code,n=function(e){return"function"==typeof l.codeParse?l.codeParse(e,l):e},"reloadCode"===e?o.children(".layui-code-wrap").html(w(n(a)).html):(d=layui.code.index=++W,o.attr("lay-code-index",d),(M=A.CDDE_DATA_CLASS in o.data())&&o.attr("class",o.data(A.CDDE_DATA_CLASS)||""),M||o.data(A.CDDE_DATA_CLASS,o.attr("class")),c={copy:{className:"file-b",title:["\u590d\u5236\u4ee3\u7801"],event:function(e){var t=D.unescape(n(l.code));lay.clipboard.writeText({text:t,done:function(){N.msg("\u5df2\u590d\u5236",{icon:1})},error:function(){N.msg("\u590d\u5236\u5931\u8d25",{icon:2})}}),"function"==typeof l.onCopy&&l.onCopy(t)}}},function b(){var e=o.parent("."+A.ELEM_PREVIEW),t=e.children("."+A.ELEM_TAB),a=e.children("."+A.ELEM_ITEM+"-preview");return t.remove(),a.remove(),e[0]&&o.unwrap(),b}(),l.preview&&(M="LAY-CODE-DF-"+d,f=l.layout||["code","preview"],s="iframe"===l.preview,E=x('
                '),C=x('
                '),r=x('
                '),_=x('
                '),u=x('
                '),l.id&&E.attr("id",l.id),E.addClass(l.className),C.attr("lay-filter",M),layui.each(f,function(e,t){var a=x('
              • ');0===e&&a.addClass("layui-this"),a.html(l.text[t]),r.append(a)}),x.extend(c,{full:{className:"screen-full",title:["\u6700\u5927\u5316\u663e\u793a","\u8fd8\u539f\u663e\u793a"],event:function(e){var e=e.elem,t=e.closest("."+A.ELEM_PREVIEW),a="layui-icon-"+this.className,i="layui-icon-screen-restore",l=this.title,o=x("html,body"),n="layui-scrollbar-hide";e.hasClass(a)?(t.addClass(A.ELEM_FULL),e.removeClass(a).addClass(i),e.attr("title",l[1]),o.addClass(n)):(t.removeClass(A.ELEM_FULL),e.removeClass(i).addClass(a),e.attr("title",l[0]),o.removeClass(n))}},window:{className:"release",title:["\u5728\u65b0\u7a97\u53e3\u9884\u89c8"],event:function(e){D.openWin({content:n(l.code)})}}}),l.copy&&("array"===layui.type(l.tools)?-1===l.tools.indexOf("copy")&&l.tools.unshift("copy"):l.tools=["copy"]),u.on("click",">i",function(){var e=x(this),t=e.data("type"),e={elem:e,type:t,options:l,rawCode:l.code,finalCode:D.unescape(n(l.code))};c[t]&&"function"==typeof c[t].event&&c[t].event(e),"function"==typeof l.toolsEvent&&l.toolsEvent(e)}),l.addTools&&l.tools&&(l.tools=[].concat(l.tools,l.addTools)),layui.each(l.tools,function(e,t){var a="object"==typeof t,i=a?t:c[t]||{className:t,title:[t]},l=i.className||i.type,o=i.title||[""],a=a?i.type||l:t;a&&(c[a]||((t={})[a]=i,x.extend(c,t)),u.append(''))}),o.addClass(A.ELEM_ITEM).wrap(E),C.append(r),l.tools&&C.append(u),o.before(C),s&&_.html(''),y=function(e){var t=e.children("iframe")[0];s&&t?t.srcdoc=n(l.code):e.html(l.code),setTimeout(function(){"function"==typeof l.done&&l.done({container:e,options:l,render:function(){I.render(e.find(".layui-form")),S.render()}})},3)},"preview"===f[0]?(_.addClass(A.ELEM_SHOW),o.before(_),y(_)):o.addClass(A.ELEM_SHOW).after(_),l.previewStyle=[l.style,l.previewStyle].join(""),_.attr("style",l.previewStyle),S.on("tab("+M+")",function(e){var t=x(this),a=x(e.elem).closest("."+A.ELEM_PREVIEW).find("."+A.ELEM_ITEM),e=a.eq(e.index);a.removeClass(A.ELEM_SHOW),e.addClass(A.ELEM_SHOW),"preview"===t.attr("lay-id")&&y(e),L()})),p=x(''),o.addClass((E=["layui-code-view layui-border-box"],l.wordWrap||E.push("layui-code-nowrap"),E.join(" "))),(C=l.theme||l.skin)&&(o.removeClass("layui-code-theme-dark layui-code-theme-light"),o.addClass("layui-code-theme-"+C)),l.highlighter&&o.addClass([l.highlighter,"language-"+l.lang,"layui-code-hl"].join(" ")),f=w(l.encode?D.escape(n(a)):a),h=f.lines,o.html(p.html(f.html)),l.ln&&o.append('
                '),l.height&&p.css("max-height",l.height),l.codeStyle=[l.style,l.codeStyle].join(""),l.codeStyle&&p.attr("style",function(e,t){return(t||"")+l.codeStyle}),v=[{selector:">.layui-code-wrap>.layui-code-line{}",setValue:function(e,t){e.style["padding-left"]=t+"px"}},{selector:">.layui-code-wrap>.layui-code-line>.layui-code-line-number{}",setValue:function(e,t){e.style.width=t+"px"}},{selector:">.layui-code-ln-side{}",setValue:function(e,t){e.style.width=t+"px"}}],m=lay.style({target:o[0],id:"DF-code-"+d,text:x.map(x.map(v,function(e){return e.selector}),function(e,t){return['.layui-code-view[lay-code-index="'+d+'"]',e].join(" ")}).join("")}),L=function b(){var e,i;return l.ln&&(e=Math.floor(h.length/100),i=p.children("."+A.ELEM_LINE).last().children("."+A.ELEM_LINE_NUM).outerWidth(),o.addClass(A.ELEM_LN_MODE),e)&&A.LINE_RAW_WIDTH
              • ')).html(l.title||l.text.code),o.prepend(_)),M=x('
                '),l.copy&&!l.preview&&((C=x(['','',""].join(""))).on("click",function(){c.copy.event()}),M.append(C)),l.langMarker&&M.append(''+l.lang+""),l.about&&M.append(l.about),o.append(M),l.preview||setTimeout(function(){"function"==typeof l.done&&l.done({})},3),l.elem.length===1+d&&"function"==typeof l.allDone&&l.allDone())),g})}),layui["layui.all"]||layui.addcss("modules/code.css?v=6","skincodecss"); \ No newline at end of file diff --git a/public/static/nginx.htaccess b/public/static/nginx.htaccess new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/route/app.php b/route/app.php index b357d606140a2f107f21853876e2e2664075ac0c..cfab5d5a5a57d1abdaebe8b61c81520beafe272d 100644 --- a/route/app.php +++ b/route/app.php @@ -3,7 +3,7 @@ use think\facade\Route; // api子域名路由指定 -Route::domain('localapi',function () { +Route::domain('{localapi}',function () { Route::rule('/plugin/:plugin', "laytp\library\PluginRoute@execute"); Route::get('captcha/[:config]','\\think\\captcha\\CaptchaController@index'); Route::rule('/:pathInfo', '/api.:pathInfo')->pattern(['pathInfo'=>'[\w\.\/]+']); @@ -17,7 +17,7 @@ Route::domain('localapi',function () { }); // adminapi子域名路由指定 -Route::domain('localadminapi',function () { +Route::domain('{localadminapi}',function () { Route::rule('/plugin/:plugin', "laytp\library\PluginRoute@execute"); Route::get('captcha/[:config]','\\think\\captcha\\CaptchaController@index'); Route::rule('/:pathInfo', '/admin.:pathInfo')->pattern(['pathInfo'=>'[\w\.\/]+']);