// ==UserScript==
// @name 爱问答助手
// @namespace aiask/askHelper
// @version 1.3.11
// @author aiask
// @description 全平台问答助手,一键获取整个页面的试题答案,目前支持【超星学习通、知到智慧树、国家开放大学、广东开放大学、江苏开放大学、上海开放大学、云南开放大学、芯位教育、云慕学苑、职教云、川农在线、长江雨课堂(半兼容)、安徽继续教育平台、青书学堂、睿学在线、成教云、京人平台、绎通继教云、学起Plus、云上河开、河南继续教育、四川开放大学、良师在线、继教云、日照专业技术人员继续教育、麦能网、21tb】,更多平台开发中...
// @license MIT
// @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAHVQTFRFR3BMgICBQD8/QUVHQ0ZIRUhKX2FiQD8/Tk1NP0VJPzs7Pz8/QD4+UE9QQD8/PVlnQD8/M6vj////n5+fN5C60NDQSl9qOXWSZL/qTFNXzOr4QWl8yMjItLS02traOIOnNZzN6OfnlJeZ9/f3PYGgpdrzmdXxgSBJqQAAABB0Uk5TAP5E6vys+7/Q0RhsfPFV/OwFarYAAAEESURBVHjapdHrboMgGIBhUHBaD/sAlTE8VOt2/5c4GlBMRZOl7w8j+kQQ0FaVwbG48IDq+piMPcgkO1bD/8DXvhD4/fb9ePDuGiqa2krV7pO1AxSLYIl2ABoeTLSvYMBi4N0sphOAlVaqg1aTPggmZYYaFvNMBYGQz6G6m2vbhEBvF81MxALFTDpbQQd3ZhvBgxqiFfBEO/CJ7ZxkNPcUbWBwn5DJw4KSsJHcHPCTLLDuQxpLkiMLbAIWJs1wBRVkyAFXT7Sa+AYQjTywNfOD74DNA18I9Ifjpg7Es/3Jj5eKyIEcBgNwhk5L8XMPonMQQcfNhBfRpIfbFbiRskCX5enFyz/07TSN9vGxKwAAAABJRU5ErkJggg==
// @match *://*.asklib.com/*
// @match *://*.chaoxing.com/*
// @match *://*.hlju.edu.cn/*
// @match *://lms.ouchn.cn/*
// @match *://xczxzdbf.moodle.qwbx.ouchn.cn/*
// @match *://tongyi.aliyun.com/qianwen/*
// @match *://chatglm.cn/*
// @match *://*.zhihuishu.com/*
// @match *://course.ougd.cn/*
// @match *://moodle.syxy.ouchn.cn/*
// @match *://moodle.qwbx.ouchn.cn/*
// @match *://elearning.bjou.edu.cn/*
// @match *://whkpc.hnqtyq.cn:5678/*
// @match *://study.ouchn.cn/*
// @match *://www.51xinwei.com/*
// @match *://*.w-ling.cn/*
// @match *://xuexi.jsou.cn/*
// @match *://*.edu-edu.com/*
// @match *://xuexi.jsou.cn/*
// @match *://spoc-exam.icve.com.cn/*
// @match *://*.icve.com.cn/*
// @match *://zice.cnzx.info/*
// @match *://any.cnzx.info:81/*
// @match *://www.icourse163.org/*
// @match *://*.yuketang.cn/*
// @match *://*.shou.org.cn/*
// @match *://main.ahjxjy.cn/*
// @match *://exam.chinaedu.net/*
// @match *://degree.qingshuxuetang.com/*
// @match *://cce.org.uooconline.com/*
// @match *://*.courshare.cn/*
// @match *://*.cep.webtrn.cn/*
// @match *://*.webtrn.cn/*
// @match *://*.cj-edu.com/*
// @match *://*.ytccr.com/*
// @match *://*.exam-cloud.cn/*
// @match *://gdrtvu.exam-cloud.cn/*
// @match *://*.open.ha.cn/*
// @match *://lhycjy.cloudwis.tech/*
// @match *://*.sclecb.cn/*
// @match *://*.web2.superchutou.com/*
// @match *://*.ls365.net/*
// @match *://*.jijiaox.com/*
// @match *://*.wencaischool.net/*
// @match *://sdrz.gxk.yxlearning.com/*
// @match *://*.crjxjy.net/*
// @match *://*.cjnep.net/*
// @match *://*.91huayi.com/*
// @match *://teach.ynou.edu.cn/*
// @match *://*.edu-edu.com.cn/*
// @match *://*.21tb.com/*
// @require https://lib.baomitu.com/vue/3.4.27/vue.global.min.js
// @require https://lib.baomitu.com/vue-demi/0.14.6/index.iife.js
// @require data:application/javascript,%3Bwindow.Vue%3DVue%3B
// @require https://lib.baomitu.com/element-plus/2.6.3/index.full.min.js
// @require https://lf9-cdn-tos.bytecdntp.com/cdn/expire-10-y/jquery/3.6.0/jquery.min.js
// @require https://lf9-cdn-tos.bytecdntp.com/cdn/expire-10-y/highlight.js/11.4.0/highlight.min.js
// @require https://lib.baomitu.com/markdown-it/13.0.1/markdown-it.min.js
// @require https://lib.baomitu.com/dompurify/3.0.11/purify.min.js
// @resource ttf https://www.forestpolice.org/ttf/2.0/table.json
// @resource ttf1 https://cdn.jsdelivr.net/gh/chengbianruan/staticfile/c.json
// @resource ttf2 https://cdn.jsdelivr.net/gh/chengbianruan/staticfile/1.json
// @connect 127.0.0.1
// @connect icodef.com
// @connect muketool.com
// @connect wk66.top
// @connect 82.157.105.20
// @connect tikuhai.com
// @connect zhihuishu.com
// @connect yuketang.cn
// @connect greasyfork.org
// @grant GM_addStyle
// @grant GM_deleteValue
// @grant GM_getResourceText
// @grant GM_getValue
// @grant GM_info
// @grant GM_listValues
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @grant unsafeWindow
// @run-at document-start
// @antifeature payment 第三方接口存在付费项
// ==/UserScript==
(a=>{if(typeof GM_addStyle=="function"){GM_addStyle(a);return}const o=document.createElement("style");o.textContent=a,document.head.append(o)})(` @charset "UTF-8";button[data-v-e34c2e2a]{margin:10px}.aah_plat span[data-v-e34c2e2a]{margin:5px}.el-row{margin-bottom:20px}.el-row:last-child{margin-bottom:0}.el-col{border-radius:4px}.grid-content{border-radius:4px;min-height:36px}.aah_btn{width:100%}.aah_active{box-shadow:0 0 5px #0af}.aah_password input{--el-input-inner-height: calc(var(--el-input-height, 32px) - 2px);background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color, var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%;margin:auto}.el-input__inner{border:none!important;margin:auto;--el-input-inner-height: calc(var(--el-input-height, 32px) - 2px);background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color, var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%}.aah_bomHet50{padding:13px 0 13px 10px}.aah_bomHet50 span{display:inline-block;line-height:24px;padding-left:14px;color:#a8a8b3}.aah_bomHet50 span i{display:inline-block;width:10px;height:10px;border:1px solid #DBDFE9;border-radius:2px;vertical-align:middle;margin-right:4px;margin-top:-2px}.aah_bomHet50 .dq i{background-color:#ecf5ff;box-shadow:0 0 5px #0af}.aah_bomHet50 .yp i{background-color:#f0f9eb;border-color:#409eff}.aah_bomHet50 .wp i{background-color:#fef0f0;border-color:#f56c6c}.aah_title img{max-width:100%;height:auto;overflow:hidden}.aah_title{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-bottom:10px}.aah_title{font-weight:700}#aiAskApp{text-align:left!important}#AiAskApp .aah_wrapper>div{pointer-events:none}#AiAskApp .aah_wrapper>div>div{pointer-events:none}.aah-notification.right{min-height:84px}.aah-dialog{pointer-events:auto}@media (max-width: 600px){#AiAskApp .aah-scrollbar,#AiAskApp .aah-scrollbar__wrap{max-height:50vh!important}}@media (min-width: 601px){#AiAskApp .aah-scrollbar,#AiAskApp .aah-scrollbar__wrap{max-height:700px!important}}.minimized-dialog img{pointer-events:auto;width:50px!important;z-index:999;position:fixed;bottom:0;right:0}.aah_breadcrumb{margin-bottom:20px}:root{--aah-color-white: #ffffff;--aah-color-black: #000000;--aah-color-primary-rgb: 64, 158, 255;--aah-color-success-rgb: 103, 194, 58;--aah-color-warning-rgb: 230, 162, 60;--aah-color-danger-rgb: 245, 108, 108;--aah-color-error-rgb: 245, 108, 108;--aah-color-info-rgb: 144, 147, 153;--aah-font-size-extra-large: 20px;--aah-font-size-large: 18px;--aah-font-size-medium: 16px;--aah-font-size-base: 14px;--aah-font-size-small: 13px;--aah-font-size-extra-small: 12px;--aah-font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "\u5FAE\u8F6F\u96C5\u9ED1", Arial, sans-serif;--aah-font-weight-primary: 500;--aah-font-line-height-primary: 24px;--aah-index-normal: 1;--aah-index-top: 1000;--aah-index-popper: 2000;--aah-border-radius-base: 4px;--aah-border-radius-small: 2px;--aah-border-radius-round: 20px;--aah-border-radius-circle: 100%;--aah-transition-duration: .3s;--aah-transition-duration-fast: .2s;--aah-transition-function-ease-in-out-bezier: cubic-bezier(.645, .045, .355, 1);--aah-transition-function-fast-bezier: cubic-bezier(.23, 1, .32, 1);--aah-transition-all: all var(--aah-transition-duration) var(--aah-transition-function-ease-in-out-bezier);--aah-transition-fade: opacity var(--aah-transition-duration) var(--aah-transition-function-fast-bezier);--aah-transition-md-fade: transform var(--aah-transition-duration) var(--aah-transition-function-fast-bezier), opacity var(--aah-transition-duration) var(--aah-transition-function-fast-bezier);--aah-transition-fade-linear: opacity var(--aah-transition-duration-fast) linear;--aah-transition-border: border-color var(--aah-transition-duration-fast) var(--aah-transition-function-ease-in-out-bezier);--aah-transition-box-shadow: box-shadow var(--aah-transition-duration-fast) var(--aah-transition-function-ease-in-out-bezier);--aah-transition-color: color var(--aah-transition-duration-fast) var(--aah-transition-function-ease-in-out-bezier);--aah-component-size-large: 40px;--aah-component-size: 32px;--aah-component-size-small: 24px}:root{color-scheme:light;--aah-color-primary: #409eff;--aah-color-primary-light-3: #79bbff;--aah-color-primary-light-5: #a0cfff;--aah-color-primary-light-7: #c6e2ff;--aah-color-primary-light-8: #d9ecff;--aah-color-primary-light-9: #ecf5ff;--aah-color-primary-dark-2: #337ecc;--aah-color-success: #67c23a;--aah-color-success-light-3: #95d475;--aah-color-success-light-5: #b3e19d;--aah-color-success-light-7: #d1edc4;--aah-color-success-light-8: #e1f3d8;--aah-color-success-light-9: #f0f9eb;--aah-color-success-dark-2: #529b2e;--aah-color-warning: #e6a23c;--aah-color-warning-light-3: #eebe77;--aah-color-warning-light-5: #f3d19e;--aah-color-warning-light-7: #f8e3c5;--aah-color-warning-light-8: #faecd8;--aah-color-warning-light-9: #fdf6ec;--aah-color-warning-dark-2: #b88230;--aah-color-danger: #f56c6c;--aah-color-danger-light-3: #f89898;--aah-color-danger-light-5: #fab6b6;--aah-color-danger-light-7: #fcd3d3;--aah-color-danger-light-8: #fde2e2;--aah-color-danger-light-9: #fef0f0;--aah-color-danger-dark-2: #c45656;--aah-color-error: #f56c6c;--aah-color-error-light-3: #f89898;--aah-color-error-light-5: #fab6b6;--aah-color-error-light-7: #fcd3d3;--aah-color-error-light-8: #fde2e2;--aah-color-error-light-9: #fef0f0;--aah-color-error-dark-2: #c45656;--aah-color-info: #909399;--aah-color-info-light-3: #b1b3b8;--aah-color-info-light-5: #c8c9cc;--aah-color-info-light-7: #dedfe0;--aah-color-info-light-8: #e9e9eb;--aah-color-info-light-9: #f4f4f5;--aah-color-info-dark-2: #73767a;--aah-bg-color: #ffffff;--aah-bg-color-page: #f2f3f5;--aah-bg-color-overlay: #ffffff;--aah-text-color-primary: #303133;--aah-text-color-regular: #606266;--aah-text-color-secondary: #909399;--aah-text-color-placeholder: #a8abb2;--aah-text-color-disabled: #c0c4cc;--aah-border-color: #dcdfe6;--aah-border-color-light: #e4e7ed;--aah-border-color-lighter: #ebeef5;--aah-border-color-extra-light: #f2f6fc;--aah-border-color-dark: #d4d7de;--aah-border-color-darker: #cdd0d6;--aah-fill-color: #f0f2f5;--aah-fill-color-light: #f5f7fa;--aah-fill-color-lighter: #fafafa;--aah-fill-color-extra-light: #fafcff;--aah-fill-color-dark: #ebedf0;--aah-fill-color-darker: #e6e8eb;--aah-fill-color-blank: #ffffff;--aah-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, .04), 0px 8px 20px rgba(0, 0, 0, .08);--aah-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, .12);--aah-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, .12);--aah-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, .08), 0px 12px 32px rgba(0, 0, 0, .12), 0px 8px 16px -8px rgba(0, 0, 0, .16);--aah-disabled-bg-color: var(--aah-fill-color-light);--aah-disabled-text-color: var(--aah-text-color-placeholder);--aah-disabled-border-color: var(--aah-border-color-light);--aah-overlay-color: rgba(0, 0, 0, .8);--aah-overlay-color-light: rgba(0, 0, 0, .7);--aah-overlay-color-lighter: rgba(0, 0, 0, .5);--aah-mask-color: rgba(255, 255, 255, .9);--aah-mask-color-extra-light: rgba(255, 255, 255, .3);--aah-border-width: 1px;--aah-border-style: solid;--aah-border-color-hover: var(--aah-text-color-disabled);--aah-border: var(--aah-border-width) var(--aah-border-style) var(--aah-border-color);--aah-svg-monochrome-grey: var(--aah-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--aah-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.aah-fade-in-linear-enter-active,.aah-fade-in-linear-leave-active{transition:var(--aah-transition-fade-linear)}.aah-fade-in-linear-enter-from,.aah-fade-in-linear-leave-to{opacity:0}.aah-fade-in-enter-active,.aah-fade-in-leave-active{transition:all var(--aah-transition-duration) cubic-bezier(.55,0,.1,1)}.aah-fade-in-enter-from,.aah-fade-in-leave-active{opacity:0}.aah-zoom-in-center-enter-active,.aah-zoom-in-center-leave-active{transition:all var(--aah-transition-duration) cubic-bezier(.55,0,.1,1)}.aah-zoom-in-center-enter-from,.aah-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.aah-zoom-in-top-enter-active,.aah-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--aah-transition-md-fade);transform-origin:center top}.aah-zoom-in-top-enter-active[data-popper-placement^=top],.aah-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.aah-zoom-in-top-enter-from,.aah-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.aah-zoom-in-bottom-enter-active,.aah-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--aah-transition-md-fade);transform-origin:center bottom}.aah-zoom-in-bottom-enter-from,.aah-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.aah-zoom-in-left-enter-active,.aah-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:var(--aah-transition-md-fade);transform-origin:top left}.aah-zoom-in-left-enter-from,.aah-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--aah-transition-duration) height ease-in-out,var(--aah-transition-duration) padding-top ease-in-out,var(--aah-transition-duration) padding-bottom ease-in-out}.aah-collapse-transition-leave-active,.aah-collapse-transition-enter-active{transition:var(--aah-transition-duration) max-height ease-in-out,var(--aah-transition-duration) padding-top ease-in-out,var(--aah-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--aah-transition-duration) width ease-in-out,var(--aah-transition-duration) padding-left ease-in-out,var(--aah-transition-duration) padding-right ease-in-out}.aah-list-enter-active,.aah-list-leave-active{transition:all 1s}.aah-list-enter-from,.aah-list-leave-to{opacity:0;transform:translateY(-30px)}.aah-list-leave-active{position:absolute!important}.aah-opacity-transition{transition:opacity var(--aah-transition-duration) cubic-bezier(.55,0,.1,1)}.aah-icon-loading{animation:rotating 2s linear infinite}.aah-icon--right{margin-left:5px}.aah-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.aah-icon{--color: inherit;height:1em;width:1em;line-height:1em;display:inline-flex;justify-content:center;align-items:center;position:relative;fill:currentColor;color:var(--color);font-size:inherit}.aah-icon.is-loading{animation:rotating 2s linear infinite}.aah-icon svg{height:1em;width:1em}.aah-affix--fixed{position:fixed}.aah-alert{--aah-alert-padding: 8px 16px;--aah-alert-border-radius-base: var(--aah-border-radius-base);--aah-alert-title-font-size: 14px;--aah-alert-title-with-description-font-size: 16px;--aah-alert-description-font-size: 14px;--aah-alert-close-font-size: 16px;--aah-alert-close-customed-font-size: 14px;--aah-alert-icon-size: 16px;--aah-alert-icon-large-size: 28px;width:100%;padding:var(--aah-alert-padding);margin:0;box-sizing:border-box;border-radius:var(--aah-alert-border-radius-base);position:relative;background-color:var(--aah-color-white);overflow:hidden;opacity:1;display:flex;align-items:center;transition:opacity var(--aah-transition-duration-fast)}.aah-alert.is-light .aah-alert__close-btn{color:var(--aah-text-color-placeholder)}.aah-alert.is-dark .aah-alert__close-btn,.aah-alert.is-dark .aah-alert__description{color:var(--aah-color-white)}.aah-alert.is-center{justify-content:center}.aah-alert--success{--aah-alert-bg-color: var(--aah-color-success-light-9)}.aah-alert--success.is-light{background-color:var(--aah-alert-bg-color);color:var(--aah-color-success)}.aah-alert--success.is-light .aah-alert__description{color:var(--aah-color-success)}.aah-alert--success.is-dark{background-color:var(--aah-color-success);color:var(--aah-color-white)}.aah-alert--info{--aah-alert-bg-color: var(--aah-color-info-light-9)}.aah-alert--info.is-light{background-color:var(--aah-alert-bg-color);color:var(--aah-color-info)}.aah-alert--info.is-light .aah-alert__description{color:var(--aah-color-info)}.aah-alert--info.is-dark{background-color:var(--aah-color-info);color:var(--aah-color-white)}.aah-alert--warning{--aah-alert-bg-color: var(--aah-color-warning-light-9)}.aah-alert--warning.is-light{background-color:var(--aah-alert-bg-color);color:var(--aah-color-warning)}.aah-alert--warning.is-light .aah-alert__description{color:var(--aah-color-warning)}.aah-alert--warning.is-dark{background-color:var(--aah-color-warning);color:var(--aah-color-white)}.aah-alert--error{--aah-alert-bg-color: var(--aah-color-error-light-9)}.aah-alert--error.is-light{background-color:var(--aah-alert-bg-color);color:var(--aah-color-error)}.aah-alert--error.is-light .aah-alert__description{color:var(--aah-color-error)}.aah-alert--error.is-dark{background-color:var(--aah-color-error);color:var(--aah-color-white)}.aah-alert__content{display:flex;flex-direction:column;gap:4px}.aah-alert .aah-alert__icon{font-size:var(--aah-alert-icon-size);width:var(--aah-alert-icon-size);margin-right:8px}.aah-alert .aah-alert__icon.is-big{font-size:var(--aah-alert-icon-large-size);width:var(--aah-alert-icon-large-size);margin-right:12px}.aah-alert__title{font-size:var(--aah-alert-title-font-size);line-height:24px}.aah-alert__title.with-description{font-size:var(--aah-alert-title-with-description-font-size)}.aah-alert .aah-alert__description{font-size:var(--aah-alert-description-font-size);margin:0}.aah-alert .aah-alert__close-btn{font-size:var(--aah-alert-close-font-size);opacity:1;position:absolute;top:12px;right:16px;cursor:pointer}.aah-alert .aah-alert__close-btn.is-customed{font-style:normal;font-size:var(--aah-alert-close-customed-font-size);line-height:24px;top:8px}.aah-alert-fade-enter-from,.aah-alert-fade-leave-active{opacity:0}.aah-aside{overflow:auto;box-sizing:border-box;flex-shrink:0;width:var(--aah-aside-width, 300px)}.aah-autocomplete{position:relative;display:inline-block}.aah-autocomplete__popper.aah-popper{background:var(--aah-bg-color-overlay);border:1px solid var(--aah-border-color-light);box-shadow:var(--aah-box-shadow-light)}.aah-autocomplete__popper.aah-popper .aah-popper__arrow:before{border:1px solid var(--aah-border-color-light)}.aah-autocomplete__popper.aah-popper[data-popper-placement^=top] .aah-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.aah-autocomplete__popper.aah-popper[data-popper-placement^=bottom] .aah-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.aah-autocomplete__popper.aah-popper[data-popper-placement^=left] .aah-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.aah-autocomplete__popper.aah-popper[data-popper-placement^=right] .aah-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.aah-autocomplete-suggestion{border-radius:var(--aah-border-radius-base);box-sizing:border-box}.aah-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.aah-autocomplete-suggestion__list{margin:0;padding:0}.aah-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:var(--aah-text-color-regular);font-size:var(--aah-font-size-base);list-style:none;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aah-autocomplete-suggestion li:hover,.aah-autocomplete-suggestion li.highlighted{background-color:var(--aah-fill-color-light)}.aah-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid var(--aah-color-black)}.aah-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.aah-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:var(--aah-text-color-secondary)}.aah-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.aah-autocomplete-suggestion.is-loading li:hover{background-color:var(--aah-bg-color-overlay)}.aah-autocomplete-suggestion.is-loading .aah-icon-loading{vertical-align:middle}.aah-avatar{--aah-avatar-text-color: var(--aah-color-white);--aah-avatar-bg-color: var(--aah-text-color-disabled);--aah-avatar-text-size: 14px;--aah-avatar-icon-size: 18px;--aah-avatar-border-radius: var(--aah-border-radius-base);--aah-avatar-size-large: 56px;--aah-avatar-size-small: 24px;--aah-avatar-size: 40px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--aah-avatar-text-color);background:var(--aah-avatar-bg-color);width:var(--aah-avatar-size);height:var(--aah-avatar-size);font-size:var(--aah-avatar-text-size)}.aah-avatar>img{display:block;width:100%;height:100%}.aah-avatar--circle{border-radius:50%}.aah-avatar--square{border-radius:var(--aah-avatar-border-radius)}.aah-avatar--icon{font-size:var(--aah-avatar-icon-size)}.aah-avatar--small{--aah-avatar-size: 24px}.aah-avatar--large{--aah-avatar-size: 56px}.aah-backtop{--aah-backtop-bg-color: var(--aah-bg-color-overlay);--aah-backtop-text-color: var(--aah-color-primary);--aah-backtop-hover-bg-color: var(--aah-border-color-extra-light);position:fixed;background-color:var(--aah-backtop-bg-color);width:40px;height:40px;border-radius:50%;color:var(--aah-backtop-text-color);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:var(--aah-box-shadow-lighter);cursor:pointer;z-index:5}.aah-backtop:hover{background-color:var(--aah-backtop-hover-bg-color)}.aah-backtop__icon{font-size:20px}.aah-badge{--aah-badge-bg-color: var(--aah-color-danger);--aah-badge-radius: 10px;--aah-badge-font-size: 12px;--aah-badge-padding: 6px;--aah-badge-size: 18px;position:relative;vertical-align:middle;display:inline-block;width:fit-content}.aah-badge__content{background-color:var(--aah-badge-bg-color);border-radius:var(--aah-badge-radius);color:var(--aah-color-white);display:inline-flex;justify-content:center;align-items:center;font-size:var(--aah-badge-font-size);height:var(--aah-badge-size);padding:0 var(--aah-badge-padding);white-space:nowrap;border:1px solid var(--aah-bg-color)}.aah-badge__content.is-fixed{position:absolute;top:0;right:calc(1px + var(--aah-badge-size) / 2);transform:translateY(-50%) translate(100%);z-index:var(--aah-index-normal)}.aah-badge__content.is-fixed.is-dot{right:5px}.aah-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.aah-badge__content--primary{background-color:var(--aah-color-primary)}.aah-badge__content--success{background-color:var(--aah-color-success)}.aah-badge__content--warning{background-color:var(--aah-color-warning)}.aah-badge__content--info{background-color:var(--aah-color-info)}.aah-badge__content--danger{background-color:var(--aah-color-danger)}.aah-breadcrumb{font-size:14px;line-height:1}.aah-breadcrumb:before,.aah-breadcrumb:after{display:table;content:""}.aah-breadcrumb:after{clear:both}.aah-breadcrumb__separator{margin:0 9px;font-weight:700;color:var(--aah-text-color-placeholder)}.aah-breadcrumb__separator.aah-icon{margin:0 6px;font-weight:400}.aah-breadcrumb__separator.aah-icon svg{vertical-align:middle}.aah-breadcrumb__item{float:left;display:inline-flex;align-items:center}.aah-breadcrumb__inner{color:var(--aah-text-color-regular)}.aah-breadcrumb__inner.is-link,.aah-breadcrumb__inner a{font-weight:700;text-decoration:none;transition:var(--aah-transition-color);color:var(--aah-text-color-primary)}.aah-breadcrumb__inner.is-link:hover,.aah-breadcrumb__inner a:hover{color:var(--aah-color-primary);cursor:pointer}.aah-breadcrumb__item:last-child .aah-breadcrumb__inner,.aah-breadcrumb__item:last-child .aah-breadcrumb__inner:hover,.aah-breadcrumb__item:last-child .aah-breadcrumb__inner a,.aah-breadcrumb__item:last-child .aah-breadcrumb__inner a:hover{font-weight:400;color:var(--aah-text-color-regular);cursor:text}.aah-breadcrumb__item:last-child .aah-breadcrumb__separator{display:none}.aah-button-group{display:inline-block;vertical-align:middle}.aah-button-group:before,.aah-button-group:after{display:table;content:""}.aah-button-group:after{clear:both}.aah-button-group>.aah-button{float:left;position:relative}.aah-button-group>.aah-button+.aah-button{margin-left:0}.aah-button-group>.aah-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.aah-button-group>.aah-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.aah-button-group>.aah-button:first-child:last-child{border-top-right-radius:var(--aah-border-radius-base);border-bottom-right-radius:var(--aah-border-radius-base);border-top-left-radius:var(--aah-border-radius-base);border-bottom-left-radius:var(--aah-border-radius-base)}.aah-button-group>.aah-button:first-child:last-child.is-round{border-radius:var(--aah-border-radius-round)}.aah-button-group>.aah-button:first-child:last-child.is-circle{border-radius:50%}.aah-button-group>.aah-button:not(:first-child):not(:last-child){border-radius:0}.aah-button-group>.aah-button:not(:last-child){margin-right:-1px}.aah-button-group>.aah-button:hover,.aah-button-group>.aah-button:focus,.aah-button-group>.aah-button:active{z-index:1}.aah-button-group>.aah-button.is-active{z-index:1}.aah-button-group>.aah-dropdown>.aah-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--primary:first-child{border-right-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--primary:last-child{border-left-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--primary:not(:first-child):not(:last-child){border-left-color:var(--aah-button-divide-border-color);border-right-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--success:first-child{border-right-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--success:last-child{border-left-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--success:not(:first-child):not(:last-child){border-left-color:var(--aah-button-divide-border-color);border-right-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--warning:first-child{border-right-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--warning:last-child{border-left-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--warning:not(:first-child):not(:last-child){border-left-color:var(--aah-button-divide-border-color);border-right-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--danger:first-child{border-right-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--danger:last-child{border-left-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--danger:not(:first-child):not(:last-child){border-left-color:var(--aah-button-divide-border-color);border-right-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--info:first-child{border-right-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--info:last-child{border-left-color:var(--aah-button-divide-border-color)}.aah-button-group .aah-button--info:not(:first-child):not(:last-child){border-left-color:var(--aah-button-divide-border-color);border-right-color:var(--aah-button-divide-border-color)}.aah-button{--aah-button-font-weight: var(--aah-font-weight-primary);--aah-button-border-color: var(--aah-border-color);--aah-button-bg-color: var(--aah-fill-color-blank);--aah-button-text-color: var(--aah-text-color-regular);--aah-button-disabled-text-color: var(--aah-disabled-text-color);--aah-button-disabled-bg-color: var(--aah-fill-color-blank);--aah-button-disabled-border-color: var(--aah-border-color-light);--aah-button-divide-border-color: rgba(255, 255, 255, .5);--aah-button-hover-text-color: var(--aah-color-primary);--aah-button-hover-bg-color: var(--aah-color-primary-light-9);--aah-button-hover-border-color: var(--aah-color-primary-light-7);--aah-button-active-text-color: var(--aah-button-hover-text-color);--aah-button-active-border-color: var(--aah-color-primary);--aah-button-active-bg-color: var(--aah-button-hover-bg-color);--aah-button-outline-color: var(--aah-color-primary-light-5);--aah-button-hover-link-text-color: var(--aah-color-info);--aah-button-active-color: var(--aah-text-color-primary)}.aah-button{display:inline-flex;justify-content:center;align-items:center;line-height:1;height:32px;white-space:nowrap;cursor:pointer;color:var(--aah-button-text-color);text-align:center;box-sizing:border-box;outline:none;transition:.1s;font-weight:var(--aah-button-font-weight);-webkit-user-select:none;user-select:none;vertical-align:middle;-webkit-appearance:none;background-color:var(--aah-button-bg-color);border:var(--aah-border);border-color:var(--aah-button-border-color);padding:8px 15px;font-size:var(--aah-font-size-base);border-radius:var(--aah-border-radius-base)}.aah-button:hover{color:var(--aah-button-hover-text-color);border-color:var(--aah-button-hover-border-color);background-color:var(--aah-button-hover-bg-color);outline:none}.aah-button:active{color:var(--aah-button-active-text-color);border-color:var(--aah-button-active-border-color);background-color:var(--aah-button-active-bg-color);outline:none}.aah-button:focus-visible{outline:2px solid var(--aah-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.aah-button>span{display:inline-flex;align-items:center}.aah-button+.aah-button{margin-left:12px}.aah-button.is-round{padding:8px 15px}.aah-button::-moz-focus-inner{border:0}.aah-button [class*=aah-icon]+span{margin-left:6px}.aah-button [class*=aah-icon] svg{vertical-align:bottom}.aah-button.is-plain{--aah-button-hover-text-color: var(--aah-color-primary);--aah-button-hover-bg-color: var(--aah-fill-color-blank);--aah-button-hover-border-color: var(--aah-color-primary)}.aah-button.is-active{color:var(--aah-button-active-text-color);border-color:var(--aah-button-active-border-color);background-color:var(--aah-button-active-bg-color);outline:none}.aah-button.is-disabled,.aah-button.is-disabled:hover{color:var(--aah-button-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--aah-button-disabled-bg-color);border-color:var(--aah-button-disabled-border-color)}.aah-button.is-loading{position:relative;pointer-events:none}.aah-button.is-loading:before{z-index:1;pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:var(--aah-mask-color-extra-light)}.aah-button.is-round{border-radius:var(--aah-border-radius-round)}.aah-button.is-circle{width:32px;border-radius:50%;padding:8px}.aah-button.is-text{color:var(--aah-button-text-color);border:0 solid transparent;background-color:transparent}.aah-button.is-text.is-disabled{color:var(--aah-button-disabled-text-color);background-color:transparent!important}.aah-button.is-text:not(.is-disabled):hover{background-color:var(--aah-fill-color-light)}.aah-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--aah-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.aah-button.is-text:not(.is-disabled):active{background-color:var(--aah-fill-color)}.aah-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--aah-fill-color-light)}.aah-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--aah-fill-color)}.aah-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--aah-fill-color-dark)}.aah-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.aah-button.is-link{border-color:transparent;color:var(--aah-button-text-color);background:transparent;padding:2px;height:auto}.aah-button.is-link:hover{color:var(--aah-button-hover-link-text-color)}.aah-button.is-link.is-disabled{color:var(--aah-button-disabled-text-color);background-color:transparent!important;border-color:transparent!important}.aah-button.is-link:not(.is-disabled):hover{border-color:transparent;background-color:transparent}.aah-button.is-link:not(.is-disabled):active{color:var(--aah-button-active-color);border-color:transparent;background-color:transparent}.aah-button--text{border-color:transparent;background:transparent;color:var(--aah-color-primary);padding-left:0;padding-right:0}.aah-button--text.is-disabled{color:var(--aah-button-disabled-text-color);background-color:transparent!important;border-color:transparent!important}.aah-button--text:not(.is-disabled):hover{color:var(--aah-color-primary-light-3);border-color:transparent;background-color:transparent}.aah-button--text:not(.is-disabled):active{color:var(--aah-color-primary-dark-2);border-color:transparent;background-color:transparent}.aah-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.aah-button--primary{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-primary);--aah-button-border-color: var(--aah-color-primary);--aah-button-outline-color: var(--aah-color-primary-light-5);--aah-button-active-color: var(--aah-color-primary-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-primary-light-5);--aah-button-hover-bg-color: var(--aah-color-primary-light-3);--aah-button-hover-border-color: var(--aah-color-primary-light-3);--aah-button-active-bg-color: var(--aah-color-primary-dark-2);--aah-button-active-border-color: var(--aah-color-primary-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-primary-light-5);--aah-button-disabled-border-color: var(--aah-color-primary-light-5)}.aah-button--primary.is-plain,.aah-button--primary.is-text,.aah-button--primary.is-link{--aah-button-text-color: var(--aah-color-primary);--aah-button-bg-color: var(--aah-color-primary-light-9);--aah-button-border-color: var(--aah-color-primary-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-primary);--aah-button-hover-border-color: var(--aah-color-primary);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--primary.is-plain.is-disabled,.aah-button--primary.is-plain.is-disabled:hover,.aah-button--primary.is-plain.is-disabled:focus,.aah-button--primary.is-plain.is-disabled:active,.aah-button--primary.is-text.is-disabled,.aah-button--primary.is-text.is-disabled:hover,.aah-button--primary.is-text.is-disabled:focus,.aah-button--primary.is-text.is-disabled:active,.aah-button--primary.is-link.is-disabled,.aah-button--primary.is-link.is-disabled:hover,.aah-button--primary.is-link.is-disabled:focus,.aah-button--primary.is-link.is-disabled:active{color:var(--aah-color-primary-light-5);background-color:var(--aah-color-primary-light-9);border-color:var(--aah-color-primary-light-8)}.aah-button--success{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-success);--aah-button-border-color: var(--aah-color-success);--aah-button-outline-color: var(--aah-color-success-light-5);--aah-button-active-color: var(--aah-color-success-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-success-light-5);--aah-button-hover-bg-color: var(--aah-color-success-light-3);--aah-button-hover-border-color: var(--aah-color-success-light-3);--aah-button-active-bg-color: var(--aah-color-success-dark-2);--aah-button-active-border-color: var(--aah-color-success-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-success-light-5);--aah-button-disabled-border-color: var(--aah-color-success-light-5)}.aah-button--success.is-plain,.aah-button--success.is-text,.aah-button--success.is-link{--aah-button-text-color: var(--aah-color-success);--aah-button-bg-color: var(--aah-color-success-light-9);--aah-button-border-color: var(--aah-color-success-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-success);--aah-button-hover-border-color: var(--aah-color-success);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--success.is-plain.is-disabled,.aah-button--success.is-plain.is-disabled:hover,.aah-button--success.is-plain.is-disabled:focus,.aah-button--success.is-plain.is-disabled:active,.aah-button--success.is-text.is-disabled,.aah-button--success.is-text.is-disabled:hover,.aah-button--success.is-text.is-disabled:focus,.aah-button--success.is-text.is-disabled:active,.aah-button--success.is-link.is-disabled,.aah-button--success.is-link.is-disabled:hover,.aah-button--success.is-link.is-disabled:focus,.aah-button--success.is-link.is-disabled:active{color:var(--aah-color-success-light-5);background-color:var(--aah-color-success-light-9);border-color:var(--aah-color-success-light-8)}.aah-button--warning{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-warning);--aah-button-border-color: var(--aah-color-warning);--aah-button-outline-color: var(--aah-color-warning-light-5);--aah-button-active-color: var(--aah-color-warning-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-warning-light-5);--aah-button-hover-bg-color: var(--aah-color-warning-light-3);--aah-button-hover-border-color: var(--aah-color-warning-light-3);--aah-button-active-bg-color: var(--aah-color-warning-dark-2);--aah-button-active-border-color: var(--aah-color-warning-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-warning-light-5);--aah-button-disabled-border-color: var(--aah-color-warning-light-5)}.aah-button--warning.is-plain,.aah-button--warning.is-text,.aah-button--warning.is-link{--aah-button-text-color: var(--aah-color-warning);--aah-button-bg-color: var(--aah-color-warning-light-9);--aah-button-border-color: var(--aah-color-warning-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-warning);--aah-button-hover-border-color: var(--aah-color-warning);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--warning.is-plain.is-disabled,.aah-button--warning.is-plain.is-disabled:hover,.aah-button--warning.is-plain.is-disabled:focus,.aah-button--warning.is-plain.is-disabled:active,.aah-button--warning.is-text.is-disabled,.aah-button--warning.is-text.is-disabled:hover,.aah-button--warning.is-text.is-disabled:focus,.aah-button--warning.is-text.is-disabled:active,.aah-button--warning.is-link.is-disabled,.aah-button--warning.is-link.is-disabled:hover,.aah-button--warning.is-link.is-disabled:focus,.aah-button--warning.is-link.is-disabled:active{color:var(--aah-color-warning-light-5);background-color:var(--aah-color-warning-light-9);border-color:var(--aah-color-warning-light-8)}.aah-button--danger{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-danger);--aah-button-border-color: var(--aah-color-danger);--aah-button-outline-color: var(--aah-color-danger-light-5);--aah-button-active-color: var(--aah-color-danger-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-danger-light-5);--aah-button-hover-bg-color: var(--aah-color-danger-light-3);--aah-button-hover-border-color: var(--aah-color-danger-light-3);--aah-button-active-bg-color: var(--aah-color-danger-dark-2);--aah-button-active-border-color: var(--aah-color-danger-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-danger-light-5);--aah-button-disabled-border-color: var(--aah-color-danger-light-5)}.aah-button--danger.is-plain,.aah-button--danger.is-text,.aah-button--danger.is-link{--aah-button-text-color: var(--aah-color-danger);--aah-button-bg-color: var(--aah-color-danger-light-9);--aah-button-border-color: var(--aah-color-danger-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-danger);--aah-button-hover-border-color: var(--aah-color-danger);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--danger.is-plain.is-disabled,.aah-button--danger.is-plain.is-disabled:hover,.aah-button--danger.is-plain.is-disabled:focus,.aah-button--danger.is-plain.is-disabled:active,.aah-button--danger.is-text.is-disabled,.aah-button--danger.is-text.is-disabled:hover,.aah-button--danger.is-text.is-disabled:focus,.aah-button--danger.is-text.is-disabled:active,.aah-button--danger.is-link.is-disabled,.aah-button--danger.is-link.is-disabled:hover,.aah-button--danger.is-link.is-disabled:focus,.aah-button--danger.is-link.is-disabled:active{color:var(--aah-color-danger-light-5);background-color:var(--aah-color-danger-light-9);border-color:var(--aah-color-danger-light-8)}.aah-button--info{--aah-button-text-color: var(--aah-color-white);--aah-button-bg-color: var(--aah-color-info);--aah-button-border-color: var(--aah-color-info);--aah-button-outline-color: var(--aah-color-info-light-5);--aah-button-active-color: var(--aah-color-info-dark-2);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-link-text-color: var(--aah-color-info-light-5);--aah-button-hover-bg-color: var(--aah-color-info-light-3);--aah-button-hover-border-color: var(--aah-color-info-light-3);--aah-button-active-bg-color: var(--aah-color-info-dark-2);--aah-button-active-border-color: var(--aah-color-info-dark-2);--aah-button-disabled-text-color: var(--aah-color-white);--aah-button-disabled-bg-color: var(--aah-color-info-light-5);--aah-button-disabled-border-color: var(--aah-color-info-light-5)}.aah-button--info.is-plain,.aah-button--info.is-text,.aah-button--info.is-link{--aah-button-text-color: var(--aah-color-info);--aah-button-bg-color: var(--aah-color-info-light-9);--aah-button-border-color: var(--aah-color-info-light-5);--aah-button-hover-text-color: var(--aah-color-white);--aah-button-hover-bg-color: var(--aah-color-info);--aah-button-hover-border-color: var(--aah-color-info);--aah-button-active-text-color: var(--aah-color-white)}.aah-button--info.is-plain.is-disabled,.aah-button--info.is-plain.is-disabled:hover,.aah-button--info.is-plain.is-disabled:focus,.aah-button--info.is-plain.is-disabled:active,.aah-button--info.is-text.is-disabled,.aah-button--info.is-text.is-disabled:hover,.aah-button--info.is-text.is-disabled:focus,.aah-button--info.is-text.is-disabled:active,.aah-button--info.is-link.is-disabled,.aah-button--info.is-link.is-disabled:hover,.aah-button--info.is-link.is-disabled:focus,.aah-button--info.is-link.is-disabled:active{color:var(--aah-color-info-light-5);background-color:var(--aah-color-info-light-9);border-color:var(--aah-color-info-light-8)}.aah-button--large{--aah-button-size: 40px;height:var(--aah-button-size);padding:12px 19px;font-size:var(--aah-font-size-base);border-radius:var(--aah-border-radius-base)}.aah-button--large [class*=aah-icon]+span{margin-left:8px}.aah-button--large.is-round{padding:12px 19px}.aah-button--large.is-circle{width:var(--aah-button-size);padding:12px}.aah-button--small{--aah-button-size: 24px;height:var(--aah-button-size);padding:5px 11px;font-size:12px;border-radius:calc(var(--aah-border-radius-base) - 1px)}.aah-button--small [class*=aah-icon]+span{margin-left:4px}.aah-button--small.is-round{padding:5px 11px}.aah-button--small.is-circle{width:var(--aah-button-size);padding:5px}.aah-calendar{--aah-calendar-border: var(--aah-table-border, 1px solid var(--aah-border-color-lighter));--aah-calendar-header-border-bottom: var(--aah-calendar-border);--aah-calendar-selected-bg-color: var(--aah-color-primary-light-9);--aah-calendar-cell-width: 85px;background-color:var(--aah-fill-color-blank)}.aah-calendar__header{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:var(--aah-calendar-header-border-bottom)}.aah-calendar__title{color:var(--aah-text-color);align-self:center}.aah-calendar__body{padding:12px 20px 35px}.aah-calendar-table{table-layout:fixed;width:100%}.aah-calendar-table thead th{padding:12px 0;color:var(--aah-text-color-regular);font-weight:400}.aah-calendar-table:not(.is-range) td.prev,.aah-calendar-table:not(.is-range) td.next{color:var(--aah-text-color-placeholder)}.aah-calendar-table td{border-bottom:var(--aah-calendar-border);border-right:var(--aah-calendar-border);vertical-align:top;transition:background-color var(--aah-transition-duration-fast) ease}.aah-calendar-table td.is-selected{background-color:var(--aah-calendar-selected-bg-color)}.aah-calendar-table td.is-today{color:var(--aah-color-primary)}.aah-calendar-table tr:first-child td{border-top:var(--aah-calendar-border)}.aah-calendar-table tr td:first-child{border-left:var(--aah-calendar-border)}.aah-calendar-table tr.aah-calendar-table__row--hide-border td{border-top:none}.aah-calendar-table .aah-calendar-day{box-sizing:border-box;padding:8px;height:var(--aah-calendar-cell-width)}.aah-calendar-table .aah-calendar-day:hover{cursor:pointer;background-color:var(--aah-calendar-selected-bg-color)}.aah-card{--aah-card-border-color: var(--aah-border-color-light);--aah-card-border-radius: 4px;--aah-card-padding: 20px;--aah-card-bg-color: var(--aah-fill-color-blank)}.aah-card{border-radius:var(--aah-card-border-radius);border:1px solid var(--aah-card-border-color);background-color:var(--aah-card-bg-color);overflow:hidden;color:var(--aah-text-color-primary);transition:var(--aah-transition-duration)}.aah-card.is-always-shadow{box-shadow:var(--aah-box-shadow-light)}.aah-card.is-hover-shadow:hover,.aah-card.is-hover-shadow:focus{box-shadow:var(--aah-box-shadow-light)}.aah-card__header{padding:calc(var(--aah-card-padding) - 2px) var(--aah-card-padding);border-bottom:1px solid var(--aah-card-border-color);box-sizing:border-box}.aah-card__body{padding:var(--aah-card-padding)}.aah-card__footer{padding:calc(var(--aah-card-padding) - 2px) var(--aah-card-padding);border-top:1px solid var(--aah-card-border-color);box-sizing:border-box}.aah-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:calc(var(--aah-index-normal) - 1)}.aah-carousel__item.is-active{z-index:calc(var(--aah-index-normal) - 1)}.aah-carousel__item.is-animating{transition:transform .4s ease-in-out}.aah-carousel__item--card{width:50%;transition:transform .4s ease-in-out}.aah-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--aah-index-normal)}.aah-carousel__item--card.is-in-stage:hover .aah-carousel__mask,.aah-carousel__item--card.is-in-stage.is-hover .aah-carousel__mask{opacity:.12}.aah-carousel__item--card.is-active{z-index:calc(var(--aah-index-normal) + 1)}.aah-carousel__item--card-vertical{width:100%;height:50%}.aah-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:var(--aah-color-white);opacity:.24;transition:var(--aah-transition-duration-fast)}.aah-carousel{--aah-carousel-arrow-font-size: 12px;--aah-carousel-arrow-size: 36px;--aah-carousel-arrow-background: rgba(31, 45, 61, .11);--aah-carousel-arrow-hover-background: rgba(31, 45, 61, .23);--aah-carousel-indicator-width: 30px;--aah-carousel-indicator-height: 2px;--aah-carousel-indicator-padding-horizontal: 4px;--aah-carousel-indicator-padding-vertical: 12px;--aah-carousel-indicator-out-color: var(--aah-border-color-hover);position:relative}.aah-carousel--horizontal,.aah-carousel--vertical{overflow:hidden}.aah-carousel__container{position:relative;height:300px}.aah-carousel__arrow{border:none;outline:none;padding:0;margin:0;height:var(--aah-carousel-arrow-size);width:var(--aah-carousel-arrow-size);cursor:pointer;transition:var(--aah-transition-duration);border-radius:50%;background-color:var(--aah-carousel-arrow-background);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:var(--aah-carousel-arrow-font-size);display:inline-flex;justify-content:center;align-items:center}.aah-carousel__arrow--left{left:16px}.aah-carousel__arrow--right{right:16px}.aah-carousel__arrow:hover{background-color:var(--aah-carousel-arrow-hover-background)}.aah-carousel__arrow i{cursor:pointer}.aah-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:calc(var(--aah-index-normal) + 1)}.aah-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.aah-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.aah-carousel__indicators--outside{bottom:calc(var(--aah-carousel-indicator-height) + var(--aah-carousel-indicator-padding-vertical) * 2);text-align:center;position:static;transform:none}.aah-carousel__indicators--outside .aah-carousel__indicator:hover button{opacity:.64}.aah-carousel__indicators--outside button{background-color:var(--aah-carousel-indicator-out-color);opacity:.24}.aah-carousel__indicators--right{right:0}.aah-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.aah-carousel__indicators--labels .aah-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px;color:#000}.aah-carousel__indicators--labels .aah-carousel__indicator{padding:6px 4px}.aah-carousel__indicator{background-color:transparent;cursor:pointer}.aah-carousel__indicator:hover button{opacity:.72}.aah-carousel__indicator--horizontal{display:inline-block;padding:var(--aah-carousel-indicator-padding-vertical) var(--aah-carousel-indicator-padding-horizontal)}.aah-carousel__indicator--vertical{padding:var(--aah-carousel-indicator-padding-horizontal) var(--aah-carousel-indicator-padding-vertical)}.aah-carousel__indicator--vertical .aah-carousel__button{width:var(--aah-carousel-indicator-height);height:calc(var(--aah-carousel-indicator-width) / 2)}.aah-carousel__indicator.is-active button{opacity:1}.aah-carousel__button{display:block;opacity:.48;width:var(--aah-carousel-indicator-width);height:var(--aah-carousel-indicator-height);background-color:#fff;border:none;outline:none;padding:0;margin:0;cursor:pointer;transition:var(--aah-transition-duration)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{transform:translateY(-50%) translate(-10px);opacity:0}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{transform:translateY(-50%) translate(10px);opacity:0}.aah-transitioning{filter:url(#elCarouselHorizontal)}.aah-transitioning-vertical{filter:url(#elCarouselVertical)}.aah-cascader-panel{--aah-cascader-menu-text-color: var(--aah-text-color-regular);--aah-cascader-menu-selected-text-color: var(--aah-color-primary);--aah-cascader-menu-fill: var(--aah-bg-color-overlay);--aah-cascader-menu-font-size: var(--aah-font-size-base);--aah-cascader-menu-radius: var(--aah-border-radius-base);--aah-cascader-menu-border: solid 1px var(--aah-border-color-light);--aah-cascader-menu-shadow: var(--aah-box-shadow-light);--aah-cascader-node-background-hover: var(--aah-fill-color-light);--aah-cascader-node-color-disabled: var(--aah-text-color-placeholder);--aah-cascader-color-empty: var(--aah-text-color-placeholder);--aah-cascader-tag-background: var(--aah-fill-color)}.aah-cascader-panel{display:flex;border-radius:var(--aah-cascader-menu-radius);font-size:var(--aah-cascader-menu-font-size)}.aah-cascader-panel.is-bordered{border:var(--aah-cascader-menu-border);border-radius:var(--aah-cascader-menu-radius)}.aah-cascader-menu{min-width:180px;box-sizing:border-box;color:var(--aah-cascader-menu-text-color);border-right:var(--aah-cascader-menu-border)}.aah-cascader-menu:last-child{border-right:none}.aah-cascader-menu:last-child .aah-cascader-node{padding-right:20px}.aah-cascader-menu__wrap.aah-scrollbar__wrap{height:204px}.aah-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.aah-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.aah-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;align-items:center;color:var(--aah-cascader-color-empty)}.aah-cascader-menu__empty-text .is-loading{margin-right:2px}.aah-cascader-node{position:relative;display:flex;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:none}.aah-cascader-node.is-selectable.in-active-path{color:var(--aah-cascader-menu-text-color)}.aah-cascader-node.in-active-path,.aah-cascader-node.is-selectable.in-checked-path,.aah-cascader-node.is-active{color:var(--aah-cascader-menu-selected-text-color);font-weight:700}.aah-cascader-node:not(.is-disabled){cursor:pointer}.aah-cascader-node:not(.is-disabled):hover,.aah-cascader-node:not(.is-disabled):focus{background:var(--aah-cascader-node-background-hover)}.aah-cascader-node.is-disabled{color:var(--aah-cascader-node-color-disabled);cursor:not-allowed}.aah-cascader-node__prefix{position:absolute;left:10px}.aah-cascader-node__postfix{position:absolute;right:10px}.aah-cascader-node__label{flex:1;text-align:left;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.aah-cascader-node>.aah-checkbox{margin-right:0}.aah-cascader-node>.aah-radio{margin-right:0}.aah-cascader-node>.aah-radio .aah-radio__label{padding-left:0}.aah-cascader{--aah-cascader-menu-text-color: var(--aah-text-color-regular);--aah-cascader-menu-selected-text-color: var(--aah-color-primary);--aah-cascader-menu-fill: var(--aah-bg-color-overlay);--aah-cascader-menu-font-size: var(--aah-font-size-base);--aah-cascader-menu-radius: var(--aah-border-radius-base);--aah-cascader-menu-border: solid 1px var(--aah-border-color-light);--aah-cascader-menu-shadow: var(--aah-box-shadow-light);--aah-cascader-node-background-hover: var(--aah-fill-color-light);--aah-cascader-node-color-disabled: var(--aah-text-color-placeholder);--aah-cascader-color-empty: var(--aah-text-color-placeholder);--aah-cascader-tag-background: var(--aah-fill-color);display:inline-block;vertical-align:middle;position:relative;font-size:var(--aah-font-size-base);line-height:32px;outline:none}.aah-cascader:not(.is-disabled):hover .aah-input__wrapper{cursor:pointer;box-shadow:0 0 0 1px var(--aah-input-hover-border-color) inset}.aah-cascader .aah-input{display:flex;cursor:pointer}.aah-cascader .aah-input .aah-input__inner{text-overflow:ellipsis;cursor:pointer}.aah-cascader .aah-input .aah-input__suffix-inner .aah-icon{height:calc(100% - 2px)}.aah-cascader .aah-input .aah-input__suffix-inner .aah-icon svg{vertical-align:middle}.aah-cascader .aah-input .icon-arrow-down{transition:transform var(--aah-transition-duration);font-size:14px}.aah-cascader .aah-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.aah-cascader .aah-input .icon-circle-close:hover{color:var(--aah-input-clear-hover-color, var(--aah-text-color-secondary))}.aah-cascader .aah-input.is-focus .aah-input__wrapper{box-shadow:0 0 0 1px var(--aah-input-focus-border-color, var(--aah-color-primary)) inset}.aah-cascader--large{font-size:14px;line-height:40px}.aah-cascader--small{font-size:12px;line-height:24px}.aah-cascader.is-disabled .aah-cascader__label{z-index:calc(var(--aah-index-normal) + 1);color:var(--aah-disabled-text-color)}.aah-cascader__dropdown{--aah-cascader-menu-text-color: var(--aah-text-color-regular);--aah-cascader-menu-selected-text-color: var(--aah-color-primary);--aah-cascader-menu-fill: var(--aah-bg-color-overlay);--aah-cascader-menu-font-size: var(--aah-font-size-base);--aah-cascader-menu-radius: var(--aah-border-radius-base);--aah-cascader-menu-border: solid 1px var(--aah-border-color-light);--aah-cascader-menu-shadow: var(--aah-box-shadow-light);--aah-cascader-node-background-hover: var(--aah-fill-color-light);--aah-cascader-node-color-disabled: var(--aah-text-color-placeholder);--aah-cascader-color-empty: var(--aah-text-color-placeholder);--aah-cascader-tag-background: var(--aah-fill-color)}.aah-cascader__dropdown{font-size:var(--aah-cascader-menu-font-size);border-radius:var(--aah-cascader-menu-radius)}.aah-cascader__dropdown.aah-popper{background:var(--aah-cascader-menu-fill);border:var(--aah-cascader-menu-border);box-shadow:var(--aah-cascader-menu-shadow)}.aah-cascader__dropdown.aah-popper .aah-popper__arrow:before{border:var(--aah-cascader-menu-border)}.aah-cascader__dropdown.aah-popper[data-popper-placement^=top] .aah-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.aah-cascader__dropdown.aah-popper[data-popper-placement^=bottom] .aah-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.aah-cascader__dropdown.aah-popper[data-popper-placement^=left] .aah-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.aah-cascader__dropdown.aah-popper[data-popper-placement^=right] .aah-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.aah-cascader__dropdown.aah-popper{box-shadow:var(--aah-cascader-menu-shadow)}.aah-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:flex;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.aah-cascader__tags .aah-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:var(--aah-cascader-tag-background)}.aah-cascader__tags .aah-tag:not(.is-hit){border-color:transparent}.aah-cascader__tags .aah-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.aah-cascader__tags .aah-tag .aah-icon-close{flex:none;background-color:var(--aah-text-color-placeholder);color:var(--aah-color-white)}.aah-cascader__tags .aah-tag .aah-icon-close:hover{background-color:var(--aah-text-color-secondary)}.aah-cascader__tags.is-validate{right:55px}.aah-cascader__collapse-tags{white-space:normal;z-index:var(--aah-index-normal)}.aah-cascader__collapse-tags .aah-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:var(--aah-fill-color)}.aah-cascader__collapse-tags .aah-tag:not(.is-hit){border-color:transparent}.aah-cascader__collapse-tags .aah-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.aah-cascader__collapse-tags .aah-tag .aah-icon-close{flex:none;background-color:var(--aah-text-color-placeholder);color:var(--aah-color-white)}.aah-cascader__collapse-tags .aah-tag .aah-icon-close:hover{background-color:var(--aah-text-color-secondary)}.aah-cascader__suggestion-panel{border-radius:var(--aah-cascader-menu-radius)}.aah-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:var(--aah-font-size-base);color:var(--aah-cascader-menu-text-color);text-align:center}.aah-cascader__suggestion-item{display:flex;justify-content:space-between;align-items:center;height:34px;padding:0 15px;text-align:left;outline:none;cursor:pointer}.aah-cascader__suggestion-item:hover,.aah-cascader__suggestion-item:focus{background:var(--aah-cascader-node-background-hover)}.aah-cascader__suggestion-item.is-checked{color:var(--aah-cascader-menu-selected-text-color);font-weight:700}.aah-cascader__suggestion-item>span{margin-right:10px}.aah-cascader__empty-text{margin:10px 0;color:var(--aah-cascader-color-empty)}.aah-cascader__search-input{flex:1;height:24px;min-width:60px;margin:2px 0 2px 11px;padding:0;color:var(--aah-cascader-menu-text-color);border:none;outline:none;box-sizing:border-box;background:transparent}.aah-cascader__search-input::placeholder{color:transparent}.aah-check-tag{background-color:var(--aah-color-info-light-9);border-radius:var(--aah-border-radius-base);color:var(--aah-color-info);cursor:pointer;display:inline-block;font-size:var(--aah-font-size-base);line-height:var(--aah-font-size-base);padding:7px 15px;transition:var(--aah-transition-all);font-weight:700}.aah-check-tag:hover{background-color:var(--aah-color-info-light-7)}.aah-check-tag.is-checked.aah-check-tag--primary{background-color:var(--aah-color-primary-light-8);color:var(--aah-color-primary)}.aah-check-tag.is-checked.aah-check-tag--primary:hover{background-color:var(--aah-color-primary-light-7)}.aah-check-tag.is-checked.aah-check-tag--success{background-color:var(--aah-color-success-light-8);color:var(--aah-color-success)}.aah-check-tag.is-checked.aah-check-tag--success:hover{background-color:var(--aah-color-success-light-7)}.aah-check-tag.is-checked.aah-check-tag--warning{background-color:var(--aah-color-warning-light-8);color:var(--aah-color-warning)}.aah-check-tag.is-checked.aah-check-tag--warning:hover{background-color:var(--aah-color-warning-light-7)}.aah-check-tag.is-checked.aah-check-tag--danger{background-color:var(--aah-color-danger-light-8);color:var(--aah-color-danger)}.aah-check-tag.is-checked.aah-check-tag--danger:hover{background-color:var(--aah-color-danger-light-7)}.aah-check-tag.is-checked.aah-check-tag--error{background-color:var(--aah-color-error-light-8);color:var(--aah-color-error)}.aah-check-tag.is-checked.aah-check-tag--error:hover{background-color:var(--aah-color-error-light-7)}.aah-check-tag.is-checked.aah-check-tag--info{background-color:var(--aah-color-info-light-8);color:var(--aah-color-info)}.aah-check-tag.is-checked.aah-check-tag--info:hover{background-color:var(--aah-color-info-light-7)}.aah-checkbox-button{--aah-checkbox-button-checked-bg-color: var(--aah-color-primary);--aah-checkbox-button-checked-text-color: var(--aah-color-white);--aah-checkbox-button-checked-border-color: var(--aah-color-primary)}.aah-checkbox-button{position:relative;display:inline-block}.aah-checkbox-button__inner{display:inline-block;line-height:1;font-weight:var(--aah-checkbox-font-weight);white-space:nowrap;vertical-align:middle;cursor:pointer;background:var(--aah-button-bg-color, var(--aah-fill-color-blank));border:var(--aah-border);border-left-color:transparent;color:var(--aah-button-text-color, var(--aah-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:none;margin:0;position:relative;transition:var(--aah-transition-all);-webkit-user-select:none;user-select:none;padding:8px 15px;font-size:var(--aah-font-size-base);border-radius:0}.aah-checkbox-button__inner.is-round{padding:8px 15px}.aah-checkbox-button__inner:hover{color:var(--aah-color-primary)}.aah-checkbox-button__inner [class*=aah-icon-]{line-height:.9}.aah-checkbox-button__inner [class*=aah-icon-]+span{margin-left:5px}.aah-checkbox-button__original{opacity:0;outline:none;position:absolute;margin:0;z-index:-1}.aah-checkbox-button.is-checked .aah-checkbox-button__inner{color:var(--aah-checkbox-button-checked-text-color);background-color:var(--aah-checkbox-button-checked-bg-color);border-color:var(--aah-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--aah-color-primary-light-7)}.aah-checkbox-button.is-checked:first-child .aah-checkbox-button__inner{border-left-color:var(--aah-checkbox-button-checked-border-color)}.aah-checkbox-button.is-disabled .aah-checkbox-button__inner{color:var(--aah-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--aah-button-disabled-bg-color, var(--aah-fill-color-blank));border-color:var(--aah-button-disabled-border-color, var(--aah-border-color-light));box-shadow:none}.aah-checkbox-button.is-disabled:first-child .aah-checkbox-button__inner{border-left-color:var(--aah-button-disabled-border-color, var(--aah-border-color-light))}.aah-checkbox-button:first-child .aah-checkbox-button__inner{border-left:var(--aah-border);border-top-left-radius:var(--aah-border-radius-base);border-bottom-left-radius:var(--aah-border-radius-base);box-shadow:none!important}.aah-checkbox-button.is-focus .aah-checkbox-button__inner{border-color:var(--aah-checkbox-button-checked-border-color)}.aah-checkbox-button:last-child .aah-checkbox-button__inner{border-top-right-radius:var(--aah-border-radius-base);border-bottom-right-radius:var(--aah-border-radius-base)}.aah-checkbox-button--large .aah-checkbox-button__inner{padding:12px 19px;font-size:var(--aah-font-size-base);border-radius:0}.aah-checkbox-button--large .aah-checkbox-button__inner.is-round{padding:12px 19px}.aah-checkbox-button--small .aah-checkbox-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.aah-checkbox-button--small .aah-checkbox-button__inner.is-round{padding:5px 11px}.aah-checkbox-group{font-size:0;line-height:0}.aah-checkbox{--aah-checkbox-font-size: 14px;--aah-checkbox-font-weight: var(--aah-font-weight-primary);--aah-checkbox-text-color: var(--aah-text-color-regular);--aah-checkbox-input-height: 14px;--aah-checkbox-input-width: 14px;--aah-checkbox-border-radius: var(--aah-border-radius-small);--aah-checkbox-bg-color: var(--aah-fill-color-blank);--aah-checkbox-input-border: var(--aah-border);--aah-checkbox-disabled-border-color: var(--aah-border-color);--aah-checkbox-disabled-input-fill: var(--aah-fill-color-light);--aah-checkbox-disabled-icon-color: var(--aah-text-color-placeholder);--aah-checkbox-disabled-checked-input-fill: var(--aah-border-color-extra-light);--aah-checkbox-disabled-checked-input-border-color: var(--aah-border-color);--aah-checkbox-disabled-checked-icon-color: var(--aah-text-color-placeholder);--aah-checkbox-checked-text-color: var(--aah-color-primary);--aah-checkbox-checked-input-border-color: var(--aah-color-primary);--aah-checkbox-checked-bg-color: var(--aah-color-primary);--aah-checkbox-checked-icon-color: var(--aah-color-white);--aah-checkbox-input-border-color-hover: var(--aah-color-primary)}.aah-checkbox{color:var(--aah-checkbox-text-color);font-weight:var(--aah-checkbox-font-weight);font-size:var(--aah-font-size-base);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;-webkit-user-select:none;user-select:none;margin-right:30px;height:var(--aah-checkbox-height, 32px)}.aah-checkbox.is-disabled{cursor:not-allowed}.aah-checkbox.is-bordered{padding:0 15px 0 9px;border-radius:var(--aah-border-radius-base);border:var(--aah-border);box-sizing:border-box}.aah-checkbox.is-bordered.is-checked{border-color:var(--aah-color-primary)}.aah-checkbox.is-bordered.is-disabled{border-color:var(--aah-border-color-lighter)}.aah-checkbox.is-bordered.aah-checkbox--large{padding:0 19px 0 11px;border-radius:var(--aah-border-radius-base)}.aah-checkbox.is-bordered.aah-checkbox--large .aah-checkbox__label{font-size:var(--aah-font-size-base)}.aah-checkbox.is-bordered.aah-checkbox--large .aah-checkbox__inner{height:14px;width:14px}.aah-checkbox.is-bordered.aah-checkbox--small{padding:0 11px 0 7px;border-radius:calc(var(--aah-border-radius-base) - 1px)}.aah-checkbox.is-bordered.aah-checkbox--small .aah-checkbox__label{font-size:12px}.aah-checkbox.is-bordered.aah-checkbox--small .aah-checkbox__inner{height:12px;width:12px}.aah-checkbox.is-bordered.aah-checkbox--small .aah-checkbox__inner:after{height:6px;width:2px}.aah-checkbox input:focus-visible+.aah-checkbox__inner{outline:2px solid var(--aah-checkbox-input-border-color-hover);outline-offset:1px;border-radius:var(--aah-checkbox-border-radius)}.aah-checkbox__input{white-space:nowrap;cursor:pointer;outline:none;display:inline-flex;position:relative}.aah-checkbox__input.is-disabled .aah-checkbox__inner{background-color:var(--aah-checkbox-disabled-input-fill);border-color:var(--aah-checkbox-disabled-border-color);cursor:not-allowed}.aah-checkbox__input.is-disabled .aah-checkbox__inner:after{cursor:not-allowed;border-color:var(--aah-checkbox-disabled-icon-color)}.aah-checkbox__input.is-disabled.is-checked .aah-checkbox__inner{background-color:var(--aah-checkbox-disabled-checked-input-fill);border-color:var(--aah-checkbox-disabled-checked-input-border-color)}.aah-checkbox__input.is-disabled.is-checked .aah-checkbox__inner:after{border-color:var(--aah-checkbox-disabled-checked-icon-color)}.aah-checkbox__input.is-disabled.is-indeterminate .aah-checkbox__inner{background-color:var(--aah-checkbox-disabled-checked-input-fill);border-color:var(--aah-checkbox-disabled-checked-input-border-color)}.aah-checkbox__input.is-disabled.is-indeterminate .aah-checkbox__inner:before{background-color:var(--aah-checkbox-disabled-checked-icon-color);border-color:var(--aah-checkbox-disabled-checked-icon-color)}.aah-checkbox__input.is-disabled+span.aah-checkbox__label{color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-checkbox__input.is-checked .aah-checkbox__inner{background-color:var(--aah-checkbox-checked-bg-color);border-color:var(--aah-checkbox-checked-input-border-color)}.aah-checkbox__input.is-checked .aah-checkbox__inner:after{transform:rotate(45deg) scaleY(1);border-color:var(--aah-checkbox-checked-icon-color)}.aah-checkbox__input.is-checked+.aah-checkbox__label{color:var(--aah-checkbox-checked-text-color)}.aah-checkbox__input.is-focus:not(.is-checked) .aah-checkbox__original:not(:focus-visible){border-color:var(--aah-checkbox-input-border-color-hover)}.aah-checkbox__input.is-indeterminate .aah-checkbox__inner{background-color:var(--aah-checkbox-checked-bg-color);border-color:var(--aah-checkbox-checked-input-border-color)}.aah-checkbox__input.is-indeterminate .aah-checkbox__inner:before{content:"";position:absolute;display:block;background-color:var(--aah-checkbox-checked-icon-color);height:2px;transform:scale(.5);left:0;right:0;top:5px}.aah-checkbox__input.is-indeterminate .aah-checkbox__inner:after{display:none}.aah-checkbox__inner{display:inline-block;position:relative;border:var(--aah-checkbox-input-border);border-radius:var(--aah-checkbox-border-radius);box-sizing:border-box;width:var(--aah-checkbox-input-width);height:var(--aah-checkbox-input-height);background-color:var(--aah-checkbox-bg-color);z-index:var(--aah-index-normal);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46)}.aah-checkbox__inner:hover{border-color:var(--aah-checkbox-input-border-color-hover)}.aah-checkbox__inner:after{box-sizing:content-box;content:"";border:1px solid transparent;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in .05s;transform-origin:center}.aah-checkbox__original{opacity:0;outline:none;position:absolute;margin:0;width:0;height:0;z-index:-1}.aah-checkbox__label{display:inline-block;padding-left:8px;line-height:1;font-size:var(--aah-checkbox-font-size)}.aah-checkbox.aah-checkbox--large{height:40px}.aah-checkbox.aah-checkbox--large .aah-checkbox__label{font-size:14px}.aah-checkbox.aah-checkbox--large .aah-checkbox__inner{width:14px;height:14px}.aah-checkbox.aah-checkbox--small{height:24px}.aah-checkbox.aah-checkbox--small .aah-checkbox__label{font-size:12px}.aah-checkbox.aah-checkbox--small .aah-checkbox__inner{width:12px;height:12px}.aah-checkbox.aah-checkbox--small .aah-checkbox__input.is-indeterminate .aah-checkbox__inner:before{top:4px}.aah-checkbox.aah-checkbox--small .aah-checkbox__inner:after{width:2px;height:6px}.aah-checkbox:last-of-type{margin-right:0}[class*=aah-col-]{box-sizing:border-box}[class*=aah-col-].is-guttered{display:block;min-height:1px}.aah-col-0,.aah-col-0.is-guttered{display:none}.aah-col-0{max-width:0%;flex:0 0 0%}.aah-col-offset-0{margin-left:0%}.aah-col-pull-0{position:relative;right:0%}.aah-col-push-0{position:relative;left:0%}.aah-col-1{max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-offset-1{margin-left:4.1666666667%}.aah-col-pull-1{position:relative;right:4.1666666667%}.aah-col-push-1{position:relative;left:4.1666666667%}.aah-col-2{max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-offset-2{margin-left:8.3333333333%}.aah-col-pull-2{position:relative;right:8.3333333333%}.aah-col-push-2{position:relative;left:8.3333333333%}.aah-col-3{max-width:12.5%;flex:0 0 12.5%}.aah-col-offset-3{margin-left:12.5%}.aah-col-pull-3{position:relative;right:12.5%}.aah-col-push-3{position:relative;left:12.5%}.aah-col-4{max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-offset-4{margin-left:16.6666666667%}.aah-col-pull-4{position:relative;right:16.6666666667%}.aah-col-push-4{position:relative;left:16.6666666667%}.aah-col-5{max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-offset-5{margin-left:20.8333333333%}.aah-col-pull-5{position:relative;right:20.8333333333%}.aah-col-push-5{position:relative;left:20.8333333333%}.aah-col-6{max-width:25%;flex:0 0 25%}.aah-col-offset-6{margin-left:25%}.aah-col-pull-6{position:relative;right:25%}.aah-col-push-6{position:relative;left:25%}.aah-col-7{max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-offset-7{margin-left:29.1666666667%}.aah-col-pull-7{position:relative;right:29.1666666667%}.aah-col-push-7{position:relative;left:29.1666666667%}.aah-col-8{max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-offset-8{margin-left:33.3333333333%}.aah-col-pull-8{position:relative;right:33.3333333333%}.aah-col-push-8{position:relative;left:33.3333333333%}.aah-col-9{max-width:37.5%;flex:0 0 37.5%}.aah-col-offset-9{margin-left:37.5%}.aah-col-pull-9{position:relative;right:37.5%}.aah-col-push-9{position:relative;left:37.5%}.aah-col-10{max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-offset-10{margin-left:41.6666666667%}.aah-col-pull-10{position:relative;right:41.6666666667%}.aah-col-push-10{position:relative;left:41.6666666667%}.aah-col-11{max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-offset-11{margin-left:45.8333333333%}.aah-col-pull-11{position:relative;right:45.8333333333%}.aah-col-push-11{position:relative;left:45.8333333333%}.aah-col-12{max-width:50%;flex:0 0 50%}.aah-col-offset-12{margin-left:50%}.aah-col-pull-12{position:relative;right:50%}.aah-col-push-12{position:relative;left:50%}.aah-col-13{max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-offset-13{margin-left:54.1666666667%}.aah-col-pull-13{position:relative;right:54.1666666667%}.aah-col-push-13{position:relative;left:54.1666666667%}.aah-col-14{max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-offset-14{margin-left:58.3333333333%}.aah-col-pull-14{position:relative;right:58.3333333333%}.aah-col-push-14{position:relative;left:58.3333333333%}.aah-col-15{max-width:62.5%;flex:0 0 62.5%}.aah-col-offset-15{margin-left:62.5%}.aah-col-pull-15{position:relative;right:62.5%}.aah-col-push-15{position:relative;left:62.5%}.aah-col-16{max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-offset-16{margin-left:66.6666666667%}.aah-col-pull-16{position:relative;right:66.6666666667%}.aah-col-push-16{position:relative;left:66.6666666667%}.aah-col-17{max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-offset-17{margin-left:70.8333333333%}.aah-col-pull-17{position:relative;right:70.8333333333%}.aah-col-push-17{position:relative;left:70.8333333333%}.aah-col-18{max-width:75%;flex:0 0 75%}.aah-col-offset-18{margin-left:75%}.aah-col-pull-18{position:relative;right:75%}.aah-col-push-18{position:relative;left:75%}.aah-col-19{max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-offset-19{margin-left:79.1666666667%}.aah-col-pull-19{position:relative;right:79.1666666667%}.aah-col-push-19{position:relative;left:79.1666666667%}.aah-col-20{max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-offset-20{margin-left:83.3333333333%}.aah-col-pull-20{position:relative;right:83.3333333333%}.aah-col-push-20{position:relative;left:83.3333333333%}.aah-col-21{max-width:87.5%;flex:0 0 87.5%}.aah-col-offset-21{margin-left:87.5%}.aah-col-pull-21{position:relative;right:87.5%}.aah-col-push-21{position:relative;left:87.5%}.aah-col-22{max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-offset-22{margin-left:91.6666666667%}.aah-col-pull-22{position:relative;right:91.6666666667%}.aah-col-push-22{position:relative;left:91.6666666667%}.aah-col-23{max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-offset-23{margin-left:95.8333333333%}.aah-col-pull-23{position:relative;right:95.8333333333%}.aah-col-push-23{position:relative;left:95.8333333333%}.aah-col-24{max-width:100%;flex:0 0 100%}.aah-col-offset-24{margin-left:100%}.aah-col-pull-24{position:relative;right:100%}.aah-col-push-24{position:relative;left:100%}@media only screen and (max-width: 767px){.aah-col-xs-0,.aah-col-xs-0.is-guttered{display:none}.aah-col-xs-0{max-width:0%;flex:0 0 0%}.aah-col-xs-offset-0{margin-left:0%}.aah-col-xs-pull-0{position:relative;right:0%}.aah-col-xs-push-0{position:relative;left:0%}.aah-col-xs-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-xs-offset-1{margin-left:4.1666666667%}.aah-col-xs-pull-1{position:relative;right:4.1666666667%}.aah-col-xs-push-1{position:relative;left:4.1666666667%}.aah-col-xs-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-xs-offset-2{margin-left:8.3333333333%}.aah-col-xs-pull-2{position:relative;right:8.3333333333%}.aah-col-xs-push-2{position:relative;left:8.3333333333%}.aah-col-xs-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-xs-offset-3{margin-left:12.5%}.aah-col-xs-pull-3{position:relative;right:12.5%}.aah-col-xs-push-3{position:relative;left:12.5%}.aah-col-xs-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-xs-offset-4{margin-left:16.6666666667%}.aah-col-xs-pull-4{position:relative;right:16.6666666667%}.aah-col-xs-push-4{position:relative;left:16.6666666667%}.aah-col-xs-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-xs-offset-5{margin-left:20.8333333333%}.aah-col-xs-pull-5{position:relative;right:20.8333333333%}.aah-col-xs-push-5{position:relative;left:20.8333333333%}.aah-col-xs-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-xs-offset-6{margin-left:25%}.aah-col-xs-pull-6{position:relative;right:25%}.aah-col-xs-push-6{position:relative;left:25%}.aah-col-xs-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-xs-offset-7{margin-left:29.1666666667%}.aah-col-xs-pull-7{position:relative;right:29.1666666667%}.aah-col-xs-push-7{position:relative;left:29.1666666667%}.aah-col-xs-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-xs-offset-8{margin-left:33.3333333333%}.aah-col-xs-pull-8{position:relative;right:33.3333333333%}.aah-col-xs-push-8{position:relative;left:33.3333333333%}.aah-col-xs-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-xs-offset-9{margin-left:37.5%}.aah-col-xs-pull-9{position:relative;right:37.5%}.aah-col-xs-push-9{position:relative;left:37.5%}.aah-col-xs-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-xs-offset-10{margin-left:41.6666666667%}.aah-col-xs-pull-10{position:relative;right:41.6666666667%}.aah-col-xs-push-10{position:relative;left:41.6666666667%}.aah-col-xs-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-xs-offset-11{margin-left:45.8333333333%}.aah-col-xs-pull-11{position:relative;right:45.8333333333%}.aah-col-xs-push-11{position:relative;left:45.8333333333%}.aah-col-xs-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-xs-offset-12{margin-left:50%}.aah-col-xs-pull-12{position:relative;right:50%}.aah-col-xs-push-12{position:relative;left:50%}.aah-col-xs-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-xs-offset-13{margin-left:54.1666666667%}.aah-col-xs-pull-13{position:relative;right:54.1666666667%}.aah-col-xs-push-13{position:relative;left:54.1666666667%}.aah-col-xs-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-xs-offset-14{margin-left:58.3333333333%}.aah-col-xs-pull-14{position:relative;right:58.3333333333%}.aah-col-xs-push-14{position:relative;left:58.3333333333%}.aah-col-xs-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-xs-offset-15{margin-left:62.5%}.aah-col-xs-pull-15{position:relative;right:62.5%}.aah-col-xs-push-15{position:relative;left:62.5%}.aah-col-xs-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-xs-offset-16{margin-left:66.6666666667%}.aah-col-xs-pull-16{position:relative;right:66.6666666667%}.aah-col-xs-push-16{position:relative;left:66.6666666667%}.aah-col-xs-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-xs-offset-17{margin-left:70.8333333333%}.aah-col-xs-pull-17{position:relative;right:70.8333333333%}.aah-col-xs-push-17{position:relative;left:70.8333333333%}.aah-col-xs-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-xs-offset-18{margin-left:75%}.aah-col-xs-pull-18{position:relative;right:75%}.aah-col-xs-push-18{position:relative;left:75%}.aah-col-xs-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-xs-offset-19{margin-left:79.1666666667%}.aah-col-xs-pull-19{position:relative;right:79.1666666667%}.aah-col-xs-push-19{position:relative;left:79.1666666667%}.aah-col-xs-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-xs-offset-20{margin-left:83.3333333333%}.aah-col-xs-pull-20{position:relative;right:83.3333333333%}.aah-col-xs-push-20{position:relative;left:83.3333333333%}.aah-col-xs-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-xs-offset-21{margin-left:87.5%}.aah-col-xs-pull-21{position:relative;right:87.5%}.aah-col-xs-push-21{position:relative;left:87.5%}.aah-col-xs-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-xs-offset-22{margin-left:91.6666666667%}.aah-col-xs-pull-22{position:relative;right:91.6666666667%}.aah-col-xs-push-22{position:relative;left:91.6666666667%}.aah-col-xs-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-xs-offset-23{margin-left:95.8333333333%}.aah-col-xs-pull-23{position:relative;right:95.8333333333%}.aah-col-xs-push-23{position:relative;left:95.8333333333%}.aah-col-xs-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-xs-offset-24{margin-left:100%}.aah-col-xs-pull-24{position:relative;right:100%}.aah-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width: 768px){.aah-col-sm-0,.aah-col-sm-0.is-guttered{display:none}.aah-col-sm-0{max-width:0%;flex:0 0 0%}.aah-col-sm-offset-0{margin-left:0%}.aah-col-sm-pull-0{position:relative;right:0%}.aah-col-sm-push-0{position:relative;left:0%}.aah-col-sm-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-sm-offset-1{margin-left:4.1666666667%}.aah-col-sm-pull-1{position:relative;right:4.1666666667%}.aah-col-sm-push-1{position:relative;left:4.1666666667%}.aah-col-sm-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-sm-offset-2{margin-left:8.3333333333%}.aah-col-sm-pull-2{position:relative;right:8.3333333333%}.aah-col-sm-push-2{position:relative;left:8.3333333333%}.aah-col-sm-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-sm-offset-3{margin-left:12.5%}.aah-col-sm-pull-3{position:relative;right:12.5%}.aah-col-sm-push-3{position:relative;left:12.5%}.aah-col-sm-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-sm-offset-4{margin-left:16.6666666667%}.aah-col-sm-pull-4{position:relative;right:16.6666666667%}.aah-col-sm-push-4{position:relative;left:16.6666666667%}.aah-col-sm-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-sm-offset-5{margin-left:20.8333333333%}.aah-col-sm-pull-5{position:relative;right:20.8333333333%}.aah-col-sm-push-5{position:relative;left:20.8333333333%}.aah-col-sm-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-sm-offset-6{margin-left:25%}.aah-col-sm-pull-6{position:relative;right:25%}.aah-col-sm-push-6{position:relative;left:25%}.aah-col-sm-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-sm-offset-7{margin-left:29.1666666667%}.aah-col-sm-pull-7{position:relative;right:29.1666666667%}.aah-col-sm-push-7{position:relative;left:29.1666666667%}.aah-col-sm-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-sm-offset-8{margin-left:33.3333333333%}.aah-col-sm-pull-8{position:relative;right:33.3333333333%}.aah-col-sm-push-8{position:relative;left:33.3333333333%}.aah-col-sm-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-sm-offset-9{margin-left:37.5%}.aah-col-sm-pull-9{position:relative;right:37.5%}.aah-col-sm-push-9{position:relative;left:37.5%}.aah-col-sm-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-sm-offset-10{margin-left:41.6666666667%}.aah-col-sm-pull-10{position:relative;right:41.6666666667%}.aah-col-sm-push-10{position:relative;left:41.6666666667%}.aah-col-sm-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-sm-offset-11{margin-left:45.8333333333%}.aah-col-sm-pull-11{position:relative;right:45.8333333333%}.aah-col-sm-push-11{position:relative;left:45.8333333333%}.aah-col-sm-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-sm-offset-12{margin-left:50%}.aah-col-sm-pull-12{position:relative;right:50%}.aah-col-sm-push-12{position:relative;left:50%}.aah-col-sm-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-sm-offset-13{margin-left:54.1666666667%}.aah-col-sm-pull-13{position:relative;right:54.1666666667%}.aah-col-sm-push-13{position:relative;left:54.1666666667%}.aah-col-sm-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-sm-offset-14{margin-left:58.3333333333%}.aah-col-sm-pull-14{position:relative;right:58.3333333333%}.aah-col-sm-push-14{position:relative;left:58.3333333333%}.aah-col-sm-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-sm-offset-15{margin-left:62.5%}.aah-col-sm-pull-15{position:relative;right:62.5%}.aah-col-sm-push-15{position:relative;left:62.5%}.aah-col-sm-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-sm-offset-16{margin-left:66.6666666667%}.aah-col-sm-pull-16{position:relative;right:66.6666666667%}.aah-col-sm-push-16{position:relative;left:66.6666666667%}.aah-col-sm-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-sm-offset-17{margin-left:70.8333333333%}.aah-col-sm-pull-17{position:relative;right:70.8333333333%}.aah-col-sm-push-17{position:relative;left:70.8333333333%}.aah-col-sm-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-sm-offset-18{margin-left:75%}.aah-col-sm-pull-18{position:relative;right:75%}.aah-col-sm-push-18{position:relative;left:75%}.aah-col-sm-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-sm-offset-19{margin-left:79.1666666667%}.aah-col-sm-pull-19{position:relative;right:79.1666666667%}.aah-col-sm-push-19{position:relative;left:79.1666666667%}.aah-col-sm-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-sm-offset-20{margin-left:83.3333333333%}.aah-col-sm-pull-20{position:relative;right:83.3333333333%}.aah-col-sm-push-20{position:relative;left:83.3333333333%}.aah-col-sm-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-sm-offset-21{margin-left:87.5%}.aah-col-sm-pull-21{position:relative;right:87.5%}.aah-col-sm-push-21{position:relative;left:87.5%}.aah-col-sm-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-sm-offset-22{margin-left:91.6666666667%}.aah-col-sm-pull-22{position:relative;right:91.6666666667%}.aah-col-sm-push-22{position:relative;left:91.6666666667%}.aah-col-sm-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-sm-offset-23{margin-left:95.8333333333%}.aah-col-sm-pull-23{position:relative;right:95.8333333333%}.aah-col-sm-push-23{position:relative;left:95.8333333333%}.aah-col-sm-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-sm-offset-24{margin-left:100%}.aah-col-sm-pull-24{position:relative;right:100%}.aah-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width: 992px){.aah-col-md-0,.aah-col-md-0.is-guttered{display:none}.aah-col-md-0{max-width:0%;flex:0 0 0%}.aah-col-md-offset-0{margin-left:0%}.aah-col-md-pull-0{position:relative;right:0%}.aah-col-md-push-0{position:relative;left:0%}.aah-col-md-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-md-offset-1{margin-left:4.1666666667%}.aah-col-md-pull-1{position:relative;right:4.1666666667%}.aah-col-md-push-1{position:relative;left:4.1666666667%}.aah-col-md-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-md-offset-2{margin-left:8.3333333333%}.aah-col-md-pull-2{position:relative;right:8.3333333333%}.aah-col-md-push-2{position:relative;left:8.3333333333%}.aah-col-md-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-md-offset-3{margin-left:12.5%}.aah-col-md-pull-3{position:relative;right:12.5%}.aah-col-md-push-3{position:relative;left:12.5%}.aah-col-md-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-md-offset-4{margin-left:16.6666666667%}.aah-col-md-pull-4{position:relative;right:16.6666666667%}.aah-col-md-push-4{position:relative;left:16.6666666667%}.aah-col-md-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-md-offset-5{margin-left:20.8333333333%}.aah-col-md-pull-5{position:relative;right:20.8333333333%}.aah-col-md-push-5{position:relative;left:20.8333333333%}.aah-col-md-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-md-offset-6{margin-left:25%}.aah-col-md-pull-6{position:relative;right:25%}.aah-col-md-push-6{position:relative;left:25%}.aah-col-md-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-md-offset-7{margin-left:29.1666666667%}.aah-col-md-pull-7{position:relative;right:29.1666666667%}.aah-col-md-push-7{position:relative;left:29.1666666667%}.aah-col-md-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-md-offset-8{margin-left:33.3333333333%}.aah-col-md-pull-8{position:relative;right:33.3333333333%}.aah-col-md-push-8{position:relative;left:33.3333333333%}.aah-col-md-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-md-offset-9{margin-left:37.5%}.aah-col-md-pull-9{position:relative;right:37.5%}.aah-col-md-push-9{position:relative;left:37.5%}.aah-col-md-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-md-offset-10{margin-left:41.6666666667%}.aah-col-md-pull-10{position:relative;right:41.6666666667%}.aah-col-md-push-10{position:relative;left:41.6666666667%}.aah-col-md-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-md-offset-11{margin-left:45.8333333333%}.aah-col-md-pull-11{position:relative;right:45.8333333333%}.aah-col-md-push-11{position:relative;left:45.8333333333%}.aah-col-md-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-md-offset-12{margin-left:50%}.aah-col-md-pull-12{position:relative;right:50%}.aah-col-md-push-12{position:relative;left:50%}.aah-col-md-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-md-offset-13{margin-left:54.1666666667%}.aah-col-md-pull-13{position:relative;right:54.1666666667%}.aah-col-md-push-13{position:relative;left:54.1666666667%}.aah-col-md-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-md-offset-14{margin-left:58.3333333333%}.aah-col-md-pull-14{position:relative;right:58.3333333333%}.aah-col-md-push-14{position:relative;left:58.3333333333%}.aah-col-md-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-md-offset-15{margin-left:62.5%}.aah-col-md-pull-15{position:relative;right:62.5%}.aah-col-md-push-15{position:relative;left:62.5%}.aah-col-md-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-md-offset-16{margin-left:66.6666666667%}.aah-col-md-pull-16{position:relative;right:66.6666666667%}.aah-col-md-push-16{position:relative;left:66.6666666667%}.aah-col-md-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-md-offset-17{margin-left:70.8333333333%}.aah-col-md-pull-17{position:relative;right:70.8333333333%}.aah-col-md-push-17{position:relative;left:70.8333333333%}.aah-col-md-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-md-offset-18{margin-left:75%}.aah-col-md-pull-18{position:relative;right:75%}.aah-col-md-push-18{position:relative;left:75%}.aah-col-md-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-md-offset-19{margin-left:79.1666666667%}.aah-col-md-pull-19{position:relative;right:79.1666666667%}.aah-col-md-push-19{position:relative;left:79.1666666667%}.aah-col-md-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-md-offset-20{margin-left:83.3333333333%}.aah-col-md-pull-20{position:relative;right:83.3333333333%}.aah-col-md-push-20{position:relative;left:83.3333333333%}.aah-col-md-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-md-offset-21{margin-left:87.5%}.aah-col-md-pull-21{position:relative;right:87.5%}.aah-col-md-push-21{position:relative;left:87.5%}.aah-col-md-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-md-offset-22{margin-left:91.6666666667%}.aah-col-md-pull-22{position:relative;right:91.6666666667%}.aah-col-md-push-22{position:relative;left:91.6666666667%}.aah-col-md-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-md-offset-23{margin-left:95.8333333333%}.aah-col-md-pull-23{position:relative;right:95.8333333333%}.aah-col-md-push-23{position:relative;left:95.8333333333%}.aah-col-md-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-md-offset-24{margin-left:100%}.aah-col-md-pull-24{position:relative;right:100%}.aah-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width: 1200px){.aah-col-lg-0,.aah-col-lg-0.is-guttered{display:none}.aah-col-lg-0{max-width:0%;flex:0 0 0%}.aah-col-lg-offset-0{margin-left:0%}.aah-col-lg-pull-0{position:relative;right:0%}.aah-col-lg-push-0{position:relative;left:0%}.aah-col-lg-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-lg-offset-1{margin-left:4.1666666667%}.aah-col-lg-pull-1{position:relative;right:4.1666666667%}.aah-col-lg-push-1{position:relative;left:4.1666666667%}.aah-col-lg-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-lg-offset-2{margin-left:8.3333333333%}.aah-col-lg-pull-2{position:relative;right:8.3333333333%}.aah-col-lg-push-2{position:relative;left:8.3333333333%}.aah-col-lg-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-lg-offset-3{margin-left:12.5%}.aah-col-lg-pull-3{position:relative;right:12.5%}.aah-col-lg-push-3{position:relative;left:12.5%}.aah-col-lg-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-lg-offset-4{margin-left:16.6666666667%}.aah-col-lg-pull-4{position:relative;right:16.6666666667%}.aah-col-lg-push-4{position:relative;left:16.6666666667%}.aah-col-lg-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-lg-offset-5{margin-left:20.8333333333%}.aah-col-lg-pull-5{position:relative;right:20.8333333333%}.aah-col-lg-push-5{position:relative;left:20.8333333333%}.aah-col-lg-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-lg-offset-6{margin-left:25%}.aah-col-lg-pull-6{position:relative;right:25%}.aah-col-lg-push-6{position:relative;left:25%}.aah-col-lg-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-lg-offset-7{margin-left:29.1666666667%}.aah-col-lg-pull-7{position:relative;right:29.1666666667%}.aah-col-lg-push-7{position:relative;left:29.1666666667%}.aah-col-lg-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-lg-offset-8{margin-left:33.3333333333%}.aah-col-lg-pull-8{position:relative;right:33.3333333333%}.aah-col-lg-push-8{position:relative;left:33.3333333333%}.aah-col-lg-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-lg-offset-9{margin-left:37.5%}.aah-col-lg-pull-9{position:relative;right:37.5%}.aah-col-lg-push-9{position:relative;left:37.5%}.aah-col-lg-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-lg-offset-10{margin-left:41.6666666667%}.aah-col-lg-pull-10{position:relative;right:41.6666666667%}.aah-col-lg-push-10{position:relative;left:41.6666666667%}.aah-col-lg-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-lg-offset-11{margin-left:45.8333333333%}.aah-col-lg-pull-11{position:relative;right:45.8333333333%}.aah-col-lg-push-11{position:relative;left:45.8333333333%}.aah-col-lg-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-lg-offset-12{margin-left:50%}.aah-col-lg-pull-12{position:relative;right:50%}.aah-col-lg-push-12{position:relative;left:50%}.aah-col-lg-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-lg-offset-13{margin-left:54.1666666667%}.aah-col-lg-pull-13{position:relative;right:54.1666666667%}.aah-col-lg-push-13{position:relative;left:54.1666666667%}.aah-col-lg-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-lg-offset-14{margin-left:58.3333333333%}.aah-col-lg-pull-14{position:relative;right:58.3333333333%}.aah-col-lg-push-14{position:relative;left:58.3333333333%}.aah-col-lg-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-lg-offset-15{margin-left:62.5%}.aah-col-lg-pull-15{position:relative;right:62.5%}.aah-col-lg-push-15{position:relative;left:62.5%}.aah-col-lg-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-lg-offset-16{margin-left:66.6666666667%}.aah-col-lg-pull-16{position:relative;right:66.6666666667%}.aah-col-lg-push-16{position:relative;left:66.6666666667%}.aah-col-lg-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-lg-offset-17{margin-left:70.8333333333%}.aah-col-lg-pull-17{position:relative;right:70.8333333333%}.aah-col-lg-push-17{position:relative;left:70.8333333333%}.aah-col-lg-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-lg-offset-18{margin-left:75%}.aah-col-lg-pull-18{position:relative;right:75%}.aah-col-lg-push-18{position:relative;left:75%}.aah-col-lg-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-lg-offset-19{margin-left:79.1666666667%}.aah-col-lg-pull-19{position:relative;right:79.1666666667%}.aah-col-lg-push-19{position:relative;left:79.1666666667%}.aah-col-lg-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-lg-offset-20{margin-left:83.3333333333%}.aah-col-lg-pull-20{position:relative;right:83.3333333333%}.aah-col-lg-push-20{position:relative;left:83.3333333333%}.aah-col-lg-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-lg-offset-21{margin-left:87.5%}.aah-col-lg-pull-21{position:relative;right:87.5%}.aah-col-lg-push-21{position:relative;left:87.5%}.aah-col-lg-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-lg-offset-22{margin-left:91.6666666667%}.aah-col-lg-pull-22{position:relative;right:91.6666666667%}.aah-col-lg-push-22{position:relative;left:91.6666666667%}.aah-col-lg-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-lg-offset-23{margin-left:95.8333333333%}.aah-col-lg-pull-23{position:relative;right:95.8333333333%}.aah-col-lg-push-23{position:relative;left:95.8333333333%}.aah-col-lg-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-lg-offset-24{margin-left:100%}.aah-col-lg-pull-24{position:relative;right:100%}.aah-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width: 1920px){.aah-col-xl-0,.aah-col-xl-0.is-guttered{display:none}.aah-col-xl-0{max-width:0%;flex:0 0 0%}.aah-col-xl-offset-0{margin-left:0%}.aah-col-xl-pull-0{position:relative;right:0%}.aah-col-xl-push-0{position:relative;left:0%}.aah-col-xl-1{display:block;max-width:4.1666666667%;flex:0 0 4.1666666667%}.aah-col-xl-offset-1{margin-left:4.1666666667%}.aah-col-xl-pull-1{position:relative;right:4.1666666667%}.aah-col-xl-push-1{position:relative;left:4.1666666667%}.aah-col-xl-2{display:block;max-width:8.3333333333%;flex:0 0 8.3333333333%}.aah-col-xl-offset-2{margin-left:8.3333333333%}.aah-col-xl-pull-2{position:relative;right:8.3333333333%}.aah-col-xl-push-2{position:relative;left:8.3333333333%}.aah-col-xl-3{display:block;max-width:12.5%;flex:0 0 12.5%}.aah-col-xl-offset-3{margin-left:12.5%}.aah-col-xl-pull-3{position:relative;right:12.5%}.aah-col-xl-push-3{position:relative;left:12.5%}.aah-col-xl-4{display:block;max-width:16.6666666667%;flex:0 0 16.6666666667%}.aah-col-xl-offset-4{margin-left:16.6666666667%}.aah-col-xl-pull-4{position:relative;right:16.6666666667%}.aah-col-xl-push-4{position:relative;left:16.6666666667%}.aah-col-xl-5{display:block;max-width:20.8333333333%;flex:0 0 20.8333333333%}.aah-col-xl-offset-5{margin-left:20.8333333333%}.aah-col-xl-pull-5{position:relative;right:20.8333333333%}.aah-col-xl-push-5{position:relative;left:20.8333333333%}.aah-col-xl-6{display:block;max-width:25%;flex:0 0 25%}.aah-col-xl-offset-6{margin-left:25%}.aah-col-xl-pull-6{position:relative;right:25%}.aah-col-xl-push-6{position:relative;left:25%}.aah-col-xl-7{display:block;max-width:29.1666666667%;flex:0 0 29.1666666667%}.aah-col-xl-offset-7{margin-left:29.1666666667%}.aah-col-xl-pull-7{position:relative;right:29.1666666667%}.aah-col-xl-push-7{position:relative;left:29.1666666667%}.aah-col-xl-8{display:block;max-width:33.3333333333%;flex:0 0 33.3333333333%}.aah-col-xl-offset-8{margin-left:33.3333333333%}.aah-col-xl-pull-8{position:relative;right:33.3333333333%}.aah-col-xl-push-8{position:relative;left:33.3333333333%}.aah-col-xl-9{display:block;max-width:37.5%;flex:0 0 37.5%}.aah-col-xl-offset-9{margin-left:37.5%}.aah-col-xl-pull-9{position:relative;right:37.5%}.aah-col-xl-push-9{position:relative;left:37.5%}.aah-col-xl-10{display:block;max-width:41.6666666667%;flex:0 0 41.6666666667%}.aah-col-xl-offset-10{margin-left:41.6666666667%}.aah-col-xl-pull-10{position:relative;right:41.6666666667%}.aah-col-xl-push-10{position:relative;left:41.6666666667%}.aah-col-xl-11{display:block;max-width:45.8333333333%;flex:0 0 45.8333333333%}.aah-col-xl-offset-11{margin-left:45.8333333333%}.aah-col-xl-pull-11{position:relative;right:45.8333333333%}.aah-col-xl-push-11{position:relative;left:45.8333333333%}.aah-col-xl-12{display:block;max-width:50%;flex:0 0 50%}.aah-col-xl-offset-12{margin-left:50%}.aah-col-xl-pull-12{position:relative;right:50%}.aah-col-xl-push-12{position:relative;left:50%}.aah-col-xl-13{display:block;max-width:54.1666666667%;flex:0 0 54.1666666667%}.aah-col-xl-offset-13{margin-left:54.1666666667%}.aah-col-xl-pull-13{position:relative;right:54.1666666667%}.aah-col-xl-push-13{position:relative;left:54.1666666667%}.aah-col-xl-14{display:block;max-width:58.3333333333%;flex:0 0 58.3333333333%}.aah-col-xl-offset-14{margin-left:58.3333333333%}.aah-col-xl-pull-14{position:relative;right:58.3333333333%}.aah-col-xl-push-14{position:relative;left:58.3333333333%}.aah-col-xl-15{display:block;max-width:62.5%;flex:0 0 62.5%}.aah-col-xl-offset-15{margin-left:62.5%}.aah-col-xl-pull-15{position:relative;right:62.5%}.aah-col-xl-push-15{position:relative;left:62.5%}.aah-col-xl-16{display:block;max-width:66.6666666667%;flex:0 0 66.6666666667%}.aah-col-xl-offset-16{margin-left:66.6666666667%}.aah-col-xl-pull-16{position:relative;right:66.6666666667%}.aah-col-xl-push-16{position:relative;left:66.6666666667%}.aah-col-xl-17{display:block;max-width:70.8333333333%;flex:0 0 70.8333333333%}.aah-col-xl-offset-17{margin-left:70.8333333333%}.aah-col-xl-pull-17{position:relative;right:70.8333333333%}.aah-col-xl-push-17{position:relative;left:70.8333333333%}.aah-col-xl-18{display:block;max-width:75%;flex:0 0 75%}.aah-col-xl-offset-18{margin-left:75%}.aah-col-xl-pull-18{position:relative;right:75%}.aah-col-xl-push-18{position:relative;left:75%}.aah-col-xl-19{display:block;max-width:79.1666666667%;flex:0 0 79.1666666667%}.aah-col-xl-offset-19{margin-left:79.1666666667%}.aah-col-xl-pull-19{position:relative;right:79.1666666667%}.aah-col-xl-push-19{position:relative;left:79.1666666667%}.aah-col-xl-20{display:block;max-width:83.3333333333%;flex:0 0 83.3333333333%}.aah-col-xl-offset-20{margin-left:83.3333333333%}.aah-col-xl-pull-20{position:relative;right:83.3333333333%}.aah-col-xl-push-20{position:relative;left:83.3333333333%}.aah-col-xl-21{display:block;max-width:87.5%;flex:0 0 87.5%}.aah-col-xl-offset-21{margin-left:87.5%}.aah-col-xl-pull-21{position:relative;right:87.5%}.aah-col-xl-push-21{position:relative;left:87.5%}.aah-col-xl-22{display:block;max-width:91.6666666667%;flex:0 0 91.6666666667%}.aah-col-xl-offset-22{margin-left:91.6666666667%}.aah-col-xl-pull-22{position:relative;right:91.6666666667%}.aah-col-xl-push-22{position:relative;left:91.6666666667%}.aah-col-xl-23{display:block;max-width:95.8333333333%;flex:0 0 95.8333333333%}.aah-col-xl-offset-23{margin-left:95.8333333333%}.aah-col-xl-pull-23{position:relative;right:95.8333333333%}.aah-col-xl-push-23{position:relative;left:95.8333333333%}.aah-col-xl-24{display:block;max-width:100%;flex:0 0 100%}.aah-col-xl-offset-24{margin-left:100%}.aah-col-xl-pull-24{position:relative;right:100%}.aah-col-xl-push-24{position:relative;left:100%}}.aah-collapse{--aah-collapse-border-color: var(--aah-border-color-lighter);--aah-collapse-header-height: 48px;--aah-collapse-header-bg-color: var(--aah-fill-color-blank);--aah-collapse-header-text-color: var(--aah-text-color-primary);--aah-collapse-header-font-size: 13px;--aah-collapse-content-bg-color: var(--aah-fill-color-blank);--aah-collapse-content-font-size: 13px;--aah-collapse-content-text-color: var(--aah-text-color-primary);border-top:1px solid var(--aah-collapse-border-color);border-bottom:1px solid var(--aah-collapse-border-color)}.aah-collapse-item.is-disabled .aah-collapse-item__header{color:var(--aah-text-color-disabled);cursor:not-allowed}.aah-collapse-item__header{width:100%;padding:0;border:none;display:flex;align-items:center;height:var(--aah-collapse-header-height);line-height:var(--aah-collapse-header-height);background-color:var(--aah-collapse-header-bg-color);color:var(--aah-collapse-header-text-color);cursor:pointer;border-bottom:1px solid var(--aah-collapse-border-color);font-size:var(--aah-collapse-header-font-size);font-weight:500;transition:border-bottom-color var(--aah-transition-duration);outline:none}.aah-collapse-item__arrow{margin:0 8px 0 auto;transition:transform var(--aah-transition-duration);font-weight:300}.aah-collapse-item__arrow.is-active{transform:rotate(90deg)}.aah-collapse-item__header.focusing:focus:not(:hover){color:var(--aah-color-primary)}.aah-collapse-item__header.is-active{border-bottom-color:transparent}.aah-collapse-item__wrap{will-change:height;background-color:var(--aah-collapse-content-bg-color);overflow:hidden;box-sizing:border-box;border-bottom:1px solid var(--aah-collapse-border-color)}.aah-collapse-item__content{padding-bottom:25px;font-size:var(--aah-collapse-content-font-size);color:var(--aah-collapse-content-text-color);line-height:1.7692307692}.aah-collapse-item:last-child{margin-bottom:-1px}.aah-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.aah-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.aah-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.aah-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.aah-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--aah-color-primary)}.aah-color-predefine__color-selector>div{display:flex;height:100%;border-radius:3px}.aah-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.aah-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px;float:right}.aah-color-hue-slider__bar{position:relative;background:linear-gradient(to right,red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red);height:100%}.aah-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--aah-border-color-lighter);box-shadow:0 0 2px #0009;z-index:1}.aah-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.aah-color-hue-slider.is-vertical .aah-color-hue-slider__bar{background:linear-gradient(to bottom,red,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.aah-color-hue-slider.is-vertical .aah-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.aah-color-svpanel{position:relative;width:280px;height:180px}.aah-color-svpanel__white,.aah-color-svpanel__black{position:absolute;top:0;left:0;right:0;bottom:0}.aah-color-svpanel__white{background:linear-gradient(to right,#fff,#fff0)}.aah-color-svpanel__black{background:linear-gradient(to top,#000,#0000)}.aah-color-svpanel__cursor{position:absolute}.aah-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;border-radius:50%;transform:translate(-2px,-2px)}.aah-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-image:linear-gradient(45deg,var(--aah-color-picker-alpha-bg-a) 25%,var(--aah-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--aah-color-picker-alpha-bg-a) 25%,var(--aah-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--aah-color-picker-alpha-bg-b) 75%,var(--aah-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--aah-color-picker-alpha-bg-b) 75%,var(--aah-color-picker-alpha-bg-a) 75%);background-size:12px 12px;background-position:0 0,6px 0,6px -6px,0 6px}.aah-color-alpha-slider__bar{position:relative;background:linear-gradient(to right,rgba(255,255,255,0) 0%,var(--aah-bg-color) 100%);height:100%}.aah-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid var(--aah-border-color-lighter);box-shadow:0 0 2px #0009;z-index:1}.aah-color-alpha-slider.is-vertical{width:20px;height:180px}.aah-color-alpha-slider.is-vertical .aah-color-alpha-slider__bar{background:linear-gradient(to bottom,#fff0,#fff)}.aah-color-alpha-slider.is-vertical .aah-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.aah-color-dropdown{width:300px}.aah-color-dropdown__main-wrapper{margin-bottom:6px}.aah-color-dropdown__main-wrapper:after{content:"";display:table;clear:both}.aah-color-dropdown__btns{margin-top:12px;text-align:right}.aah-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.aah-color-picker{display:inline-block;position:relative;line-height:normal;outline:none}.aah-color-picker:hover:not(.is-disabled,.is-focused) .aah-color-picker__trigger{border-color:var(--aah-border-color-hover)}.aah-color-picker:focus-visible:not(.is-disabled) .aah-color-picker__trigger{outline:2px solid var(--aah-color-primary);outline-offset:1px}.aah-color-picker.is-focused .aah-color-picker__trigger{border-color:var(--aah-color-primary)}.aah-color-picker.is-disabled .aah-color-picker__trigger{cursor:not-allowed}.aah-color-picker--large{height:40px}.aah-color-picker--large .aah-color-picker__trigger{height:40px;width:40px}.aah-color-picker--large .aah-color-picker__mask{height:38px;width:38px}.aah-color-picker--small{height:24px}.aah-color-picker--small .aah-color-picker__trigger{height:24px;width:24px}.aah-color-picker--small .aah-color-picker__mask{height:22px;width:22px}.aah-color-picker--small .aah-color-picker__icon,.aah-color-picker--small .aah-color-picker__empty{transform:scale(.8)}.aah-color-picker__mask{height:30px;width:30px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:#ffffffb3}.aah-color-picker__trigger{display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;height:32px;width:32px;padding:4px;border:1px solid var(--aah-border-color);border-radius:4px;font-size:0;position:relative;cursor:pointer}.aah-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid var(--aah-text-color-secondary);border-radius:var(--aah-border-radius-small);width:100%;height:100%;text-align:center}.aah-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--aah-color-picker-alpha-bg-a) 25%,var(--aah-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--aah-color-picker-alpha-bg-a) 25%,var(--aah-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--aah-color-picker-alpha-bg-b) 75%,var(--aah-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--aah-color-picker-alpha-bg-b) 75%,var(--aah-color-picker-alpha-bg-a) 75%);background-size:12px 12px;background-position:0 0,6px 0,6px -6px,0 6px}.aah-color-picker__color-inner{display:inline-flex;justify-content:center;align-items:center;width:100%;height:100%}.aah-color-picker .aah-color-picker__empty{font-size:12px;color:var(--aah-text-color-secondary)}.aah-color-picker .aah-color-picker__icon{display:inline-flex;justify-content:center;align-items:center;color:#fff;font-size:12px}.aah-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border-radius:var(--aah-border-radius-base);box-shadow:var(--aah-box-shadow-light)}.aah-color-picker__panel.aah-popper{border:1px solid var(--aah-border-color-lighter)}.aah-color-picker,.aah-color-picker__panel{--aah-color-picker-alpha-bg-a: #ccc;--aah-color-picker-alpha-bg-b: transparent}.dark .aah-color-picker,.dark .aah-color-picker__panel{--aah-color-picker-alpha-bg-a: #333333}.aah-container{display:flex;flex-direction:row;flex:1;flex-basis:auto;box-sizing:border-box;min-width:0}.aah-container.is-vertical{flex-direction:column}.aah-date-table{font-size:12px;-webkit-user-select:none;user-select:none}.aah-date-table.is-week-mode .aah-date-table__row:hover .aah-date-table-cell{background-color:var(--aah-datepicker-inrange-bg-color)}.aah-date-table.is-week-mode .aah-date-table__row:hover td.available:hover{color:var(--aah-datepicker-text-color)}.aah-date-table.is-week-mode .aah-date-table__row:hover td:first-child .aah-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.aah-date-table.is-week-mode .aah-date-table__row:hover td:last-child .aah-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.aah-date-table.is-week-mode .aah-date-table__row.current .aah-date-table-cell{background-color:var(--aah-datepicker-inrange-bg-color)}.aah-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.aah-date-table td .aah-date-table-cell{height:30px;padding:3px 0;box-sizing:border-box}.aah-date-table td .aah-date-table-cell .aah-date-table-cell__text{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translate(-50%);border-radius:50%}.aah-date-table td.next-month,.aah-date-table td.prev-month{color:var(--aah-datepicker-off-text-color)}.aah-date-table td.today{position:relative}.aah-date-table td.today .aah-date-table-cell__text{color:var(--aah-color-primary);font-weight:700}.aah-date-table td.today.start-date .aah-date-table-cell__text,.aah-date-table td.today.end-date .aah-date-table-cell__text{color:#fff}.aah-date-table td.available:hover{color:var(--aah-datepicker-hover-text-color)}.aah-date-table td.in-range .aah-date-table-cell{background-color:var(--aah-datepicker-inrange-bg-color)}.aah-date-table td.in-range .aah-date-table-cell:hover{background-color:var(--aah-datepicker-inrange-hover-bg-color)}.aah-date-table td.current:not(.disabled) .aah-date-table-cell__text{color:#fff;background-color:var(--aah-datepicker-active-color)}.aah-date-table td.current:not(.disabled):focus-visible .aah-date-table-cell__text{outline:2px solid var(--aah-datepicker-active-color);outline-offset:1px}.aah-date-table td.start-date .aah-date-table-cell,.aah-date-table td.end-date .aah-date-table-cell{color:#fff}.aah-date-table td.start-date .aah-date-table-cell__text,.aah-date-table td.end-date .aah-date-table-cell__text{background-color:var(--aah-datepicker-active-color)}.aah-date-table td.start-date .aah-date-table-cell{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.aah-date-table td.end-date .aah-date-table-cell{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.aah-date-table td.disabled .aah-date-table-cell{background-color:var(--aah-fill-color-light);opacity:1;cursor:not-allowed;color:var(--aah-text-color-placeholder)}.aah-date-table td.selected .aah-date-table-cell{margin-left:5px;margin-right:5px;border-radius:15px}.aah-date-table td.selected .aah-date-table-cell__text{background-color:var(--aah-datepicker-active-color);color:#fff;border-radius:15px}.aah-date-table td.week{font-size:80%;color:var(--aah-datepicker-header-text-color)}.aah-date-table td:focus{outline:none}.aah-date-table th{padding:5px;color:var(--aah-datepicker-header-text-color);font-weight:400;border-bottom:solid 1px var(--aah-border-color-lighter)}.aah-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.aah-month-table td{width:68px;text-align:center;padding:8px 0;cursor:pointer;position:relative}.aah-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.aah-month-table td.today .cell{color:var(--aah-color-primary);font-weight:700}.aah-month-table td.today.start-date .cell,.aah-month-table td.today.end-date .cell{color:#fff}.aah-month-table td.disabled .cell{background-color:var(--aah-fill-color-light);cursor:not-allowed;color:var(--aah-text-color-placeholder)}.aah-month-table td.disabled .cell:hover{color:var(--aah-text-color-placeholder)}.aah-month-table td .cell{width:54px;height:36px;display:block;line-height:36px;color:var(--aah-datepicker-text-color);margin:0 auto;border-radius:18px;position:absolute;left:50%;transform:translate(-50%)}.aah-month-table td .cell:hover{color:var(--aah-datepicker-hover-text-color)}.aah-month-table td.in-range div{background-color:var(--aah-datepicker-inrange-bg-color)}.aah-month-table td.in-range div:hover{background-color:var(--aah-datepicker-inrange-hover-bg-color)}.aah-month-table td.start-date div,.aah-month-table td.end-date div{color:#fff}.aah-month-table td.start-date .cell,.aah-month-table td.end-date .cell{color:#fff;background-color:var(--aah-datepicker-active-color)}.aah-month-table td.start-date div{margin-left:3px;border-top-left-radius:24px;border-bottom-left-radius:24px}.aah-month-table td.end-date div{margin-right:3px;border-top-right-radius:24px;border-bottom-right-radius:24px}.aah-month-table td.current:not(.disabled) div{border-radius:24px;margin-left:3px;margin-right:3px}.aah-month-table td.current:not(.disabled) .cell{color:#fff;background-color:var(--aah-datepicker-active-color)}.aah-month-table td:focus-visible{outline:none}.aah-month-table td:focus-visible .cell{outline:2px solid var(--aah-datepicker-active-color);outline-offset:1px}.aah-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.aah-year-table .aah-icon{color:var(--aah-datepicker-icon-color)}.aah-year-table td{width:68px;text-align:center;padding:8px 0;cursor:pointer;position:relative}.aah-year-table td div{height:48px;padding:6px 0;box-sizing:border-box}.aah-year-table td.today .cell{color:var(--aah-color-primary);font-weight:700}.aah-year-table td.disabled .cell{background-color:var(--aah-fill-color-light);cursor:not-allowed;color:var(--aah-text-color-placeholder)}.aah-year-table td.disabled .cell:hover{color:var(--aah-text-color-placeholder)}.aah-year-table td .cell{width:54px;height:36px;display:block;line-height:36px;color:var(--aah-datepicker-text-color);border-radius:18px;margin:0 auto;position:absolute;left:50%;transform:translate(-50%)}.aah-year-table td .cell:hover{color:var(--aah-datepicker-hover-text-color)}.aah-year-table td.current:not(.disabled) div{border-radius:24px;margin-left:3px;margin-right:3px}.aah-year-table td.current:not(.disabled) .cell{color:#fff;background-color:var(--aah-datepicker-active-color)}.aah-year-table td:focus-visible{outline:none}.aah-year-table td:focus-visible .cell{outline:2px solid var(--aah-datepicker-active-color);outline-offset:1px}.aah-time-spinner.has-seconds .aah-time-spinner__wrapper{width:33.3%}.aah-time-spinner__wrapper{max-height:192px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.aah-time-spinner__wrapper.aah-scrollbar__wrap:not(.aah-scrollbar__wrap--hidden-default){padding-bottom:15px}.aah-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.aah-time-spinner__wrapper.is-arrow .aah-time-spinner__list{transform:translateY(-32px)}.aah-time-spinner__wrapper.is-arrow .aah-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--aah-fill-color-light);cursor:default}.aah-time-spinner__arrow{font-size:12px;color:var(--aah-text-color-secondary);position:absolute;left:0;width:100%;z-index:var(--aah-index-normal);text-align:center;height:30px;line-height:30px;cursor:pointer}.aah-time-spinner__arrow:hover{color:var(--aah-color-primary)}.aah-time-spinner__arrow.arrow-up{top:10px}.aah-time-spinner__arrow.arrow-down{bottom:10px}.aah-time-spinner__input.aah-input{width:70%}.aah-time-spinner__input.aah-input .aah-input__inner{padding:0;text-align:center}.aah-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.aah-time-spinner__list:after,.aah-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.aah-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:var(--aah-text-color-regular)}.aah-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--aah-fill-color-light);cursor:pointer}.aah-time-spinner__item.is-active:not(.is-disabled){color:var(--aah-text-color-primary);font-weight:700}.aah-time-spinner__item.is-disabled{color:var(--aah-text-color-placeholder);cursor:not-allowed}.aah-picker__popper{--aah-datepicker-border-color: var(--aah-disabled-border-color)}.aah-picker__popper.aah-popper{background:var(--aah-bg-color-overlay);border:1px solid var(--aah-datepicker-border-color);box-shadow:var(--aah-box-shadow-light)}.aah-picker__popper.aah-popper .aah-popper__arrow:before{border:1px solid var(--aah-datepicker-border-color)}.aah-picker__popper.aah-popper[data-popper-placement^=top] .aah-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.aah-picker__popper.aah-popper[data-popper-placement^=bottom] .aah-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.aah-picker__popper.aah-popper[data-popper-placement^=left] .aah-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.aah-picker__popper.aah-popper[data-popper-placement^=right] .aah-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.aah-date-editor{--aah-date-editor-width: 220px;--aah-date-editor-monthrange-width: 300px;--aah-date-editor-daterange-width: 350px;--aah-date-editor-datetimerange-width: 400px;--aah-input-text-color: var(--aah-text-color-regular);--aah-input-border: var(--aah-border);--aah-input-hover-border: var(--aah-border-color-hover);--aah-input-focus-border: var(--aah-color-primary);--aah-input-transparent-border: 0 0 0 1px transparent inset;--aah-input-border-color: var(--aah-border-color);--aah-input-border-radius: var(--aah-border-radius-base);--aah-input-bg-color: var(--aah-fill-color-blank);--aah-input-icon-color: var(--aah-text-color-placeholder);--aah-input-placeholder-color: var(--aah-text-color-placeholder);--aah-input-hover-border-color: var(--aah-border-color-hover);--aah-input-clear-hover-color: var(--aah-text-color-secondary);--aah-input-focus-border-color: var(--aah-color-primary);--aah-input-width: 100%;position:relative;text-align:left;vertical-align:middle}.aah-date-editor.aah-input__wrapper{box-shadow:0 0 0 1px var(--aah-input-border-color, var(--aah-border-color)) inset}.aah-date-editor.aah-input__wrapper:hover{box-shadow:0 0 0 1px var(--aah-input-hover-border-color) inset}.aah-date-editor.aah-input,.aah-date-editor.aah-input__wrapper{width:var(--aah-date-editor-width);height:var(--aah-input-height, var(--aah-component-size))}.aah-date-editor--monthrange{--aah-date-editor-width: var(--aah-date-editor-monthrange-width)}.aah-date-editor--daterange,.aah-date-editor--timerange{--aah-date-editor-width: var(--aah-date-editor-daterange-width)}.aah-date-editor--datetimerange{--aah-date-editor-width: var(--aah-date-editor-datetimerange-width)}.aah-date-editor--dates .aah-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.aah-date-editor .close-icon,.aah-date-editor .clear-icon{cursor:pointer}.aah-date-editor .clear-icon:hover{color:var(--aah-text-color-secondary)}.aah-date-editor .aah-range__icon{height:inherit;font-size:14px;color:var(--aah-text-color-placeholder);float:left}.aah-date-editor .aah-range__icon svg{vertical-align:middle}.aah-date-editor .aah-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:none;display:inline-block;height:30px;line-height:30px;margin:0;padding:0;width:39%;text-align:center;font-size:var(--aah-font-size-base);color:var(--aah-text-color-regular);background-color:transparent}.aah-date-editor .aah-range-input::placeholder{color:var(--aah-text-color-placeholder)}.aah-date-editor .aah-range-separator{flex:1;display:inline-flex;justify-content:center;align-items:center;height:100%;padding:0 5px;margin:0;font-size:14px;overflow-wrap:break-word;color:var(--aah-text-color-primary)}.aah-date-editor .aah-range__close-icon{font-size:14px;color:var(--aah-text-color-placeholder);height:inherit;width:unset;cursor:pointer}.aah-date-editor .aah-range__close-icon:hover{color:var(--aah-text-color-secondary)}.aah-date-editor .aah-range__close-icon svg{vertical-align:middle}.aah-date-editor .aah-range__close-icon--hidden{opacity:0;visibility:hidden}.aah-range-editor.aah-input__wrapper{display:inline-flex;align-items:center;padding:0 10px}.aah-range-editor.is-active,.aah-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--aah-input-focus-border-color) inset}.aah-range-editor--large{line-height:var(--aah-component-size-large)}.aah-range-editor--large.aah-input__wrapper{height:var(--aah-component-size-large)}.aah-range-editor--large .aah-range-separator{line-height:40px;font-size:14px}.aah-range-editor--large .aah-range-input{height:38px;line-height:38px;font-size:14px}.aah-range-editor--small{line-height:var(--aah-component-size-small)}.aah-range-editor--small.aah-input__wrapper{height:var(--aah-component-size-small)}.aah-range-editor--small .aah-range-separator{line-height:24px;font-size:12px}.aah-range-editor--small .aah-range-input{height:22px;line-height:22px;font-size:12px}.aah-range-editor.is-disabled{background-color:var(--aah-disabled-bg-color);border-color:var(--aah-disabled-border-color);color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-range-editor.is-disabled:hover,.aah-range-editor.is-disabled:focus{border-color:var(--aah-disabled-border-color)}.aah-range-editor.is-disabled input{background-color:var(--aah-disabled-bg-color);color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-range-editor.is-disabled input::placeholder{color:var(--aah-text-color-placeholder)}.aah-range-editor.is-disabled .aah-range-separator{color:var(--aah-disabled-text-color)}.aah-picker-panel{color:var(--aah-text-color-regular);background:var(--aah-bg-color-overlay);border-radius:var(--aah-border-radius-base);line-height:30px}.aah-picker-panel .aah-time-panel{margin:5px 0;border:solid 1px var(--aah-datepicker-border-color);background-color:var(--aah-bg-color-overlay);box-shadow:var(--aah-box-shadow-light)}.aah-picker-panel__body:after,.aah-picker-panel__body-wrapper:after{content:"";display:table;clear:both}.aah-picker-panel__content{position:relative;margin:15px}.aah-picker-panel__footer{border-top:1px solid var(--aah-datepicker-inner-border-color);padding:4px 12px;text-align:right;background-color:var(--aah-bg-color-overlay);position:relative;font-size:0}.aah-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:var(--aah-datepicker-text-color);padding-left:12px;text-align:left;outline:none;cursor:pointer}.aah-picker-panel__shortcut:hover{color:var(--aah-datepicker-hover-text-color)}.aah-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--aah-datepicker-active-color)}.aah-picker-panel__btn{border:1px solid var(--aah-fill-color-darker);color:var(--aah-text-color-primary);line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:none;font-size:12px}.aah-picker-panel__btn[disabled]{color:var(--aah-text-color-disabled);cursor:not-allowed}.aah-picker-panel__icon-btn{font-size:12px;color:var(--aah-datepicker-icon-color);border:0;background:transparent;cursor:pointer;outline:none;margin-top:8px}.aah-picker-panel__icon-btn:hover{color:var(--aah-datepicker-hover-text-color)}.aah-picker-panel__icon-btn:focus-visible{color:var(--aah-datepicker-hover-text-color)}.aah-picker-panel__icon-btn.is-disabled{color:var(--aah-text-color-disabled)}.aah-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.aah-picker-panel__icon-btn .aah-icon{cursor:pointer;font-size:inherit}.aah-picker-panel__link-btn{vertical-align:middle}.aah-picker-panel *[slot=sidebar],.aah-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid var(--aah-datepicker-inner-border-color);box-sizing:border-box;padding-top:6px;background-color:var(--aah-bg-color-overlay);overflow:auto}.aah-picker-panel *[slot=sidebar]+.aah-picker-panel__body,.aah-picker-panel__sidebar+.aah-picker-panel__body{margin-left:110px}.aah-date-picker{--aah-datepicker-text-color: var(--aah-text-color-regular);--aah-datepicker-off-text-color: var(--aah-text-color-placeholder);--aah-datepicker-header-text-color: var(--aah-text-color-regular);--aah-datepicker-icon-color: var(--aah-text-color-primary);--aah-datepicker-border-color: var(--aah-disabled-border-color);--aah-datepicker-inner-border-color: var(--aah-border-color-light);--aah-datepicker-inrange-bg-color: var(--aah-border-color-extra-light);--aah-datepicker-inrange-hover-bg-color: var(--aah-border-color-extra-light);--aah-datepicker-active-color: var(--aah-color-primary);--aah-datepicker-hover-text-color: var(--aah-color-primary)}.aah-date-picker{width:322px}.aah-date-picker.has-sidebar.has-time{width:434px}.aah-date-picker.has-sidebar{width:438px}.aah-date-picker.has-time .aah-picker-panel__body-wrapper{position:relative}.aah-date-picker .aah-picker-panel__content{width:292px}.aah-date-picker table{table-layout:fixed;width:100%}.aah-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.aah-date-picker__time-header{position:relative;border-bottom:1px solid var(--aah-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.aah-date-picker__header{margin:12px;text-align:center}.aah-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px var(--aah-border-color-lighter)}.aah-date-picker__header--bordered+.aah-picker-panel__content{margin-top:0}.aah-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:var(--aah-text-color-regular)}.aah-date-picker__header-label:hover{color:var(--aah-datepicker-hover-text-color)}.aah-date-picker__header-label:focus-visible{outline:none;color:var(--aah-datepicker-hover-text-color)}.aah-date-picker__header-label.active{color:var(--aah-datepicker-active-color)}.aah-date-picker__prev-btn{float:left}.aah-date-picker__next-btn{float:right}.aah-date-picker__time-wrap{padding:10px;text-align:center}.aah-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.aah-date-picker .aah-time-panel{position:absolute}.aah-date-range-picker{--aah-datepicker-text-color: var(--aah-text-color-regular);--aah-datepicker-off-text-color: var(--aah-text-color-placeholder);--aah-datepicker-header-text-color: var(--aah-text-color-regular);--aah-datepicker-icon-color: var(--aah-text-color-primary);--aah-datepicker-border-color: var(--aah-disabled-border-color);--aah-datepicker-inner-border-color: var(--aah-border-color-light);--aah-datepicker-inrange-bg-color: var(--aah-border-color-extra-light);--aah-datepicker-inrange-hover-bg-color: var(--aah-border-color-extra-light);--aah-datepicker-active-color: var(--aah-color-primary);--aah-datepicker-hover-text-color: var(--aah-color-primary)}.aah-date-range-picker{width:646px}.aah-date-range-picker.has-sidebar{width:756px}.aah-date-range-picker.has-time .aah-picker-panel__body-wrapper{position:relative}.aah-date-range-picker table{table-layout:fixed;width:100%}.aah-date-range-picker .aah-picker-panel__body{min-width:513px}.aah-date-range-picker .aah-picker-panel__content{margin:0}.aah-date-range-picker__header{position:relative;text-align:center;height:28px}.aah-date-range-picker__header [class*=arrow-left]{float:left}.aah-date-range-picker__header [class*=arrow-right]{float:right}.aah-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.aah-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.aah-date-range-picker__content.is-left{border-right:1px solid var(--aah-datepicker-inner-border-color)}.aah-date-range-picker__content .aah-date-range-picker__header div{margin-left:50px;margin-right:50px}.aah-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.aah-date-range-picker__editors-wrap.is-right{text-align:right}.aah-date-range-picker__time-header{position:relative;border-bottom:1px solid var(--aah-datepicker-inner-border-color);font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.aah-date-range-picker__time-header>.aah-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:var(--aah-datepicker-icon-color)}.aah-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.aah-date-range-picker__time-picker-wrap .aah-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.aah-date-range-picker__time-picker-wrap .aah-time-panel{position:absolute}.aah-time-range-picker{width:354px;overflow:visible}.aah-time-range-picker__content{position:relative;text-align:center;padding:10px;z-index:1}.aah-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.aah-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.aah-time-range-picker__body{border-radius:2px;border:1px solid var(--aah-datepicker-border-color)}.aah-time-panel{border-radius:2px;position:relative;width:180px;left:0;z-index:var(--aah-index-top);-webkit-user-select:none;user-select:none;box-sizing:content-box}.aah-time-panel__content{font-size:0;position:relative;overflow:hidden}.aah-time-panel__content:after,.aah-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-16px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left}.aah-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.aah-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%;border-top:1px solid var(--aah-border-color-light);border-bottom:1px solid var(--aah-border-color-light)}.aah-time-panel__content.has-seconds:after{left:66.6666666667%}.aah-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.aah-time-panel__footer{border-top:1px solid var(--aah-timepicker-inner-border-color, var(--aah-border-color-light));padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.aah-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:none;font-size:12px;color:var(--aah-text-color-primary)}.aah-time-panel__btn.confirm{font-weight:800;color:var(--aah-timepicker-active-color, var(--aah-color-primary))}.aah-descriptions{--aah-descriptions-table-border: 1px solid var(--aah-border-color-lighter);--aah-descriptions-item-bordered-label-background: var(--aah-fill-color-light);box-sizing:border-box;font-size:var(--aah-font-size-base);color:var(--aah-text-color-primary)}.aah-descriptions__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.aah-descriptions__title{color:var(--aah-text-color-primary);font-size:16px;font-weight:700}.aah-descriptions__body{background-color:var(--aah-fill-color-blank)}.aah-descriptions__body .aah-descriptions__table{border-collapse:collapse;width:100%}.aah-descriptions__body .aah-descriptions__table .aah-descriptions__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:23px;font-size:14px}.aah-descriptions__body .aah-descriptions__table .aah-descriptions__cell.is-left{text-align:left}.aah-descriptions__body .aah-descriptions__table .aah-descriptions__cell.is-center{text-align:center}.aah-descriptions__body .aah-descriptions__table .aah-descriptions__cell.is-right{text-align:right}.aah-descriptions__body .aah-descriptions__table.is-bordered .aah-descriptions__cell{border:var(--aah-descriptions-table-border);padding:8px 11px}.aah-descriptions__body .aah-descriptions__table:not(.is-bordered) .aah-descriptions__cell{padding-bottom:12px}.aah-descriptions--large{font-size:14px}.aah-descriptions--large .aah-descriptions__header{margin-bottom:20px}.aah-descriptions--large .aah-descriptions__header .aah-descriptions__title{font-size:16px}.aah-descriptions--large .aah-descriptions__body .aah-descriptions__table .aah-descriptions__cell{font-size:14px}.aah-descriptions--large .aah-descriptions__body .aah-descriptions__table.is-bordered .aah-descriptions__cell{padding:12px 15px}.aah-descriptions--large .aah-descriptions__body .aah-descriptions__table:not(.is-bordered) .aah-descriptions__cell{padding-bottom:16px}.aah-descriptions--small{font-size:12px}.aah-descriptions--small .aah-descriptions__header{margin-bottom:12px}.aah-descriptions--small .aah-descriptions__header .aah-descriptions__title{font-size:14px}.aah-descriptions--small .aah-descriptions__body .aah-descriptions__table .aah-descriptions__cell{font-size:12px}.aah-descriptions--small .aah-descriptions__body .aah-descriptions__table.is-bordered .aah-descriptions__cell{padding:4px 7px}.aah-descriptions--small .aah-descriptions__body .aah-descriptions__table:not(.is-bordered) .aah-descriptions__cell{padding-bottom:8px}.aah-descriptions__label.aah-descriptions__cell.is-bordered-label{font-weight:700;color:var(--aah-text-color-regular);background:var(--aah-descriptions-item-bordered-label-background)}.aah-descriptions__label:not(.is-bordered-label){color:var(--aah-text-color-primary);margin-right:16px}.aah-descriptions__label.aah-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.aah-descriptions__content.aah-descriptions__cell.is-bordered-content{color:var(--aah-text-color-primary)}.aah-descriptions__content:not(.is-bordered-label){color:var(--aah-text-color-regular)}.aah-descriptions--large .aah-descriptions__label:not(.is-bordered-label){margin-right:16px}.aah-descriptions--large .aah-descriptions__label.aah-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.aah-descriptions--small .aah-descriptions__label:not(.is-bordered-label){margin-right:12px}.aah-descriptions--small .aah-descriptions__label.aah-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--aah-popup-modal-bg-color: var(--aah-color-black);--aah-popup-modal-opacity: .5}.v-modal-enter{animation:v-modal-in var(--aah-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--aah-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:var(--aah-popup-modal-opacity);background:var(--aah-popup-modal-bg-color)}.aah-popup-parent--hidden{overflow:hidden}.aah-dialog{--aah-dialog-width: 50%;--aah-dialog-margin-top: 15vh;--aah-dialog-bg-color: var(--aah-bg-color);--aah-dialog-box-shadow: var(--aah-box-shadow);--aah-dialog-title-font-size: var(--aah-font-size-large);--aah-dialog-content-font-size: 14px;--aah-dialog-font-line-height: var(--aah-font-line-height-primary);--aah-dialog-padding-primary: 16px;--aah-dialog-border-radius: var(--aah-border-radius-small);position:relative;margin:var(--aah-dialog-margin-top, 15vh) auto 50px;background:var(--aah-dialog-bg-color);border-radius:var(--aah-dialog-border-radius);box-shadow:var(--aah-dialog-box-shadow);box-sizing:border-box;padding:var(--aah-dialog-padding-primary);width:var(--aah-dialog-width, 50%);overflow-wrap:break-word}.aah-dialog:focus{outline:none!important}.aah-dialog.is-align-center{margin:auto}.aah-dialog.is-fullscreen{--aah-dialog-width: 100%;--aah-dialog-margin-top: 0;margin-bottom:0;height:100%;overflow:auto}.aah-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.aah-dialog.is-draggable .aah-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.aah-dialog__header{padding-bottom:var(--aah-dialog-padding-primary)}.aah-dialog__header.show-close{padding-right:calc(var(--aah-dialog-padding-primary) + var(--aah-message-close-size, 16px))}.aah-dialog__headerbtn{position:absolute;top:0;right:0;padding:0;width:48px;height:48px;background:transparent;border:none;outline:none;cursor:pointer;font-size:var(--aah-message-close-size, 16px)}.aah-dialog__headerbtn .aah-dialog__close{color:var(--aah-color-info);font-size:inherit}.aah-dialog__headerbtn:focus .aah-dialog__close,.aah-dialog__headerbtn:hover .aah-dialog__close{color:var(--aah-color-primary)}.aah-dialog__title{line-height:var(--aah-dialog-font-line-height);font-size:var(--aah-dialog-title-font-size);color:var(--aah-text-color-primary)}.aah-dialog__body{color:var(--aah-text-color-regular);font-size:var(--aah-dialog-content-font-size)}.aah-dialog__footer{padding-top:var(--aah-dialog-padding-primary);text-align:right;box-sizing:border-box}.aah-dialog--center{text-align:center}.aah-dialog--center .aah-dialog__body{text-align:initial}.aah-dialog--center .aah-dialog__footer{text-align:inherit}.aah-overlay-dialog{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.dialog-fade-enter-active{animation:modal-fade-in var(--aah-transition-duration)}.dialog-fade-enter-active .aah-overlay-dialog{animation:dialog-fade-in var(--aah-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--aah-transition-duration)}.dialog-fade-leave-active .aah-overlay-dialog{animation:dialog-fade-out var(--aah-transition-duration)}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.aah-divider{position:relative}.aah-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0;border-top:1px var(--aah-border-color) var(--aah-border-style)}.aah-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative;border-left:1px var(--aah-border-color) var(--aah-border-style)}.aah-divider__text{position:absolute;background-color:var(--aah-bg-color);padding:0 20px;font-weight:500;color:var(--aah-text-color-primary);font-size:14px}.aah-divider__text.is-left{left:20px;transform:translateY(-50%)}.aah-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.aah-divider__text.is-right{right:20px;transform:translateY(-50%)}.aah-drawer{--aah-drawer-bg-color: var(--aah-dialog-bg-color, var(--aah-bg-color));--aah-drawer-padding-primary: var(--aah-dialog-padding-primary, 20px)}.aah-drawer{position:absolute;box-sizing:border-box;background-color:var(--aah-drawer-bg-color);display:flex;flex-direction:column;box-shadow:var(--aah-box-shadow-dark);overflow:hidden;transition:all var(--aah-transition-duration)}.aah-drawer .rtl,.aah-drawer .ltr,.aah-drawer .ttb,.aah-drawer .btt{transform:translate(0)}.aah-drawer__sr-focus:focus{outline:none!important}.aah-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:var(--aah-drawer-padding-primary);padding-bottom:0}.aah-drawer__header>:first-child{flex:1}.aah-drawer__title{margin:0;flex:1;line-height:inherit;font-size:1rem}.aah-drawer__footer{padding:var(--aah-drawer-padding-primary);padding-top:10px;text-align:right}.aah-drawer__close-btn{display:inline-flex;border:none;cursor:pointer;font-size:var(--aah-font-size-extra-large);color:inherit;background-color:transparent;outline:none}.aah-drawer__close-btn:focus i,.aah-drawer__close-btn:hover i{color:var(--aah-color-primary)}.aah-drawer__body{flex:1;padding:var(--aah-drawer-padding-primary);overflow:auto}.aah-drawer__body>*{box-sizing:border-box}.aah-drawer.ltr,.aah-drawer.rtl{height:100%;top:0;bottom:0}.aah-drawer.ttb,.aah-drawer.btt{width:100%;left:0;right:0}.aah-drawer.ltr{left:0}.aah-drawer.rtl{right:0}.aah-drawer.ttb{top:0}.aah-drawer.btt{bottom:0}.aah-drawer-fade-enter-active,.aah-drawer-fade-leave-active{transition:all var(--aah-transition-duration)}.aah-drawer-fade-enter-from,.aah-drawer-fade-enter-active,.aah-drawer-fade-enter-to,.aah-drawer-fade-leave-from,.aah-drawer-fade-leave-active,.aah-drawer-fade-leave-to{overflow:hidden!important}.aah-drawer-fade-enter-from,.aah-drawer-fade-leave-to{opacity:0}.aah-drawer-fade-enter-to,.aah-drawer-fade-leave-from{opacity:1}.aah-drawer-fade-enter-from .rtl,.aah-drawer-fade-leave-to .rtl{transform:translate(100%)}.aah-drawer-fade-enter-from .ltr,.aah-drawer-fade-leave-to .ltr{transform:translate(-100%)}.aah-drawer-fade-enter-from .ttb,.aah-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.aah-drawer-fade-enter-from .btt,.aah-drawer-fade-leave-to .btt{transform:translateY(100%)}.aah-dropdown{--aah-dropdown-menu-box-shadow: var(--aah-box-shadow-light);--aah-dropdown-menuItem-hover-fill: var(--aah-color-primary-light-9);--aah-dropdown-menuItem-hover-color: var(--aah-color-primary);--aah-dropdown-menu-index: 10;display:inline-flex;position:relative;color:var(--aah-text-color-regular);font-size:var(--aah-font-size-base);line-height:1;vertical-align:top}.aah-dropdown.is-disabled{color:var(--aah-text-color-placeholder);cursor:not-allowed}.aah-dropdown__popper{--aah-dropdown-menu-box-shadow: var(--aah-box-shadow-light);--aah-dropdown-menuItem-hover-fill: var(--aah-color-primary-light-9);--aah-dropdown-menuItem-hover-color: var(--aah-color-primary);--aah-dropdown-menu-index: 10}.aah-dropdown__popper.aah-popper{background:var(--aah-bg-color-overlay);border:1px solid var(--aah-border-color-light);box-shadow:var(--aah-dropdown-menu-box-shadow)}.aah-dropdown__popper.aah-popper .aah-popper__arrow:before{border:1px solid var(--aah-border-color-light)}.aah-dropdown__popper.aah-popper[data-popper-placement^=top] .aah-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.aah-dropdown__popper.aah-popper[data-popper-placement^=bottom] .aah-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.aah-dropdown__popper.aah-popper[data-popper-placement^=left] .aah-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.aah-dropdown__popper.aah-popper[data-popper-placement^=right] .aah-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.aah-dropdown__popper .aah-dropdown-menu{border:none}.aah-dropdown__popper .aah-dropdown__popper-selfdefine{outline:none}.aah-dropdown__popper .aah-scrollbar__bar{z-index:calc(var(--aah-dropdown-menu-index) + 1)}.aah-dropdown__popper .aah-dropdown__list{list-style:none;padding:0;margin:0;box-sizing:border-box}.aah-dropdown .aah-dropdown__caret-button{padding-left:0;padding-right:0;display:inline-flex;justify-content:center;align-items:center;width:32px;border-left:none}.aah-dropdown .aah-dropdown__caret-button>span{display:inline-flex}.aah-dropdown .aah-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:-1px;bottom:-1px;left:0;background:var(--aah-overlay-color-lighter)}.aah-dropdown .aah-dropdown__caret-button.aah-button:before{background:var(--aah-border-color);opacity:.5}.aah-dropdown .aah-dropdown__caret-button .aah-dropdown__icon{font-size:inherit;padding-left:0}.aah-dropdown .aah-dropdown-selfdefine{outline:none}.aah-dropdown--large .aah-dropdown__caret-button{width:40px}.aah-dropdown--small .aah-dropdown__caret-button{width:24px}.aah-dropdown-menu{position:relative;top:0;left:0;z-index:var(--aah-dropdown-menu-index);padding:5px 0;margin:0;background-color:var(--aah-bg-color-overlay);border:none;border-radius:var(--aah-border-radius-base);box-shadow:none;list-style:none}.aah-dropdown-menu__item{display:flex;align-items:center;white-space:nowrap;list-style:none;line-height:22px;padding:5px 16px;margin:0;font-size:var(--aah-font-size-base);color:var(--aah-text-color-regular);cursor:pointer;outline:none}.aah-dropdown-menu__item:not(.is-disabled):focus{background-color:var(--aah-dropdown-menuItem-hover-fill);color:var(--aah-dropdown-menuItem-hover-color)}.aah-dropdown-menu__item i{margin-right:5px}.aah-dropdown-menu__item--divided{margin:6px 0;border-top:1px solid var(--aah-border-color-lighter)}.aah-dropdown-menu__item.is-disabled{cursor:not-allowed;color:var(--aah-text-color-disabled)}.aah-dropdown-menu--large{padding:7px 0}.aah-dropdown-menu--large .aah-dropdown-menu__item{padding:7px 20px;line-height:22px;font-size:14px}.aah-dropdown-menu--large .aah-dropdown-menu__item--divided{margin:8px 0}.aah-dropdown-menu--small{padding:3px 0}.aah-dropdown-menu--small .aah-dropdown-menu__item{padding:2px 12px;line-height:20px;font-size:12px}.aah-dropdown-menu--small .aah-dropdown-menu__item--divided{margin:4px 0}.aah-empty{--aah-empty-padding: 40px 0;--aah-empty-image-width: 160px;--aah-empty-description-margin-top: 20px;--aah-empty-bottom-margin-top: 20px;--aah-empty-fill-color-0: var(--aah-color-white);--aah-empty-fill-color-1: #fcfcfd;--aah-empty-fill-color-2: #f8f9fb;--aah-empty-fill-color-3: #f7f8fc;--aah-empty-fill-color-4: #eeeff3;--aah-empty-fill-color-5: #edeef2;--aah-empty-fill-color-6: #e9ebef;--aah-empty-fill-color-7: #e5e7e9;--aah-empty-fill-color-8: #e0e3e9;--aah-empty-fill-color-9: #d5d7de;display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--aah-empty-padding)}.aah-empty__image{width:var(--aah-empty-image-width)}.aah-empty__image img{-webkit-user-select:none;user-select:none;width:100%;height:100%;vertical-align:top;object-fit:contain}.aah-empty__image svg{color:var(--aah-svg-monochrome-grey);fill:currentColor;width:100%;height:100%;vertical-align:top}.aah-empty__description{margin-top:var(--aah-empty-description-margin-top)}.aah-empty__description p{margin:0;font-size:var(--aah-font-size-base);color:var(--aah-text-color-secondary)}.aah-empty__bottom{margin-top:var(--aah-empty-bottom-margin-top)}.aah-footer{--aah-footer-padding: 0 20px;--aah-footer-height: 60px;padding:var(--aah-footer-padding);box-sizing:border-box;flex-shrink:0;height:var(--aah-footer-height)}.aah-form{--aah-form-label-font-size: var(--aah-font-size-base);--aah-form-inline-content-width: 220px}.aah-form--label-left .aah-form-item__label{justify-content:flex-start}.aah-form--label-top .aah-form-item{display:block}.aah-form--label-top .aah-form-item .aah-form-item__label{display:block;height:auto;text-align:left;margin-bottom:8px;line-height:22px}.aah-form--inline .aah-form-item{display:inline-flex;vertical-align:middle;margin-right:32px}.aah-form--inline.aah-form--label-top{display:flex;flex-wrap:wrap}.aah-form--inline.aah-form--label-top .aah-form-item{display:block}.aah-form--large.aah-form--label-top .aah-form-item .aah-form-item__label{margin-bottom:12px;line-height:22px}.aah-form--default.aah-form--label-top .aah-form-item .aah-form-item__label{margin-bottom:8px;line-height:22px}.aah-form--small.aah-form--label-top .aah-form-item .aah-form-item__label{margin-bottom:4px;line-height:20px}.aah-form-item{display:flex;--font-size: 14px;margin-bottom:18px}.aah-form-item .aah-form-item{margin-bottom:0}.aah-form-item .aah-input__validateIcon{display:none}.aah-form-item--large{--font-size: 14px;--aah-form-label-font-size: var(--font-size);margin-bottom:22px}.aah-form-item--large .aah-form-item__label{height:40px;line-height:40px}.aah-form-item--large .aah-form-item__content{line-height:40px}.aah-form-item--large .aah-form-item__error{padding-top:4px}.aah-form-item--default{--font-size: 14px;--aah-form-label-font-size: var(--font-size);margin-bottom:18px}.aah-form-item--default .aah-form-item__label{height:32px;line-height:32px}.aah-form-item--default .aah-form-item__content{line-height:32px}.aah-form-item--default .aah-form-item__error{padding-top:2px}.aah-form-item--small{--font-size: 12px;--aah-form-label-font-size: var(--font-size);margin-bottom:18px}.aah-form-item--small .aah-form-item__label{height:24px;line-height:24px}.aah-form-item--small .aah-form-item__content{line-height:24px}.aah-form-item--small .aah-form-item__error{padding-top:2px}.aah-form-item__label-wrap{display:flex}.aah-form-item__label{display:inline-flex;justify-content:flex-end;align-items:flex-start;flex:0 0 auto;font-size:var(--aah-form-label-font-size);color:var(--aah-text-color-regular);height:32px;line-height:32px;padding:0 12px 0 0;box-sizing:border-box}.aah-form-item__content{display:flex;flex-wrap:wrap;align-items:center;flex:1;line-height:32px;position:relative;font-size:var(--font-size);min-width:0}.aah-form-item__content .aah-input-group{vertical-align:top}.aah-form-item__error{color:var(--aah-color-danger);font-size:12px;line-height:1;padding-top:2px;position:absolute;top:100%;left:0}.aah-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.aah-form-item.is-required:not(.is-no-asterisk).asterisk-left>.aah-form-item__label:before,.aah-form-item.is-required:not(.is-no-asterisk).asterisk-left>.aah-form-item__label-wrap>.aah-form-item__label:before{content:"*";color:var(--aah-color-danger);margin-right:4px}.aah-form-item.is-required:not(.is-no-asterisk).asterisk-right>.aah-form-item__label:after,.aah-form-item.is-required:not(.is-no-asterisk).asterisk-right>.aah-form-item__label-wrap>.aah-form-item__label:after{content:"*";color:var(--aah-color-danger);margin-left:4px}.aah-form-item.is-error .aah-input__wrapper,.aah-form-item.is-error .aah-input__wrapper:hover,.aah-form-item.is-error .aah-input__wrapper:focus,.aah-form-item.is-error .aah-input__wrapper.is-focus,.aah-form-item.is-error .aah-textarea__inner,.aah-form-item.is-error .aah-textarea__inner:hover,.aah-form-item.is-error .aah-textarea__inner:focus,.aah-form-item.is-error .aah-textarea__inner.is-focus,.aah-form-item.is-error .aah-select__wrapper,.aah-form-item.is-error .aah-select__wrapper:hover,.aah-form-item.is-error .aah-select__wrapper:focus,.aah-form-item.is-error .aah-select__wrapper.is-focus{box-shadow:0 0 0 1px var(--aah-color-danger) inset}.aah-form-item.is-error .aah-input-group__append .aah-input__wrapper,.aah-form-item.is-error .aah-input-group__prepend .aah-input__wrapper{box-shadow:0 0 0 1px transparent inset}.aah-form-item.is-error .aah-input__validateIcon{color:var(--aah-color-danger)}.aah-form-item--feedback .aah-input__validateIcon{display:inline-flex}.aah-header{--aah-header-padding: 0 20px;--aah-header-height: 60px;padding:var(--aah-header-padding);box-sizing:border-box;flex-shrink:0;height:var(--aah-header-height)}.aah-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.aah-image-viewer__btn{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;box-sizing:border-box;-webkit-user-select:none;user-select:none}.aah-image-viewer__btn .aah-icon{font-size:inherit;cursor:pointer}.aah-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:40px}.aah-image-viewer__canvas{position:static;width:100%;height:100%;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none}.aah-image-viewer__actions{left:50%;bottom:30px;transform:translate(-50%);width:282px;height:44px;padding:0 23px;background-color:var(--aah-text-color-regular);border-color:#fff;border-radius:22px}.aah-image-viewer__actions__inner{width:100%;height:100%;cursor:default;font-size:23px;color:#fff;display:flex;align-items:center;justify-content:space-around}.aah-image-viewer__prev{top:50%;transform:translateY(-50%);left:40px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--aah-text-color-regular);border-color:#fff}.aah-image-viewer__next{top:50%;transform:translateY(-50%);right:40px;text-indent:2px;width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--aah-text-color-regular);border-color:#fff}.aah-image-viewer__close{width:44px;height:44px;font-size:24px;color:#fff;background-color:var(--aah-text-color-regular);border-color:#fff}.aah-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{animation:viewer-fade-in var(--aah-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--aah-transition-duration)}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes viewer-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.aah-image__error,.aah-image__placeholder,.aah-image__wrapper,.aah-image__inner{width:100%;height:100%}.aah-image{position:relative;display:inline-block;overflow:hidden}.aah-image__inner{vertical-align:top;opacity:1}.aah-image__inner.is-loading{opacity:0}.aah-image__wrapper{position:absolute;top:0;left:0}.aah-image__placeholder{background:var(--aah-fill-color-light)}.aah-image__error{display:flex;justify-content:center;align-items:center;font-size:14px;background:var(--aah-fill-color-light);color:var(--aah-text-color-placeholder);vertical-align:middle}.aah-image__preview{cursor:pointer}.aah-input-number{position:relative;display:inline-flex;width:150px;line-height:30px}.aah-input-number .aah-input__wrapper{padding-left:42px;padding-right:42px}.aah-input-number .aah-input__inner{-webkit-appearance:none;-moz-appearance:textfield;text-align:center;line-height:1}.aah-input-number .aah-input__inner::-webkit-inner-spin-button,.aah-input-number .aah-input__inner::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.aah-input-number__increase,.aah-input-number__decrease{display:flex;justify-content:center;align-items:center;height:auto;position:absolute;z-index:1;top:1px;bottom:1px;width:32px;background:var(--aah-fill-color-light);color:var(--aah-text-color-regular);cursor:pointer;font-size:13px;-webkit-user-select:none;user-select:none}.aah-input-number__increase:hover,.aah-input-number__decrease:hover{color:var(--aah-color-primary)}.aah-input-number__increase:hover~.aah-input:not(.is-disabled) .aah-input__wrapper,.aah-input-number__decrease:hover~.aah-input:not(.is-disabled) .aah-input__wrapper{box-shadow:0 0 0 1px var(--aah-input-focus-border-color, var(--aah-color-primary)) inset}.aah-input-number__increase.is-disabled,.aah-input-number__decrease.is-disabled{color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-input-number__increase{right:1px;border-radius:0 var(--aah-border-radius-base) var(--aah-border-radius-base) 0;border-left:var(--aah-border)}.aah-input-number__decrease{left:1px;border-radius:var(--aah-border-radius-base) 0 0 var(--aah-border-radius-base);border-right:var(--aah-border)}.aah-input-number.is-disabled .aah-input-number__increase,.aah-input-number.is-disabled .aah-input-number__decrease{border-color:var(--aah-disabled-border-color);color:var(--aah-disabled-border-color)}.aah-input-number.is-disabled .aah-input-number__increase:hover,.aah-input-number.is-disabled .aah-input-number__decrease:hover{color:var(--aah-disabled-border-color);cursor:not-allowed}.aah-input-number--large{width:180px;line-height:38px}.aah-input-number--large .aah-input-number__increase,.aah-input-number--large .aah-input-number__decrease{width:40px;font-size:14px}.aah-input-number--large .aah-input__wrapper{padding-left:47px;padding-right:47px}.aah-input-number--small{width:120px;line-height:22px}.aah-input-number--small .aah-input-number__increase,.aah-input-number--small .aah-input-number__decrease{width:24px;font-size:12px}.aah-input-number--small .aah-input__wrapper{padding-left:31px;padding-right:31px}.aah-input-number--small .aah-input-number__increase [class*=aah-icon],.aah-input-number--small .aah-input-number__decrease [class*=aah-icon]{transform:scale(.9)}.aah-input-number.is-without-controls .aah-input__wrapper{padding-left:15px;padding-right:15px}.aah-input-number.is-controls-right .aah-input__wrapper{padding-left:15px;padding-right:42px}.aah-input-number.is-controls-right .aah-input-number__increase,.aah-input-number.is-controls-right .aah-input-number__decrease{--aah-input-number-controls-height: 15px;height:var(--aah-input-number-controls-height);line-height:var(--aah-input-number-controls-height)}.aah-input-number.is-controls-right .aah-input-number__increase [class*=aah-icon],.aah-input-number.is-controls-right .aah-input-number__decrease [class*=aah-icon]{transform:scale(.8)}.aah-input-number.is-controls-right .aah-input-number__increase{bottom:auto;left:auto;border-radius:0 var(--aah-border-radius-base) 0 0;border-bottom:var(--aah-border)}.aah-input-number.is-controls-right .aah-input-number__decrease{right:1px;top:auto;left:auto;border-right:none;border-left:var(--aah-border);border-radius:0 0 var(--aah-border-radius-base) 0}.aah-input-number.is-controls-right[class*=large] [class*=increase],.aah-input-number.is-controls-right[class*=large] [class*=decrease]{--aah-input-number-controls-height: 19px}.aah-input-number.is-controls-right[class*=small] [class*=increase],.aah-input-number.is-controls-right[class*=small] [class*=decrease]{--aah-input-number-controls-height: 11px}.aah-textarea{--aah-input-text-color: var(--aah-text-color-regular);--aah-input-border: var(--aah-border);--aah-input-hover-border: var(--aah-border-color-hover);--aah-input-focus-border: var(--aah-color-primary);--aah-input-transparent-border: 0 0 0 1px transparent inset;--aah-input-border-color: var(--aah-border-color);--aah-input-border-radius: var(--aah-border-radius-base);--aah-input-bg-color: var(--aah-fill-color-blank);--aah-input-icon-color: var(--aah-text-color-placeholder);--aah-input-placeholder-color: var(--aah-text-color-placeholder);--aah-input-hover-border-color: var(--aah-border-color-hover);--aah-input-clear-hover-color: var(--aah-text-color-secondary);--aah-input-focus-border-color: var(--aah-color-primary);--aah-input-width: 100%}.aah-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:var(--aah-font-size-base)}.aah-textarea__inner{position:relative;display:block;resize:vertical;padding:5px 11px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;font-family:inherit;color:var(--aah-input-text-color, var(--aah-text-color-regular));background-color:var(--aah-input-bg-color, var(--aah-fill-color-blank));background-image:none;-webkit-appearance:none;box-shadow:0 0 0 1px var(--aah-input-border-color, var(--aah-border-color)) inset;border-radius:var(--aah-input-border-radius, var(--aah-border-radius-base));transition:var(--aah-transition-box-shadow);border:none}.aah-textarea__inner::placeholder{color:var(--aah-input-placeholder-color, var(--aah-text-color-placeholder))}.aah-textarea__inner:hover{box-shadow:0 0 0 1px var(--aah-input-hover-border-color) inset}.aah-textarea__inner:focus{outline:none;box-shadow:0 0 0 1px var(--aah-input-focus-border-color) inset}.aah-textarea .aah-input__count{color:var(--aah-color-info);background:var(--aah-fill-color-blank);position:absolute;font-size:12px;line-height:14px;bottom:5px;right:10px}.aah-textarea.is-disabled .aah-textarea__inner{box-shadow:0 0 0 1px var(--aah-disabled-border-color) inset;background-color:var(--aah-disabled-bg-color);color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-textarea.is-disabled .aah-textarea__inner::placeholder{color:var(--aah-text-color-placeholder)}.aah-textarea.is-exceed .aah-textarea__inner{box-shadow:0 0 0 1px var(--aah-color-danger) inset}.aah-textarea.is-exceed .aah-input__count{color:var(--aah-color-danger)}.aah-input{--aah-input-text-color: var(--aah-text-color-regular);--aah-input-border: var(--aah-border);--aah-input-hover-border: var(--aah-border-color-hover);--aah-input-focus-border: var(--aah-color-primary);--aah-input-transparent-border: 0 0 0 1px transparent inset;--aah-input-border-color: var(--aah-border-color);--aah-input-border-radius: var(--aah-border-radius-base);--aah-input-bg-color: var(--aah-fill-color-blank);--aah-input-icon-color: var(--aah-text-color-placeholder);--aah-input-placeholder-color: var(--aah-text-color-placeholder);--aah-input-hover-border-color: var(--aah-border-color-hover);--aah-input-clear-hover-color: var(--aah-text-color-secondary);--aah-input-focus-border-color: var(--aah-color-primary);--aah-input-width: 100%}.aah-input{--aah-input-height: var(--aah-component-size);position:relative;font-size:var(--aah-font-size-base);display:inline-flex;width:var(--aah-input-width);line-height:var(--aah-input-height);box-sizing:border-box;vertical-align:middle}.aah-input::-webkit-scrollbar{z-index:11;width:6px}.aah-input::-webkit-scrollbar:horizontal{height:6px}.aah-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:var(--aah-text-color-disabled)}.aah-input::-webkit-scrollbar-corner{background:var(--aah-fill-color-blank)}.aah-input::-webkit-scrollbar-track{background:var(--aah-fill-color-blank)}.aah-input::-webkit-scrollbar-track-piece{background:var(--aah-fill-color-blank);width:6px}.aah-input .aah-input__clear,.aah-input .aah-input__password{color:var(--aah-input-icon-color);font-size:14px;cursor:pointer}.aah-input .aah-input__clear:hover,.aah-input .aah-input__password:hover{color:var(--aah-input-clear-hover-color)}.aah-input .aah-input__count{height:100%;display:inline-flex;align-items:center;color:var(--aah-color-info);font-size:12px}.aah-input .aah-input__count .aah-input__count-inner{background:var(--aah-fill-color-blank);line-height:initial;display:inline-block;padding-left:8px}.aah-input__wrapper{display:inline-flex;flex-grow:1;align-items:center;justify-content:center;padding:1px 11px;background-color:var(--aah-input-bg-color, var(--aah-fill-color-blank));background-image:none;border-radius:var(--aah-input-border-radius, var(--aah-border-radius-base));cursor:text;transition:var(--aah-transition-box-shadow);transform:translateZ(0);box-shadow:0 0 0 1px var(--aah-input-border-color, var(--aah-border-color)) inset}.aah-input__wrapper:hover{box-shadow:0 0 0 1px var(--aah-input-hover-border-color) inset}.aah-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--aah-input-focus-border-color) inset}.aah-input__inner{--aah-input-inner-height: calc(var(--aah-input-height, 32px) - 2px);width:100%;flex-grow:1;-webkit-appearance:none;color:var(--aah-input-text-color, var(--aah-text-color-regular));font-size:inherit;height:var(--aah-input-inner-height);line-height:var(--aah-input-inner-height);padding:0;outline:none;border:none;background:none;box-sizing:border-box}.aah-input__inner:focus{outline:none}.aah-input__inner::placeholder{color:var(--aah-input-placeholder-color, var(--aah-text-color-placeholder))}.aah-input__inner[type=password]::-ms-reveal{display:none}.aah-input__inner[type=number]{line-height:1}.aah-input__prefix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--aah-input-icon-color, var(--aah-text-color-placeholder));transition:all var(--aah-transition-duration);pointer-events:none}.aah-input__prefix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.aah-input__prefix-inner>:last-child{margin-right:8px}.aah-input__prefix-inner>:first-child,.aah-input__prefix-inner>:first-child.aah-input__icon{margin-left:0}.aah-input__suffix{display:inline-flex;white-space:nowrap;flex-shrink:0;flex-wrap:nowrap;height:100%;text-align:center;color:var(--aah-input-icon-color, var(--aah-text-color-placeholder));transition:all var(--aah-transition-duration);pointer-events:none}.aah-input__suffix-inner{pointer-events:all;display:inline-flex;align-items:center;justify-content:center}.aah-input__suffix-inner>:first-child{margin-left:8px}.aah-input .aah-input__icon{height:inherit;line-height:inherit;display:flex;justify-content:center;align-items:center;transition:all var(--aah-transition-duration);margin-left:8px}.aah-input__validateIcon{pointer-events:none}.aah-input.is-active .aah-input__wrapper{box-shadow:0 0 0 1px var(--aah-input-focus-color, ) inset}.aah-input.is-disabled{cursor:not-allowed}.aah-input.is-disabled .aah-input__wrapper{background-color:var(--aah-disabled-bg-color);box-shadow:0 0 0 1px var(--aah-disabled-border-color) inset}.aah-input.is-disabled .aah-input__inner{color:var(--aah-disabled-text-color);-webkit-text-fill-color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-input.is-disabled .aah-input__inner::placeholder{color:var(--aah-text-color-placeholder)}.aah-input.is-disabled .aah-input__icon{cursor:not-allowed}.aah-input.is-exceed .aah-input__wrapper{box-shadow:0 0 0 1px var(--aah-color-danger) inset}.aah-input.is-exceed .aah-input__suffix .aah-input__count{color:var(--aah-color-danger)}.aah-input--large{--aah-input-height: var(--aah-component-size-large);font-size:14px}.aah-input--large .aah-input__wrapper{padding:1px 15px}.aah-input--large .aah-input__inner{--aah-input-inner-height: calc(var(--aah-input-height, 40px) - 2px)}.aah-input--small{--aah-input-height: var(--aah-component-size-small);font-size:12px}.aah-input--small .aah-input__wrapper{padding:1px 7px}.aah-input--small .aah-input__inner{--aah-input-inner-height: calc(var(--aah-input-height, 24px) - 2px)}.aah-input-group{display:inline-flex;width:100%;align-items:stretch}.aah-input-group__append,.aah-input-group__prepend{background-color:var(--aah-fill-color-light);color:var(--aah-color-info);position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:100%;border-radius:var(--aah-input-border-radius);padding:0 20px;white-space:nowrap}.aah-input-group__append:focus,.aah-input-group__prepend:focus{outline:none}.aah-input-group__append .aah-select,.aah-input-group__append .aah-button,.aah-input-group__prepend .aah-select,.aah-input-group__prepend .aah-button{display:inline-block;margin:0 -20px}.aah-input-group__append button.aah-button,.aah-input-group__append button.aah-button:hover,.aah-input-group__append div.aah-select .aah-select__wrapper,.aah-input-group__append div.aah-select:hover .aah-select__wrapper,.aah-input-group__prepend button.aah-button,.aah-input-group__prepend button.aah-button:hover,.aah-input-group__prepend div.aah-select .aah-select__wrapper,.aah-input-group__prepend div.aah-select:hover .aah-select__wrapper{border-color:transparent;background-color:transparent;color:inherit}.aah-input-group__append .aah-button,.aah-input-group__append .aah-input,.aah-input-group__prepend .aah-button,.aah-input-group__prepend .aah-input{font-size:inherit}.aah-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--aah-input-border-color) inset,0 1px 0 0 var(--aah-input-border-color) inset,0 -1px 0 0 var(--aah-input-border-color) inset}.aah-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--aah-input-border-color) inset,0 -1px 0 0 var(--aah-input-border-color) inset,-1px 0 0 0 var(--aah-input-border-color) inset}.aah-input-group--prepend>.aah-input__wrapper{border-top-left-radius:0;border-bottom-left-radius:0}.aah-input-group--prepend .aah-input-group__prepend .aah-select .aah-select__wrapper{border-top-right-radius:0;border-bottom-right-radius:0;box-shadow:1px 0 0 0 var(--aah-input-border-color) inset,0 1px 0 0 var(--aah-input-border-color) inset,0 -1px 0 0 var(--aah-input-border-color) inset}.aah-input-group--append>.aah-input__wrapper{border-top-right-radius:0;border-bottom-right-radius:0}.aah-input-group--append .aah-input-group__append .aah-select .aah-select__wrapper{border-top-left-radius:0;border-bottom-left-radius:0;box-shadow:0 1px 0 0 var(--aah-input-border-color) inset,0 -1px 0 0 var(--aah-input-border-color) inset,-1px 0 0 0 var(--aah-input-border-color) inset}.aah-input-hidden{display:none!important}.aah-link{--aah-link-font-size: var(--aah-font-size-base);--aah-link-font-weight: var(--aah-font-weight-primary);--aah-link-text-color: var(--aah-text-color-regular);--aah-link-hover-text-color: var(--aah-color-primary);--aah-link-disabled-text-color: var(--aah-text-color-placeholder)}.aah-link{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:none;cursor:pointer;padding:0;font-size:var(--aah-link-font-size);font-weight:var(--aah-link-font-weight);color:var(--aah-link-text-color)}.aah-link:hover{color:var(--aah-link-hover-text-color)}.aah-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid var(--aah-link-hover-text-color)}.aah-link.is-disabled{color:var(--aah-link-disabled-text-color);cursor:not-allowed}.aah-link [class*=aah-icon-]+span{margin-left:5px}.aah-link.aah-link--default:after{border-color:var(--aah-link-hover-text-color)}.aah-link__inner{display:inline-flex;justify-content:center;align-items:center}.aah-link.aah-link--primary{--aah-link-text-color: var(--aah-color-primary);--aah-link-hover-text-color: var(--aah-color-primary-light-3);--aah-link-disabled-text-color: var(--aah-color-primary-light-5)}.aah-link.aah-link--primary:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--primary.is-underline:hover:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--success{--aah-link-text-color: var(--aah-color-success);--aah-link-hover-text-color: var(--aah-color-success-light-3);--aah-link-disabled-text-color: var(--aah-color-success-light-5)}.aah-link.aah-link--success:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--success.is-underline:hover:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--warning{--aah-link-text-color: var(--aah-color-warning);--aah-link-hover-text-color: var(--aah-color-warning-light-3);--aah-link-disabled-text-color: var(--aah-color-warning-light-5)}.aah-link.aah-link--warning:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--warning.is-underline:hover:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--danger{--aah-link-text-color: var(--aah-color-danger);--aah-link-hover-text-color: var(--aah-color-danger-light-3);--aah-link-disabled-text-color: var(--aah-color-danger-light-5)}.aah-link.aah-link--danger:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--danger.is-underline:hover:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--error{--aah-link-text-color: var(--aah-color-error);--aah-link-hover-text-color: var(--aah-color-error-light-3);--aah-link-disabled-text-color: var(--aah-color-error-light-5)}.aah-link.aah-link--error:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--error.is-underline:hover:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--info{--aah-link-text-color: var(--aah-color-info);--aah-link-hover-text-color: var(--aah-color-info-light-3);--aah-link-disabled-text-color: var(--aah-color-info-light-5)}.aah-link.aah-link--info:after{border-color:var(--aah-link-text-color)}.aah-link.aah-link--info.is-underline:hover:after{border-color:var(--aah-link-text-color)}:root{--aah-loading-spinner-size: 42px;--aah-loading-fullscreen-spinner-size: 50px}.aah-loading-parent--relative{position:relative!important}.aah-loading-parent--hidden{overflow:hidden!important}.aah-loading-mask{position:absolute;z-index:2000;background-color:var(--aah-mask-color);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity var(--aah-transition-duration)}.aah-loading-mask.is-fullscreen{position:fixed}.aah-loading-mask.is-fullscreen .aah-loading-spinner{margin-top:calc((0px - var(--aah-loading-fullscreen-spinner-size)) / 2)}.aah-loading-mask.is-fullscreen .aah-loading-spinner .circular{height:var(--aah-loading-fullscreen-spinner-size);width:var(--aah-loading-fullscreen-spinner-size)}.aah-loading-spinner{top:50%;margin-top:calc((0px - var(--aah-loading-spinner-size)) / 2);width:100%;text-align:center;position:absolute}.aah-loading-spinner .aah-loading-text{color:var(--aah-color-primary);margin:3px 0;font-size:14px}.aah-loading-spinner .circular{display:inline;height:var(--aah-loading-spinner-size);width:var(--aah-loading-spinner-size);animation:loading-rotate 2s linear infinite}.aah-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--aah-color-primary);stroke-linecap:round}.aah-loading-spinner i{color:var(--aah-color-primary)}.aah-loading-fade-enter-from,.aah-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.aah-main{--aah-main-padding: 20px;display:block;flex:1;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:var(--aah-main-padding)}:root{--aah-menu-active-color: var(--aah-color-primary);--aah-menu-text-color: var(--aah-text-color-primary);--aah-menu-hover-text-color: var(--aah-color-primary);--aah-menu-bg-color: var(--aah-fill-color-blank);--aah-menu-hover-bg-color: var(--aah-color-primary-light-9);--aah-menu-item-height: 56px;--aah-menu-sub-item-height: calc(var(--aah-menu-item-height) - 6px);--aah-menu-horizontal-height: 60px;--aah-menu-horizontal-sub-item-height: 36px;--aah-menu-item-font-size: var(--aah-font-size-base);--aah-menu-item-hover-fill: var(--aah-color-primary-light-9);--aah-menu-border-color: var(--aah-border-color);--aah-menu-base-level-padding: 20px;--aah-menu-level-padding: 20px;--aah-menu-icon-width: 24px}.aah-menu{border-right:solid 1px var(--aah-menu-border-color);list-style:none;position:relative;margin:0;padding-left:0;background-color:var(--aah-menu-bg-color);box-sizing:border-box}.aah-menu--vertical:not(.aah-menu--collapse):not(.aah-menu--popup-container) .aah-menu-item,.aah-menu--vertical:not(.aah-menu--collapse):not(.aah-menu--popup-container) .aah-sub-menu__title,.aah-menu--vertical:not(.aah-menu--collapse):not(.aah-menu--popup-container) .aah-menu-item-group__title{white-space:nowrap;padding-left:calc(var(--aah-menu-base-level-padding) + var(--aah-menu-level) * var(--aah-menu-level-padding))}.aah-menu:not(.aah-menu--collapse) .aah-sub-menu__title{padding-right:calc(var(--aah-menu-base-level-padding) + var(--aah-menu-icon-width))}.aah-menu--horizontal{display:flex;flex-wrap:nowrap;border-right:none;height:var(--aah-menu-horizontal-height)}.aah-menu--horizontal.aah-menu--popup-container{height:unset}.aah-menu--horizontal.aah-menu{border-bottom:solid 1px var(--aah-menu-border-color)}.aah-menu--horizontal>.aah-menu-item{display:inline-flex;justify-content:center;align-items:center;height:100%;margin:0;border-bottom:2px solid transparent;color:var(--aah-menu-text-color)}.aah-menu--horizontal>.aah-menu-item a,.aah-menu--horizontal>.aah-menu-item a:hover{color:inherit}.aah-menu--horizontal>.aah-sub-menu:focus,.aah-menu--horizontal>.aah-sub-menu:hover{outline:none}.aah-menu--horizontal>.aah-sub-menu:hover .aah-sub-menu__title{color:var(--aah-menu-hover-text-color)}.aah-menu--horizontal>.aah-sub-menu.is-active .aah-sub-menu__title{border-bottom:2px solid var(--aah-menu-active-color);color:var(--aah-menu-active-color)}.aah-menu--horizontal>.aah-sub-menu .aah-sub-menu__title{height:100%;border-bottom:2px solid transparent;color:var(--aah-menu-text-color)}.aah-menu--horizontal>.aah-sub-menu .aah-sub-menu__title:hover{background-color:var(--aah-menu-bg-color)}.aah-menu--horizontal .aah-menu .aah-menu-item,.aah-menu--horizontal .aah-menu .aah-sub-menu__title{background-color:var(--aah-menu-bg-color);display:flex;align-items:center;height:var(--aah-menu-horizontal-sub-item-height);line-height:var(--aah-menu-horizontal-sub-item-height);padding:0 10px;color:var(--aah-menu-text-color)}.aah-menu--horizontal .aah-menu .aah-sub-menu__title{padding-right:40px}.aah-menu--horizontal .aah-menu .aah-menu-item.is-active,.aah-menu--horizontal .aah-menu .aah-sub-menu.is-active>.aah-sub-menu__title{color:var(--aah-menu-active-color)}.aah-menu--horizontal .aah-menu-item:not(.is-disabled):hover,.aah-menu--horizontal .aah-menu-item:not(.is-disabled):focus{outline:none;color:var(--aah-menu-hover-text-color);background-color:var(--aah-menu-hover-bg-color)}.aah-menu--horizontal>.aah-menu-item.is-active{border-bottom:2px solid var(--aah-menu-active-color);color:var(--aah-menu-active-color)!important}.aah-menu--collapse{width:calc(var(--aah-menu-icon-width) + var(--aah-menu-base-level-padding) * 2)}.aah-menu--collapse>.aah-menu-item [class^=aah-icon],.aah-menu--collapse>.aah-sub-menu>.aah-sub-menu__title [class^=aah-icon],.aah-menu--collapse>.aah-menu-item-group>ul>.aah-sub-menu>.aah-sub-menu__title [class^=aah-icon]{margin:0;vertical-align:middle;width:var(--aah-menu-icon-width);text-align:center}.aah-menu--collapse>.aah-menu-item .aah-sub-menu__icon-arrow,.aah-menu--collapse>.aah-sub-menu>.aah-sub-menu__title .aah-sub-menu__icon-arrow,.aah-menu--collapse>.aah-menu-item-group>ul>.aah-sub-menu>.aah-sub-menu__title .aah-sub-menu__icon-arrow{display:none}.aah-menu--collapse>.aah-menu-item>span,.aah-menu--collapse>.aah-sub-menu>.aah-sub-menu__title>span,.aah-menu--collapse>.aah-menu-item-group>ul>.aah-sub-menu>.aah-sub-menu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.aah-menu--collapse>.aah-menu-item.is-active i{color:inherit}.aah-menu--collapse .aah-menu .aah-sub-menu{min-width:200px}.aah-menu--collapse .aah-sub-menu.is-active .aah-sub-menu__title{color:var(--aah-menu-active-color)}.aah-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:var(--aah-border-radius-small);box-shadow:var(--aah-box-shadow-light)}.aah-menu .aah-icon{flex-shrink:0}.aah-menu-item{display:flex;align-items:center;height:var(--aah-menu-item-height);line-height:var(--aah-menu-item-height);font-size:var(--aah-menu-item-font-size);color:var(--aah-menu-text-color);padding:0 var(--aah-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--aah-transition-duration),background-color var(--aah-transition-duration),color var(--aah-transition-duration);box-sizing:border-box;white-space:nowrap}.aah-menu-item *{vertical-align:bottom}.aah-menu-item i{color:inherit}.aah-menu-item:hover,.aah-menu-item:focus{outline:none}.aah-menu-item:hover{background-color:var(--aah-menu-hover-bg-color)}.aah-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:none!important}.aah-menu-item [class^=aah-icon]{margin-right:5px;width:var(--aah-menu-icon-width);text-align:center;font-size:18px;vertical-align:middle}.aah-menu-item.is-active{color:var(--aah-menu-active-color)}.aah-menu-item.is-active i{color:inherit}.aah-menu-item .aah-menu-tooltip__trigger{position:absolute;left:0;top:0;height:100%;width:100%;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 var(--aah-menu-base-level-padding)}.aah-sub-menu{list-style:none;margin:0;padding-left:0}.aah-sub-menu__title{display:flex;align-items:center;height:var(--aah-menu-item-height);line-height:var(--aah-menu-item-height);font-size:var(--aah-menu-item-font-size);color:var(--aah-menu-text-color);padding:0 var(--aah-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--aah-transition-duration),background-color var(--aah-transition-duration),color var(--aah-transition-duration);box-sizing:border-box;white-space:nowrap}.aah-sub-menu__title *{vertical-align:bottom}.aah-sub-menu__title i{color:inherit}.aah-sub-menu__title:hover,.aah-sub-menu__title:focus{outline:none}.aah-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:none!important}.aah-sub-menu__title:hover{background-color:var(--aah-menu-hover-bg-color)}.aah-sub-menu .aah-menu{border:none}.aah-sub-menu .aah-menu-item{height:var(--aah-menu-sub-item-height);line-height:var(--aah-menu-sub-item-height)}.aah-sub-menu__hide-arrow .aah-sub-menu__icon-arrow{display:none!important}.aah-sub-menu.is-active .aah-sub-menu__title{border-bottom-color:var(--aah-menu-active-color)}.aah-sub-menu.is-disabled .aah-sub-menu__title,.aah-sub-menu.is-disabled .aah-menu-item{opacity:.25;cursor:not-allowed;background:none!important}.aah-sub-menu .aah-icon{vertical-align:middle;margin-right:5px;width:var(--aah-menu-icon-width);text-align:center;font-size:18px}.aah-sub-menu .aah-icon.aah-sub-menu__icon-more{margin-right:0!important}.aah-sub-menu .aah-sub-menu__icon-arrow{position:absolute;top:50%;right:var(--aah-menu-base-level-padding);margin-top:-6px;transition:transform var(--aah-transition-duration);font-size:12px;margin-right:0;width:inherit}.aah-menu-item-group>ul{padding:0}.aah-menu-item-group__title{padding:7px 0 7px var(--aah-menu-base-level-padding);line-height:normal;font-size:12px;color:var(--aah-text-color-secondary)}.horizontal-collapse-transition .aah-sub-menu__title .aah-sub-menu__icon-arrow{transition:var(--aah-transition-duration-fast);opacity:0}.aah-message-box{--aah-messagebox-title-color: var(--aah-text-color-primary);--aah-messagebox-width: 420px;--aah-messagebox-border-radius: 4px;--aah-messagebox-box-shadow: var(--aah-box-shadow);--aah-messagebox-font-size: var(--aah-font-size-large);--aah-messagebox-content-font-size: var(--aah-font-size-base);--aah-messagebox-content-color: var(--aah-text-color-regular);--aah-messagebox-error-font-size: 12px;--aah-messagebox-padding-primary: 12px;--aah-messagebox-font-line-height: var(--aah-font-line-height-primary)}.aah-message-box{display:inline-block;position:relative;max-width:var(--aah-messagebox-width);width:100%;padding:var(--aah-messagebox-padding-primary);vertical-align:middle;background-color:var(--aah-bg-color);border-radius:var(--aah-messagebox-border-radius);font-size:var(--aah-messagebox-font-size);box-shadow:var(--aah-messagebox-box-shadow);text-align:left;overflow:hidden;backface-visibility:hidden;box-sizing:border-box;overflow-wrap:break-word}.aah-message-box:focus{outline:none!important}.aah-overlay.is-message-box .aah-overlay-message-box{text-align:center;position:fixed;top:0;right:0;bottom:0;left:0;padding:16px;overflow:auto}.aah-overlay.is-message-box .aah-overlay-message-box:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.aah-message-box.is-draggable .aah-message-box__header{cursor:move;-webkit-user-select:none;user-select:none}.aah-message-box__header{padding-bottom:var(--aah-messagebox-padding-primary)}.aah-message-box__header.show-close{padding-right:calc(var(--aah-messagebox-padding-primary) + var(--aah-message-close-size, 16px))}.aah-message-box__title{font-size:var(--aah-messagebox-font-size);line-height:var(--aah-messagebox-font-line-height);color:var(--aah-messagebox-title-color)}.aah-message-box__headerbtn{position:absolute;top:0;right:0;padding:0;width:40px;height:40px;border:none;outline:none;background:transparent;font-size:var(--aah-message-close-size, 16px);cursor:pointer}.aah-message-box__headerbtn .aah-message-box__close{color:var(--aah-color-info);font-size:inherit}.aah-message-box__headerbtn:focus .aah-message-box__close,.aah-message-box__headerbtn:hover .aah-message-box__close{color:var(--aah-color-primary)}.aah-message-box__content{color:var(--aah-messagebox-content-color);font-size:var(--aah-messagebox-content-font-size)}.aah-message-box__container{display:flex;align-items:center;gap:12px}.aah-message-box__input{padding-top:12px}.aah-message-box__input div.invalid>input{border-color:var(--aah-color-error)}.aah-message-box__input div.invalid>input:focus{border-color:var(--aah-color-error)}.aah-message-box__status{font-size:24px}.aah-message-box__status.aah-message-box-icon--success{--aah-messagebox-color: var(--aah-color-success);color:var(--aah-messagebox-color)}.aah-message-box__status.aah-message-box-icon--info{--aah-messagebox-color: var(--aah-color-info);color:var(--aah-messagebox-color)}.aah-message-box__status.aah-message-box-icon--warning{--aah-messagebox-color: var(--aah-color-warning);color:var(--aah-messagebox-color)}.aah-message-box__status.aah-message-box-icon--error{--aah-messagebox-color: var(--aah-color-error);color:var(--aah-messagebox-color)}.aah-message-box__message{margin:0}.aah-message-box__message p{margin:0;line-height:var(--aah-messagebox-font-line-height)}.aah-message-box__errormsg{color:var(--aah-color-error);font-size:var(--aah-messagebox-error-font-size);line-height:var(--aah-messagebox-font-line-height)}.aah-message-box__btns{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;padding-top:var(--aah-messagebox-padding-primary)}.aah-message-box--center .aah-message-box__title{display:flex;align-items:center;justify-content:center;gap:6px}.aah-message-box--center .aah-message-box__status{font-size:inherit}.aah-message-box--center .aah-message-box__btns,.aah-message-box--center .aah-message-box__container{justify-content:center}.fade-in-linear-enter-active .aah-overlay-message-box{animation:msgbox-fade-in var(--aah-transition-duration)}.fade-in-linear-leave-active .aah-overlay-message-box{animation:msgbox-fade-in var(--aah-transition-duration) reverse}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}.aah-message{--aah-message-bg-color: var(--aah-color-info-light-9);--aah-message-border-color: var(--aah-border-color-lighter);--aah-message-padding: 11px 15px;--aah-message-close-size: 16px;--aah-message-close-icon-color: var(--aah-text-color-placeholder);--aah-message-close-hover-color: var(--aah-text-color-secondary)}.aah-message{width:fit-content;max-width:calc(100% - 32px);box-sizing:border-box;border-radius:var(--aah-border-radius-base);border-width:var(--aah-border-width);border-style:var(--aah-border-style);border-color:var(--aah-message-border-color);position:fixed;left:50%;top:20px;transform:translate(-50%);background-color:var(--aah-message-bg-color);transition:opacity var(--aah-transition-duration),transform .4s,top .4s;padding:var(--aah-message-padding);display:flex;align-items:center;gap:8px}.aah-message.is-center{justify-content:center}.aah-message.is-plain{background-color:var(--aah-bg-color-overlay);border-color:var(--aah-bg-color-overlay);box-shadow:var(--aah-box-shadow-light)}.aah-message p{margin:0}.aah-message--success{--aah-message-bg-color: var(--aah-color-success-light-9);--aah-message-border-color: var(--aah-color-success-light-8);--aah-message-text-color: var(--aah-color-success)}.aah-message--success .aah-message__content{color:var(--aah-message-text-color);overflow-wrap:break-word}.aah-message .aah-message-icon--success{color:var(--aah-message-text-color)}.aah-message--info{--aah-message-bg-color: var(--aah-color-info-light-9);--aah-message-border-color: var(--aah-color-info-light-8);--aah-message-text-color: var(--aah-color-info)}.aah-message--info .aah-message__content{color:var(--aah-message-text-color);overflow-wrap:break-word}.aah-message .aah-message-icon--info{color:var(--aah-message-text-color)}.aah-message--warning{--aah-message-bg-color: var(--aah-color-warning-light-9);--aah-message-border-color: var(--aah-color-warning-light-8);--aah-message-text-color: var(--aah-color-warning)}.aah-message--warning .aah-message__content{color:var(--aah-message-text-color);overflow-wrap:break-word}.aah-message .aah-message-icon--warning{color:var(--aah-message-text-color)}.aah-message--error{--aah-message-bg-color: var(--aah-color-error-light-9);--aah-message-border-color: var(--aah-color-error-light-8);--aah-message-text-color: var(--aah-color-error)}.aah-message--error .aah-message__content{color:var(--aah-message-text-color);overflow-wrap:break-word}.aah-message .aah-message-icon--error{color:var(--aah-message-text-color)}.aah-message .aah-message__badge{position:absolute;top:-8px;right:-8px}.aah-message__content{padding:0;font-size:14px;line-height:1}.aah-message__content:focus{outline-width:0}.aah-message .aah-message__closeBtn{cursor:pointer;color:var(--aah-message-close-icon-color);font-size:var(--aah-message-close-size)}.aah-message .aah-message__closeBtn:focus{outline-width:0}.aah-message .aah-message__closeBtn:hover{color:var(--aah-message-close-hover-color)}.aah-message-fade-enter-from,.aah-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.aah-notification{--aah-notification-width: 330px;--aah-notification-padding: 14px 26px 14px 13px;--aah-notification-radius: 8px;--aah-notification-shadow: var(--aah-box-shadow-light);--aah-notification-border-color: var(--aah-border-color-lighter);--aah-notification-icon-size: 24px;--aah-notification-close-font-size: var(--aah-message-close-size, 16px);--aah-notification-group-margin-left: 13px;--aah-notification-group-margin-right: 8px;--aah-notification-content-font-size: var(--aah-font-size-base);--aah-notification-content-color: var(--aah-text-color-regular);--aah-notification-title-font-size: 16px;--aah-notification-title-color: var(--aah-text-color-primary);--aah-notification-close-color: var(--aah-text-color-secondary);--aah-notification-close-hover-color: var(--aah-text-color-regular)}.aah-notification{display:flex;width:var(--aah-notification-width);padding:var(--aah-notification-padding);border-radius:var(--aah-notification-radius);box-sizing:border-box;border:1px solid var(--aah-notification-border-color);position:fixed;background-color:var(--aah-bg-color-overlay);box-shadow:var(--aah-notification-shadow);transition:opacity var(--aah-transition-duration),transform var(--aah-transition-duration),left var(--aah-transition-duration),right var(--aah-transition-duration),top .4s,bottom var(--aah-transition-duration);overflow-wrap:break-word;overflow:hidden;z-index:9999}.aah-notification.right{right:16px}.aah-notification.left{left:16px}.aah-notification__group{margin-left:var(--aah-notification-group-margin-left);margin-right:var(--aah-notification-group-margin-right)}.aah-notification__title{font-weight:700;font-size:var(--aah-notification-title-font-size);line-height:var(--aah-notification-icon-size);color:var(--aah-notification-title-color);margin:0}.aah-notification__content{font-size:var(--aah-notification-content-font-size);line-height:24px;margin:6px 0 0;color:var(--aah-notification-content-color)}.aah-notification__content p{margin:0}.aah-notification .aah-notification__icon{height:var(--aah-notification-icon-size);width:var(--aah-notification-icon-size);font-size:var(--aah-notification-icon-size)}.aah-notification .aah-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:var(--aah-notification-close-color);font-size:var(--aah-notification-close-font-size)}.aah-notification .aah-notification__closeBtn:hover{color:var(--aah-notification-close-hover-color)}.aah-notification .aah-notification--success{--aah-notification-icon-color: var(--aah-color-success);color:var(--aah-notification-icon-color)}.aah-notification .aah-notification--info{--aah-notification-icon-color: var(--aah-color-info);color:var(--aah-notification-icon-color)}.aah-notification .aah-notification--warning{--aah-notification-icon-color: var(--aah-color-warning);color:var(--aah-notification-icon-color)}.aah-notification .aah-notification--error{--aah-notification-icon-color: var(--aah-color-error);color:var(--aah-notification-icon-color)}.aah-notification-fade-enter-from.right{right:0;transform:translate(100%)}.aah-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.aah-notification-fade-leave-to{opacity:0}.aah-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;height:100%;background-color:var(--aah-overlay-color-lighter);overflow:auto}.aah-overlay .aah-overlay-root{height:0}.aah-page-header.is-contentful .aah-page-header__main{border-top:1px solid var(--aah-border-color-light);margin-top:16px}.aah-page-header__header{display:flex;align-items:center;justify-content:space-between;line-height:24px}.aah-page-header__left{display:flex;align-items:center;margin-right:40px;position:relative}.aah-page-header__back{display:flex;align-items:center;cursor:pointer}.aah-page-header__left .aah-divider--vertical{margin:0 16px}.aah-page-header__icon{font-size:16px;margin-right:10px;display:flex;align-items:center}.aah-page-header__icon .aah-icon{font-size:inherit}.aah-page-header__title{font-size:14px;font-weight:500}.aah-page-header__content{font-size:18px;color:var(--aah-text-color-primary)}.aah-page-header__breadcrumb{margin-bottom:16px}.aah-pagination{--aah-pagination-font-size: 14px;--aah-pagination-bg-color: var(--aah-fill-color-blank);--aah-pagination-text-color: var(--aah-text-color-primary);--aah-pagination-border-radius: 2px;--aah-pagination-button-color: var(--aah-text-color-primary);--aah-pagination-button-width: 32px;--aah-pagination-button-height: 32px;--aah-pagination-button-disabled-color: var(--aah-text-color-placeholder);--aah-pagination-button-disabled-bg-color: var(--aah-fill-color-blank);--aah-pagination-button-bg-color: var(--aah-fill-color);--aah-pagination-hover-color: var(--aah-color-primary);--aah-pagination-font-size-small: 12px;--aah-pagination-button-width-small: 24px;--aah-pagination-button-height-small: 24px;--aah-pagination-item-gap: 16px;white-space:nowrap;color:var(--aah-pagination-text-color);font-size:var(--aah-pagination-font-size);font-weight:400;display:flex;align-items:center}.aah-pagination .aah-input__inner{text-align:center;-moz-appearance:textfield}.aah-pagination .aah-select{width:128px}.aah-pagination button{display:flex;justify-content:center;align-items:center;font-size:var(--aah-pagination-font-size);min-width:var(--aah-pagination-button-width);height:var(--aah-pagination-button-height);line-height:var(--aah-pagination-button-height);color:var(--aah-pagination-button-color);background:var(--aah-pagination-bg-color);padding:0 4px;border:none;border-radius:var(--aah-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box}.aah-pagination button *{pointer-events:none}.aah-pagination button:focus{outline:none}.aah-pagination button:hover{color:var(--aah-pagination-hover-color)}.aah-pagination button.is-active{color:var(--aah-pagination-hover-color);cursor:default;font-weight:700}.aah-pagination button.is-active.is-disabled{font-weight:700;color:var(--aah-text-color-secondary)}.aah-pagination button:disabled,.aah-pagination button.is-disabled{color:var(--aah-pagination-button-disabled-color);background-color:var(--aah-pagination-button-disabled-bg-color);cursor:not-allowed}.aah-pagination button:focus-visible{outline:1px solid var(--aah-pagination-hover-color);outline-offset:-1px}.aah-pagination .btn-prev .aah-icon,.aah-pagination .btn-next .aah-icon{display:block;font-size:12px;font-weight:700;width:inherit}.aah-pagination>*.is-first{margin-left:0!important}.aah-pagination>*.is-last{margin-right:0!important}.aah-pagination .btn-prev{margin-left:var(--aah-pagination-item-gap)}.aah-pagination__sizes,.aah-pagination__total{margin-left:var(--aah-pagination-item-gap);font-weight:400;color:var(--aah-text-color-regular)}.aah-pagination__total[disabled=true]{color:var(--aah-text-color-placeholder)}.aah-pagination__jump{display:flex;align-items:center;margin-left:var(--aah-pagination-item-gap);font-weight:400;color:var(--aah-text-color-regular)}.aah-pagination__jump[disabled=true]{color:var(--aah-text-color-placeholder)}.aah-pagination__goto{margin-right:8px}.aah-pagination__editor{text-align:center;box-sizing:border-box}.aah-pagination__editor.aah-input{width:56px}.aah-pagination__editor .aah-input__inner::-webkit-inner-spin-button,.aah-pagination__editor .aah-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.aah-pagination__classifier{margin-left:8px}.aah-pagination__rightwrapper{flex:1;display:flex;align-items:center;justify-content:flex-end}.aah-pagination.is-background .btn-prev,.aah-pagination.is-background .btn-next,.aah-pagination.is-background .aah-pager li{margin:0 4px;background-color:var(--aah-pagination-button-bg-color)}.aah-pagination.is-background .btn-prev.is-active,.aah-pagination.is-background .btn-next.is-active,.aah-pagination.is-background .aah-pager li.is-active{background-color:var(--aah-color-primary);color:var(--aah-color-white)}.aah-pagination.is-background .btn-prev:disabled,.aah-pagination.is-background .btn-prev.is-disabled,.aah-pagination.is-background .btn-next:disabled,.aah-pagination.is-background .btn-next.is-disabled,.aah-pagination.is-background .aah-pager li:disabled,.aah-pagination.is-background .aah-pager li.is-disabled{color:var(--aah-text-color-placeholder);background-color:var(--aah-disabled-bg-color)}.aah-pagination.is-background .btn-prev:disabled.is-active,.aah-pagination.is-background .btn-prev.is-disabled.is-active,.aah-pagination.is-background .btn-next:disabled.is-active,.aah-pagination.is-background .btn-next.is-disabled.is-active,.aah-pagination.is-background .aah-pager li:disabled.is-active,.aah-pagination.is-background .aah-pager li.is-disabled.is-active{color:var(--aah-text-color-secondary);background-color:var(--aah-fill-color-dark)}.aah-pagination.is-background .btn-prev{margin-left:var(--aah-pagination-item-gap)}.aah-pagination--small .btn-prev,.aah-pagination--small .btn-next,.aah-pagination--small .aah-pager li{height:var(--aah-pagination-button-height-small);line-height:var(--aah-pagination-button-height-small);font-size:var(--aah-pagination-font-size-small);min-width:var(--aah-pagination-button-width-small)}.aah-pagination--small span:not([class*=suffix]),.aah-pagination--small button{font-size:var(--aah-pagination-font-size-small)}.aah-pagination--small .aah-select{width:100px}.aah-pager{-webkit-user-select:none;user-select:none;list-style:none;font-size:0;padding:0;margin:0;display:flex;align-items:center}.aah-pager li{display:flex;justify-content:center;align-items:center;font-size:var(--aah-pagination-font-size);min-width:var(--aah-pagination-button-width);height:var(--aah-pagination-button-height);line-height:var(--aah-pagination-button-height);color:var(--aah-pagination-button-color);background:var(--aah-pagination-bg-color);padding:0 4px;border:none;border-radius:var(--aah-pagination-border-radius);cursor:pointer;text-align:center;box-sizing:border-box}.aah-pager li *{pointer-events:none}.aah-pager li:focus{outline:none}.aah-pager li:hover{color:var(--aah-pagination-hover-color)}.aah-pager li.is-active{color:var(--aah-pagination-hover-color);cursor:default;font-weight:700}.aah-pager li.is-active.is-disabled{font-weight:700;color:var(--aah-text-color-secondary)}.aah-pager li:disabled,.aah-pager li.is-disabled{color:var(--aah-pagination-button-disabled-color);background-color:var(--aah-pagination-button-disabled-bg-color);cursor:not-allowed}.aah-pager li:focus-visible{outline:1px solid var(--aah-pagination-hover-color);outline-offset:-1px}.aah-popconfirm__main{display:flex;align-items:center}.aah-popconfirm__icon{margin-right:5px}.aah-popconfirm__action{text-align:right;margin-top:8px}.aah-popover{--aah-popover-bg-color: var(--aah-bg-color-overlay);--aah-popover-font-size: var(--aah-font-size-base);--aah-popover-border-color: var(--aah-border-color-lighter);--aah-popover-padding: 12px;--aah-popover-padding-large: 18px 20px;--aah-popover-title-font-size: 16px;--aah-popover-title-text-color: var(--aah-text-color-primary);--aah-popover-border-radius: 4px}.aah-popover.aah-popper{background:var(--aah-popover-bg-color);min-width:150px;border-radius:var(--aah-popover-border-radius);border:1px solid var(--aah-popover-border-color);padding:var(--aah-popover-padding);z-index:var(--aah-index-popper);color:var(--aah-text-color-regular);line-height:1.4;font-size:var(--aah-popover-font-size);box-shadow:var(--aah-box-shadow-light);overflow-wrap:break-word;box-sizing:border-box}.aah-popover.aah-popper--plain{padding:var(--aah-popover-padding-large)}.aah-popover__title{color:var(--aah-popover-title-text-color);font-size:var(--aah-popover-title-font-size);line-height:1;margin-bottom:12px}.aah-popover__reference:focus:not(.focusing),.aah-popover__reference:focus:hover{outline-width:0}.aah-popover.aah-popper.is-dark{--aah-popover-bg-color: var(--aah-text-color-primary);--aah-popover-border-color: var(--aah-text-color-primary);--aah-popover-title-text-color: var(--aah-bg-color);color:var(--aah-bg-color)}.aah-popover.aah-popper:focus:active,.aah-popover.aah-popper:focus{outline-width:0}.aah-progress{position:relative;line-height:1;display:flex;align-items:center}.aah-progress__text{font-size:14px;color:var(--aah-text-color-regular);margin-left:5px;min-width:50px;line-height:1}.aah-progress__text i{vertical-align:middle;display:block}.aah-progress--circle,.aah-progress--dashboard{display:inline-block}.aah-progress--circle .aah-progress__text,.aah-progress--dashboard .aah-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translateY(-50%)}.aah-progress--circle .aah-progress__text i,.aah-progress--dashboard .aah-progress__text i{vertical-align:middle;display:inline-block}.aah-progress--without-text .aah-progress__text{display:none}.aah-progress--without-text .aah-progress-bar{padding-right:0;margin-right:0;display:block}.aah-progress--text-inside .aah-progress-bar{padding-right:0;margin-right:0}.aah-progress.is-success .aah-progress-bar__inner{background-color:var(--aah-color-success)}.aah-progress.is-success .aah-progress__text{color:var(--aah-color-success)}.aah-progress.is-warning .aah-progress-bar__inner{background-color:var(--aah-color-warning)}.aah-progress.is-warning .aah-progress__text{color:var(--aah-color-warning)}.aah-progress.is-exception .aah-progress-bar__inner{background-color:var(--aah-color-danger)}.aah-progress.is-exception .aah-progress__text{color:var(--aah-color-danger)}.aah-progress-bar{flex-grow:1;box-sizing:border-box}.aah-progress-bar__outer{height:6px;border-radius:100px;background-color:var(--aah-border-color-lighter);overflow:hidden;position:relative;vertical-align:middle}.aah-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:var(--aah-color-primary);text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.aah-progress-bar__inner:after{display:inline-block;content:"";height:100%;vertical-align:middle}.aah-progress-bar__inner--indeterminate{transform:translateZ(0);animation:indeterminate 3s infinite}.aah-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 25%,transparent 50%,rgba(0,0,0,.1) 50%,rgba(0,0,0,.1) 75%,transparent 75%,transparent);background-size:1.25em 1.25em}.aah-progress-bar__inner--striped.aah-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.aah-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.aah-radio-button{--aah-radio-button-checked-bg-color: var(--aah-color-primary);--aah-radio-button-checked-text-color: var(--aah-color-white);--aah-radio-button-checked-border-color: var(--aah-color-primary);--aah-radio-button-disabled-checked-fill: var(--aah-border-color-extra-light)}.aah-radio-button{position:relative;display:inline-block;outline:none}.aah-radio-button__inner{display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;background:var(--aah-button-bg-color, var(--aah-fill-color-blank));border:var(--aah-border);font-weight:var(--aah-button-font-weight, var(--aah-font-weight-primary));border-left:0;color:var(--aah-button-text-color, var(--aah-text-color-regular));-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:none;margin:0;position:relative;cursor:pointer;transition:var(--aah-transition-all);-webkit-user-select:none;user-select:none;padding:8px 15px;font-size:var(--aah-font-size-base);border-radius:0}.aah-radio-button__inner.is-round{padding:8px 15px}.aah-radio-button__inner:hover{color:var(--aah-color-primary)}.aah-radio-button__inner [class*=aah-icon-]{line-height:.9}.aah-radio-button__inner [class*=aah-icon-]+span{margin-left:5px}.aah-radio-button:first-child .aah-radio-button__inner{border-left:var(--aah-border);border-radius:var(--aah-border-radius-base) 0 0 var(--aah-border-radius-base);box-shadow:none!important}.aah-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.aah-radio-button__original-radio:checked+.aah-radio-button__inner{color:var(--aah-radio-button-checked-text-color, var(--aah-color-white));background-color:var(--aah-radio-button-checked-bg-color, var(--aah-color-primary));border-color:var(--aah-radio-button-checked-border-color, var(--aah-color-primary));box-shadow:-1px 0 0 0 var(--aah-radio-button-checked-border-color, var(--aah-color-primary))}.aah-radio-button__original-radio:focus-visible+.aah-radio-button__inner{border-left:var(--aah-border);border-left-color:var(--aah-radio-button-checked-border-color, var(--aah-color-primary));outline:2px solid var(--aah-radio-button-checked-border-color);outline-offset:1px;z-index:2;border-radius:var(--aah-border-radius-base);box-shadow:none}.aah-radio-button__original-radio:disabled+.aah-radio-button__inner{color:var(--aah-disabled-text-color);cursor:not-allowed;background-image:none;background-color:var(--aah-button-disabled-bg-color, var(--aah-fill-color-blank));border-color:var(--aah-button-disabled-border-color, var(--aah-border-color-light));box-shadow:none}.aah-radio-button__original-radio:disabled:checked+.aah-radio-button__inner{background-color:var(--aah-radio-button-disabled-checked-fill)}.aah-radio-button:last-child .aah-radio-button__inner{border-radius:0 var(--aah-border-radius-base) var(--aah-border-radius-base) 0}.aah-radio-button:first-child:last-child .aah-radio-button__inner{border-radius:var(--aah-border-radius-base)}.aah-radio-button--large .aah-radio-button__inner{padding:12px 19px;font-size:var(--aah-font-size-base);border-radius:0}.aah-radio-button--large .aah-radio-button__inner.is-round{padding:12px 19px}.aah-radio-button--small .aah-radio-button__inner{padding:5px 11px;font-size:12px;border-radius:0}.aah-radio-button--small .aah-radio-button__inner.is-round{padding:5px 11px}.aah-radio-group{display:inline-flex;align-items:center;flex-wrap:wrap;font-size:0}.aah-radio{--aah-radio-font-size: var(--aah-font-size-base);--aah-radio-text-color: var(--aah-text-color-regular);--aah-radio-font-weight: var(--aah-font-weight-primary);--aah-radio-input-height: 14px;--aah-radio-input-width: 14px;--aah-radio-input-border-radius: var(--aah-border-radius-circle);--aah-radio-input-bg-color: var(--aah-fill-color-blank);--aah-radio-input-border: var(--aah-border);--aah-radio-input-border-color: var(--aah-border-color);--aah-radio-input-border-color-hover: var(--aah-color-primary)}.aah-radio{color:var(--aah-radio-text-color);font-weight:var(--aah-radio-font-weight);position:relative;cursor:pointer;display:inline-flex;align-items:center;white-space:nowrap;outline:none;font-size:var(--aah-font-size-base);-webkit-user-select:none;user-select:none;margin-right:32px;height:32px}.aah-radio.aah-radio--large{height:40px}.aah-radio.aah-radio--small{height:24px}.aah-radio.is-bordered{padding:0 15px 0 9px;border-radius:var(--aah-border-radius-base);border:var(--aah-border);box-sizing:border-box}.aah-radio.is-bordered.is-checked{border-color:var(--aah-color-primary)}.aah-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:var(--aah-border-color-lighter)}.aah-radio.is-bordered.aah-radio--large{padding:0 19px 0 11px;border-radius:var(--aah-border-radius-base)}.aah-radio.is-bordered.aah-radio--large .aah-radio__label{font-size:var(--aah-font-size-base)}.aah-radio.is-bordered.aah-radio--large .aah-radio__inner{height:14px;width:14px}.aah-radio.is-bordered.aah-radio--small{padding:0 11px 0 7px;border-radius:var(--aah-border-radius-base)}.aah-radio.is-bordered.aah-radio--small .aah-radio__label{font-size:12px}.aah-radio.is-bordered.aah-radio--small .aah-radio__inner{height:12px;width:12px}.aah-radio:last-child{margin-right:0}.aah-radio__input{white-space:nowrap;cursor:pointer;outline:none;display:inline-flex;position:relative;vertical-align:middle}.aah-radio__input.is-disabled .aah-radio__inner{background-color:var(--aah-disabled-bg-color);border-color:var(--aah-disabled-border-color);cursor:not-allowed}.aah-radio__input.is-disabled .aah-radio__inner:after{cursor:not-allowed;background-color:var(--aah-disabled-bg-color)}.aah-radio__input.is-disabled .aah-radio__inner+.aah-radio__label{cursor:not-allowed}.aah-radio__input.is-disabled.is-checked .aah-radio__inner{background-color:var(--aah-disabled-bg-color);border-color:var(--aah-disabled-border-color)}.aah-radio__input.is-disabled.is-checked .aah-radio__inner:after{background-color:var(--aah-text-color-placeholder)}.aah-radio__input.is-disabled+span.aah-radio__label{color:var(--aah-text-color-placeholder);cursor:not-allowed}.aah-radio__input.is-checked .aah-radio__inner{border-color:var(--aah-color-primary);background:var(--aah-color-primary)}.aah-radio__input.is-checked .aah-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.aah-radio__input.is-checked+.aah-radio__label{color:var(--aah-color-primary)}.aah-radio__input.is-focus .aah-radio__inner{border-color:var(--aah-radio-input-border-color-hover)}.aah-radio__inner{border:var(--aah-radio-input-border);border-radius:var(--aah-radio-input-border-radius);width:var(--aah-radio-input-width);height:var(--aah-radio-input-height);background-color:var(--aah-radio-input-bg-color);position:relative;cursor:pointer;display:inline-block;box-sizing:border-box}.aah-radio__inner:hover{border-color:var(--aah-radio-input-border-color-hover)}.aah-radio__inner:after{width:4px;height:4px;border-radius:var(--aah-radio-input-border-radius);background-color:var(--aah-color-white);content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.aah-radio__original{opacity:0;outline:none;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.aah-radio__original:focus-visible+.aah-radio__inner{outline:2px solid var(--aah-radio-input-border-color-hover);outline-offset:1px;border-radius:var(--aah-radio-input-border-radius)}.aah-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .aah-radio__inner{box-shadow:0 0 2px 2px var(--aah-radio-input-border-color-hover)}.aah-radio__label{font-size:var(--aah-radio-font-size);padding-left:8px}.aah-radio.aah-radio--large .aah-radio__label{font-size:14px}.aah-radio.aah-radio--large .aah-radio__inner{width:14px;height:14px}.aah-radio.aah-radio--small .aah-radio__label{font-size:12px}.aah-radio.aah-radio--small .aah-radio__inner{width:12px;height:12px}.aah-rate{--aah-rate-height: 20px;--aah-rate-font-size: var(--aah-font-size-base);--aah-rate-icon-size: 18px;--aah-rate-icon-margin: 6px;--aah-rate-void-color: var(--aah-border-color-darker);--aah-rate-fill-color: #f7ba2a;--aah-rate-disabled-void-color: var(--aah-fill-color);--aah-rate-text-color: var(--aah-text-color-primary)}.aah-rate{display:inline-flex;align-items:center;height:32px}.aah-rate:focus,.aah-rate:active{outline:none}.aah-rate__item{cursor:pointer;display:inline-block;position:relative;font-size:0;vertical-align:middle;color:var(--aah-rate-void-color);line-height:normal}.aah-rate .aah-rate__icon{position:relative;display:inline-block;font-size:var(--aah-rate-icon-size);margin-right:var(--aah-rate-icon-margin);transition:var(--aah-transition-duration)}.aah-rate .aah-rate__icon.hover{transform:scale(1.15)}.aah-rate .aah-rate__icon .path2{position:absolute;left:0;top:0}.aah-rate .aah-rate__icon.is-active{color:var(--aah-rate-fill-color)}.aah-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden;color:var(--aah-rate-fill-color)}.aah-rate__decimal--box{position:absolute;top:0;left:0}.aah-rate__text{font-size:var(--aah-rate-font-size);vertical-align:middle;color:var(--aah-rate-text-color)}.aah-rate--large{height:40px}.aah-rate--small{height:24px}.aah-rate--small .aah-rate__icon{font-size:14px}.aah-rate.is-disabled .aah-rate__item{cursor:auto;color:var(--aah-rate-disabled-void-color)}.aah-result{--aah-result-padding: 40px 30px;--aah-result-icon-font-size: 64px;--aah-result-title-font-size: 20px;--aah-result-title-margin-top: 20px;--aah-result-subtitle-margin-top: 10px;--aah-result-extra-margin-top: 30px}.aah-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--aah-result-padding)}.aah-result__icon svg{width:var(--aah-result-icon-font-size);height:var(--aah-result-icon-font-size)}.aah-result__title{margin-top:var(--aah-result-title-margin-top)}.aah-result__title p{margin:0;font-size:var(--aah-result-title-font-size);color:var(--aah-text-color-primary);line-height:1.3}.aah-result__subtitle{margin-top:var(--aah-result-subtitle-margin-top)}.aah-result__subtitle p{margin:0;font-size:var(--aah-font-size-base);color:var(--aah-text-color-regular);line-height:1.3}.aah-result__extra{margin-top:var(--aah-result-extra-margin-top)}.aah-result .icon-primary{--aah-result-color: var(--aah-color-primary);color:var(--aah-result-color)}.aah-result .icon-success{--aah-result-color: var(--aah-color-success);color:var(--aah-result-color)}.aah-result .icon-warning{--aah-result-color: var(--aah-color-warning);color:var(--aah-result-color)}.aah-result .icon-danger{--aah-result-color: var(--aah-color-danger);color:var(--aah-result-color)}.aah-result .icon-error{--aah-result-color: var(--aah-color-error);color:var(--aah-result-color)}.aah-result .icon-info{--aah-result-color: var(--aah-color-info);color:var(--aah-result-color)}.aah-row{display:flex;flex-wrap:wrap;position:relative;box-sizing:border-box}.aah-row.is-justify-center{justify-content:center}.aah-row.is-justify-end{justify-content:flex-end}.aah-row.is-justify-space-between{justify-content:space-between}.aah-row.is-justify-space-around{justify-content:space-around}.aah-row.is-justify-space-evenly{justify-content:space-evenly}.aah-row.is-align-top{align-items:flex-start}.aah-row.is-align-middle{align-items:center}.aah-row.is-align-bottom{align-items:flex-end}.aah-scrollbar{--aah-scrollbar-opacity: .3;--aah-scrollbar-bg-color: var(--aah-text-color-secondary);--aah-scrollbar-hover-opacity: .5;--aah-scrollbar-hover-bg-color: var(--aah-text-color-secondary)}.aah-scrollbar{overflow:hidden;position:relative;height:100%}.aah-scrollbar__wrap{overflow:auto;height:100%}.aah-scrollbar__wrap--hidden-default{scrollbar-width:none}.aah-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.aah-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:var(--aah-scrollbar-bg-color, var(--aah-text-color-secondary));transition:var(--aah-transition-duration) background-color;opacity:var(--aah-scrollbar-opacity, .3)}.aah-scrollbar__thumb:hover{background-color:var(--aah-scrollbar-hover-bg-color, var(--aah-text-color-secondary));opacity:var(--aah-scrollbar-hover-opacity, .5)}.aah-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px}.aah-scrollbar__bar.is-vertical{width:6px;top:2px}.aah-scrollbar__bar.is-vertical>div{width:100%}.aah-scrollbar__bar.is-horizontal{height:6px;left:2px}.aah-scrollbar__bar.is-horizontal>div{height:100%}.aah-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.aah-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.aah-scrollbar-fade-enter-from,.aah-scrollbar-fade-leave-active{opacity:0}.aah-select-dropdown{z-index:calc(var(--aah-index-top) + 1);border-radius:var(--aah-border-radius-base);box-sizing:border-box}.aah-select-dropdown .aah-scrollbar.is-empty .aah-select-dropdown__list{padding:0}.aah-select-dropdown__loading,.aah-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:var(--aah-text-color-secondary);font-size:var(--aah-select-font-size)}.aah-select-dropdown__wrap{max-height:274px}.aah-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.aah-select-dropdown__list.aah-vl__window{margin:6px 0;padding:0}.aah-select-dropdown__header{padding:10px;border-bottom:1px solid var(--aah-border-color-light)}.aah-select-dropdown__footer{padding:10px;border-top:1px solid var(--aah-border-color-light)}.aah-select-dropdown__item{font-size:var(--aah-font-size-base);padding:0 32px 0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--aah-text-color-regular);height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.aah-select-dropdown__item.is-hovering{background-color:var(--aah-fill-color-light)}.aah-select-dropdown__item.is-selected{color:var(--aah-color-primary);font-weight:700}.aah-select-dropdown__item.is-disabled{color:var(--aah-text-color-placeholder);cursor:not-allowed;background-color:unset}.aah-select-dropdown.is-multiple .aah-select-dropdown__item.is-selected:after{content:"";position:absolute;top:50%;right:20px;border-top:none;border-right:none;background-repeat:no-repeat;background-position:center;background-color:var(--aah-color-primary);mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;mask-size:100% 100%;-webkit-mask:url("data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E") no-repeat;-webkit-mask-size:100% 100%;transform:translateY(-50%);width:12px;height:12px}.aah-select-dropdown.is-multiple .aah-select-dropdown__item.is-disabled:after{background-color:var(--aah-text-color-placeholder)}.aah-select-group{margin:0;padding:0}.aah-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.aah-select-group__wrap:not(:last-of-type){padding-bottom:24px}.aah-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:var(--aah-border-color-light)}.aah-select-group__split-dash{position:absolute;left:20px;right:20px;height:1px;background:var(--aah-border-color-light)}.aah-select-group__title{padding-left:20px;font-size:12px;color:var(--aah-color-info);line-height:30px}.aah-select-group .aah-select-dropdown__item{padding-left:20px}.aah-select{--aah-select-border-color-hover: var(--aah-border-color-hover);--aah-select-disabled-color: var(--aah-disabled-text-color);--aah-select-disabled-border: var(--aah-disabled-border-color);--aah-select-font-size: var(--aah-font-size-base);--aah-select-close-hover-color: var(--aah-text-color-secondary);--aah-select-input-color: var(--aah-text-color-placeholder);--aah-select-multiple-input-color: var(--aah-text-color-regular);--aah-select-input-focus-border-color: var(--aah-color-primary);--aah-select-input-font-size: 14px;--aah-select-width: 100%}.aah-select{display:inline-block;position:relative;vertical-align:middle;width:var(--aah-select-width)}.aah-select__wrapper{display:flex;align-items:center;position:relative;box-sizing:border-box;cursor:pointer;text-align:left;font-size:14px;padding:4px 12px;gap:6px;min-height:32px;line-height:24px;border-radius:var(--aah-border-radius-base);background-color:var(--aah-fill-color-blank);transition:var(--aah-transition-duration);box-shadow:0 0 0 1px var(--aah-border-color) inset}.aah-select__wrapper:hover{box-shadow:0 0 0 1px var(--aah-text-color) inset}.aah-select__wrapper.is-filterable{cursor:text}.aah-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--aah-color-primary) inset}.aah-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--aah-border-color-hover) inset}.aah-select__wrapper.is-disabled{cursor:not-allowed;background-color:var(--aah-fill-color-light);color:var(--aah-text-color-placeholder);box-shadow:0 0 0 1px var(--aah-select-disabled-border) inset}.aah-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--aah-select-disabled-border) inset}.aah-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--aah-input-focus-border-color) inset}.aah-select__wrapper.is-disabled .aah-select__selected-item{color:var(--aah-select-disabled-color)}.aah-select__wrapper.is-disabled .aah-select__caret,.aah-select__wrapper.is-disabled .aah-tag{cursor:not-allowed}.aah-select__prefix,.aah-select__suffix{display:flex;align-items:center;flex-shrink:0;gap:6px;color:var(--aah-input-icon-color, var(--aah-text-color-placeholder))}.aah-select__caret{color:var(--aah-select-input-color);font-size:var(--aah-select-input-font-size);transition:var(--aah-transition-duration);transform:rotate(0);cursor:pointer}.aah-select__caret.is-reverse{transform:rotate(180deg)}.aah-select__selection{position:relative;display:flex;flex-wrap:wrap;align-items:center;flex:1;min-width:0;gap:6px}.aah-select__selection.is-near{margin-left:-8px}.aah-select__selection .aah-tag{cursor:pointer;border-color:transparent}.aah-select__selection .aah-tag .aah-tag__content{min-width:0}.aah-select__selected-item{display:flex;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.aah-select__tags-text{display:block;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aah-select__placeholder{position:absolute;display:block;top:50%;transform:translateY(-50%);width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--aah-input-text-color, var(--aah-text-color-regular))}.aah-select__placeholder.is-transparent{-webkit-user-select:none;user-select:none;color:var(--aah-text-color-placeholder)}.aah-select__popper.aah-popper{background:var(--aah-bg-color-overlay);border:1px solid var(--aah-border-color-light);box-shadow:var(--aah-box-shadow-light)}.aah-select__popper.aah-popper .aah-popper__arrow:before{border:1px solid var(--aah-border-color-light)}.aah-select__popper.aah-popper[data-popper-placement^=top] .aah-popper__arrow:before{border-top-color:transparent;border-left-color:transparent}.aah-select__popper.aah-popper[data-popper-placement^=bottom] .aah-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.aah-select__popper.aah-popper[data-popper-placement^=left] .aah-popper__arrow:before{border-left-color:transparent;border-bottom-color:transparent}.aah-select__popper.aah-popper[data-popper-placement^=right] .aah-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.aah-select__input-wrapper{max-width:100%}.aah-select__input-wrapper.is-hidden{position:absolute;opacity:0}.aah-select__input{border:none;outline:none;padding:0;color:var(--aah-select-multiple-input-color);font-size:inherit;font-family:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:24px;max-width:100%;background-color:transparent}.aah-select__input.is-disabled{cursor:not-allowed}.aah-select__input-calculator{position:absolute;left:0;top:0;max-width:100%;visibility:hidden;white-space:pre;overflow:hidden}.aah-select--large .aah-select__wrapper{gap:6px;padding:8px 16px;min-height:40px;line-height:24px;font-size:14px}.aah-select--large .aah-select__selection{gap:6px}.aah-select--large .aah-select__selection.is-near{margin-left:-8px}.aah-select--large .aah-select__prefix,.aah-select--large .aah-select__suffix{gap:6px}.aah-select--large .aah-select__input{height:24px}.aah-select--small .aah-select__wrapper{gap:4px;padding:2px 8px;min-height:24px;line-height:20px;font-size:12px}.aah-select--small .aah-select__selection{gap:4px}.aah-select--small .aah-select__selection.is-near{margin-left:-6px}.aah-select--small .aah-select__prefix,.aah-select--small .aah-select__suffix{gap:4px}.aah-select--small .aah-select__input{height:20px}.aah-skeleton{--aah-skeleton-circle-size: var(--aah-avatar-size)}.aah-skeleton__item{background:var(--aah-skeleton-color);display:inline-block;height:16px;border-radius:var(--aah-border-radius-base);width:100%}.aah-skeleton__circle{border-radius:50%;width:var(--aah-skeleton-circle-size);height:var(--aah-skeleton-circle-size);line-height:var(--aah-skeleton-circle-size)}.aah-skeleton__button{height:40px;width:64px;border-radius:4px}.aah-skeleton__p{width:100%}.aah-skeleton__p.is-last{width:61%}.aah-skeleton__p.is-first{width:33%}.aah-skeleton__text{width:100%;height:var(--aah-font-size-small)}.aah-skeleton__caption{height:var(--aah-font-size-extra-small)}.aah-skeleton__h1{height:var(--aah-font-size-extra-large)}.aah-skeleton__h3{height:var(--aah-font-size-large)}.aah-skeleton__h5{height:var(--aah-font-size-medium)}.aah-skeleton__image{width:unset;display:flex;align-items:center;justify-content:center;border-radius:0}.aah-skeleton__image svg{color:var(--aah-svg-monochrome-grey);fill:currentColor;width:22%;height:22%}.aah-skeleton{--aah-skeleton-color: var(--aah-fill-color);--aah-skeleton-to-color: var(--aah-fill-color-darker)}@keyframes aah-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.aah-skeleton{width:100%}.aah-skeleton__first-line,.aah-skeleton__paragraph{height:16px;margin-top:16px;background:var(--aah-skeleton-color)}.aah-skeleton.is-animated .aah-skeleton__item{background:linear-gradient(90deg,var(--aah-skeleton-color) 25%,var(--aah-skeleton-to-color) 37%,var(--aah-skeleton-color) 63%);background-size:400% 100%;animation:aah-skeleton-loading 1.4s ease infinite}.aah-slider{--aah-slider-main-bg-color: var(--aah-color-primary);--aah-slider-runway-bg-color: var(--aah-border-color-light);--aah-slider-stop-bg-color: var(--aah-color-white);--aah-slider-disabled-color: var(--aah-text-color-placeholder);--aah-slider-border-radius: 3px;--aah-slider-height: 6px;--aah-slider-button-size: 20px;--aah-slider-button-wrapper-size: 36px;--aah-slider-button-wrapper-offset: -15px}.aah-slider{width:100%;height:32px;display:flex;align-items:center}.aah-slider__runway{flex:1;height:var(--aah-slider-height);background-color:var(--aah-slider-runway-bg-color);border-radius:var(--aah-slider-border-radius);position:relative;cursor:pointer}.aah-slider__runway.show-input{margin-right:30px;width:auto}.aah-slider__runway.is-disabled{cursor:default}.aah-slider__runway.is-disabled .aah-slider__bar{background-color:var(--aah-slider-disabled-color)}.aah-slider__runway.is-disabled .aah-slider__button{border-color:var(--aah-slider-disabled-color)}.aah-slider__runway.is-disabled .aah-slider__button-wrapper:hover,.aah-slider__runway.is-disabled .aah-slider__button-wrapper.hover,.aah-slider__runway.is-disabled .aah-slider__button-wrapper.dragging{cursor:not-allowed}.aah-slider__runway.is-disabled .aah-slider__button:hover,.aah-slider__runway.is-disabled .aah-slider__button.hover,.aah-slider__runway.is-disabled .aah-slider__button.dragging{transform:scale(1)}.aah-slider__runway.is-disabled .aah-slider__button:hover,.aah-slider__runway.is-disabled .aah-slider__button.hover,.aah-slider__runway.is-disabled .aah-slider__button.dragging{cursor:not-allowed}.aah-slider__input{flex-shrink:0;width:130px}.aah-slider__bar{height:var(--aah-slider-height);background-color:var(--aah-slider-main-bg-color);border-top-left-radius:var(--aah-slider-border-radius);border-bottom-left-radius:var(--aah-slider-border-radius);position:absolute}.aah-slider__button-wrapper{height:var(--aah-slider-button-wrapper-size);width:var(--aah-slider-button-wrapper-size);position:absolute;z-index:1;top:var(--aah-slider-button-wrapper-offset);transform:translate(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;user-select:none;line-height:normal;outline:none}.aah-slider__button-wrapper:after{display:inline-block;content:"";height:100%;vertical-align:middle}.aah-slider__button-wrapper:hover,.aah-slider__button-wrapper.hover{cursor:grab}.aah-slider__button-wrapper.dragging{cursor:grabbing}.aah-slider__button{display:inline-block;width:var(--aah-slider-button-size);height:var(--aah-slider-button-size);vertical-align:middle;border:solid 2px var(--aah-slider-main-bg-color);background-color:var(--aah-color-white);border-radius:50%;box-sizing:border-box;transition:var(--aah-transition-duration-fast);-webkit-user-select:none;user-select:none}.aah-slider__button:hover,.aah-slider__button.hover,.aah-slider__button.dragging{transform:scale(1.2)}.aah-slider__button:hover,.aah-slider__button.hover{cursor:grab}.aah-slider__button.dragging{cursor:grabbing}.aah-slider__stop{position:absolute;height:var(--aah-slider-height);width:var(--aah-slider-height);border-radius:var(--aah-border-radius-circle);background-color:var(--aah-slider-stop-bg-color);transform:translate(-50%)}.aah-slider__marks{top:0;left:12px;width:18px;height:100%}.aah-slider__marks-text{position:absolute;transform:translate(-50%);font-size:14px;color:var(--aah-color-info);margin-top:15px;white-space:pre}.aah-slider.is-vertical{position:relative;display:inline-flex;width:auto;height:100%;flex:0}.aah-slider.is-vertical .aah-slider__runway{width:var(--aah-slider-height);height:100%;margin:0 16px}.aah-slider.is-vertical .aah-slider__bar{width:var(--aah-slider-height);height:auto;border-radius:0 0 3px 3px}.aah-slider.is-vertical .aah-slider__button-wrapper{top:auto;left:var(--aah-slider-button-wrapper-offset);transform:translateY(50%)}.aah-slider.is-vertical .aah-slider__stop{transform:translateY(50%)}.aah-slider.is-vertical .aah-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.aah-slider--large{height:40px}.aah-slider--small{height:24px}.aah-space{display:inline-flex;vertical-align:top}.aah-space__item{display:flex;flex-wrap:wrap}.aah-space__item>*{flex:1}.aah-space--vertical{flex-direction:column}.aah-time-spinner{width:100%;white-space:nowrap}.aah-spinner{display:inline-block;vertical-align:middle}.aah-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.aah-spinner-inner .path{stroke:var(--aah-border-color-lighter);stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.aah-step{position:relative;flex-shrink:1}.aah-step:last-of-type .aah-step__line{display:none}.aah-step:last-of-type.is-flex{flex-basis:auto!important;flex-shrink:0;flex-grow:0}.aah-step:last-of-type .aah-step__main,.aah-step:last-of-type .aah-step__description{padding-right:0}.aah-step__head{position:relative;width:100%}.aah-step__head.is-process{color:var(--aah-text-color-primary);border-color:var(--aah-text-color-primary)}.aah-step__head.is-wait{color:var(--aah-text-color-placeholder);border-color:var(--aah-text-color-placeholder)}.aah-step__head.is-success{color:var(--aah-color-success);border-color:var(--aah-color-success)}.aah-step__head.is-error{color:var(--aah-color-danger);border-color:var(--aah-color-danger)}.aah-step__head.is-finish{color:var(--aah-color-primary);border-color:var(--aah-color-primary)}.aah-step__icon{position:relative;z-index:1;display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:var(--aah-bg-color);transition:.15s ease-out}.aah-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.aah-step__icon.is-icon{width:40px}.aah-step__icon-inner{display:inline-block;-webkit-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.aah-step__icon-inner[class*=aah-icon]:not(.is-status){font-size:25px;font-weight:400}.aah-step__icon-inner.is-status{transform:translateY(1px)}.aah-step__line{position:absolute;border-color:inherit;background-color:var(--aah-text-color-placeholder)}.aah-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.aah-step__main{white-space:normal;text-align:left}.aah-step__title{font-size:16px;line-height:38px}.aah-step__title.is-process{font-weight:700;color:var(--aah-text-color-primary)}.aah-step__title.is-wait{color:var(--aah-text-color-placeholder)}.aah-step__title.is-success{color:var(--aah-color-success)}.aah-step__title.is-error{color:var(--aah-color-danger)}.aah-step__title.is-finish{color:var(--aah-color-primary)}.aah-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.aah-step__description.is-process{color:var(--aah-text-color-primary)}.aah-step__description.is-wait{color:var(--aah-text-color-placeholder)}.aah-step__description.is-success{color:var(--aah-color-success)}.aah-step__description.is-error{color:var(--aah-color-danger)}.aah-step__description.is-finish{color:var(--aah-color-primary)}.aah-step.is-horizontal{display:inline-block}.aah-step.is-horizontal .aah-step__line{height:2px;top:11px;left:0;right:0}.aah-step.is-vertical{display:flex}.aah-step.is-vertical .aah-step__head{flex-grow:0;width:24px}.aah-step.is-vertical .aah-step__main{padding-left:10px;flex-grow:1}.aah-step.is-vertical .aah-step__title{line-height:24px;padding-bottom:8px}.aah-step.is-vertical .aah-step__line{width:2px;top:0;bottom:0;left:11px}.aah-step.is-vertical .aah-step__icon.is-icon{width:24px}.aah-step.is-center .aah-step__head,.aah-step.is-center .aah-step__main{text-align:center}.aah-step.is-center .aah-step__description{padding-left:20%;padding-right:20%}.aah-step.is-center .aah-step__line{left:50%;right:-50%}.aah-step.is-simple{display:flex;align-items:center}.aah-step.is-simple .aah-step__head{width:auto;font-size:0;padding-right:10px}.aah-step.is-simple .aah-step__icon{background:transparent;width:16px;height:16px;font-size:12px}.aah-step.is-simple .aah-step__icon-inner[class*=aah-icon]:not(.is-status){font-size:18px}.aah-step.is-simple .aah-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.aah-step.is-simple .aah-step__main{position:relative;display:flex;align-items:stretch;flex-grow:1}.aah-step.is-simple .aah-step__title{font-size:16px;line-height:20px}.aah-step.is-simple:not(:last-of-type) .aah-step__title{max-width:50%;overflow-wrap:break-word}.aah-step.is-simple .aah-step__arrow{flex-grow:1;display:flex;align-items:center;justify-content:center}.aah-step.is-simple .aah-step__arrow:before,.aah-step.is-simple .aah-step__arrow:after{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:var(--aah-text-color-placeholder)}.aah-step.is-simple .aah-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.aah-step.is-simple .aah-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.aah-step.is-simple:last-of-type .aah-step__arrow{display:none}.aah-steps{display:flex}.aah-steps--simple{padding:13px 8%;border-radius:4px;background:var(--aah-fill-color-light)}.aah-steps--horizontal{white-space:nowrap}.aah-steps--vertical{height:100%;flex-flow:column}.aah-switch{--aah-switch-on-color: var(--aah-color-primary);--aah-switch-off-color: var(--aah-border-color)}.aah-switch{display:inline-flex;align-items:center;position:relative;font-size:14px;line-height:20px;height:32px;vertical-align:middle}.aah-switch.is-disabled .aah-switch__core,.aah-switch.is-disabled .aah-switch__label{cursor:not-allowed}.aah-switch__label{transition:var(--aah-transition-duration-fast);height:20px;display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:var(--aah-text-color-primary)}.aah-switch__label.is-active{color:var(--aah-color-primary)}.aah-switch__label--left{margin-right:10px}.aah-switch__label--right{margin-left:10px}.aah-switch__label *{line-height:1;font-size:14px;display:inline-block}.aah-switch__label .aah-icon{height:inherit}.aah-switch__label .aah-icon svg{vertical-align:middle}.aah-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.aah-switch__input:focus-visible~.aah-switch__core{outline:2px solid var(--aah-switch-on-color);outline-offset:1px}.aah-switch__core{display:inline-flex;position:relative;align-items:center;min-width:40px;height:20px;border:1px solid var(--aah-switch-border-color, var(--aah-switch-off-color));outline:none;border-radius:10px;box-sizing:border-box;background:var(--aah-switch-off-color);cursor:pointer;transition:border-color var(--aah-transition-duration),background-color var(--aah-transition-duration)}.aah-switch__core .aah-switch__inner{width:100%;transition:all var(--aah-transition-duration);height:16px;display:flex;justify-content:center;align-items:center;overflow:hidden;padding:0 4px 0 18px}.aah-switch__core .aah-switch__inner .is-icon,.aah-switch__core .aah-switch__inner .is-text{font-size:12px;color:var(--aah-color-white);-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aah-switch__core .aah-switch__action{position:absolute;left:1px;border-radius:var(--aah-border-radius-circle);transition:all var(--aah-transition-duration);width:16px;height:16px;background-color:var(--aah-color-white);display:flex;justify-content:center;align-items:center;color:var(--aah-switch-off-color)}.aah-switch.is-checked .aah-switch__core{border-color:var(--aah-switch-border-color, var(--aah-switch-on-color));background-color:var(--aah-switch-on-color)}.aah-switch.is-checked .aah-switch__core .aah-switch__action{left:calc(100% - 17px);color:var(--aah-switch-on-color)}.aah-switch.is-checked .aah-switch__core .aah-switch__inner{padding:0 18px 0 4px}.aah-switch.is-disabled{opacity:.6}.aah-switch--wide .aah-switch__label.aah-switch__label--left span{left:10px}.aah-switch--wide .aah-switch__label.aah-switch__label--right span{right:10px}.aah-switch .label-fade-enter-from,.aah-switch .label-fade-leave-active{opacity:0}.aah-switch--large{font-size:14px;line-height:24px;height:40px}.aah-switch--large .aah-switch__label{height:24px;font-size:14px}.aah-switch--large .aah-switch__label *{font-size:14px}.aah-switch--large .aah-switch__core{min-width:50px;height:24px;border-radius:12px}.aah-switch--large .aah-switch__core .aah-switch__inner{height:20px;padding:0 6px 0 22px}.aah-switch--large .aah-switch__core .aah-switch__action{width:20px;height:20px}.aah-switch--large.is-checked .aah-switch__core .aah-switch__action{left:calc(100% - 21px)}.aah-switch--large.is-checked .aah-switch__core .aah-switch__inner{padding:0 22px 0 6px}.aah-switch--small{font-size:12px;line-height:16px;height:24px}.aah-switch--small .aah-switch__label{height:16px;font-size:12px}.aah-switch--small .aah-switch__label *{font-size:12px}.aah-switch--small .aah-switch__core{min-width:30px;height:16px;border-radius:8px}.aah-switch--small .aah-switch__core .aah-switch__inner{height:12px;padding:0 2px 0 14px}.aah-switch--small .aah-switch__core .aah-switch__action{width:12px;height:12px}.aah-switch--small.is-checked .aah-switch__core .aah-switch__action{left:calc(100% - 13px)}.aah-switch--small.is-checked .aah-switch__core .aah-switch__inner{padding:0 14px 0 2px}.aah-table-column--selection .cell{padding-left:14px;padding-right:14px}.aah-table-filter{border:solid 1px var(--aah-border-color-lighter);border-radius:2px;background-color:#fff;box-shadow:var(--aah-box-shadow-light);box-sizing:border-box}.aah-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.aah-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:var(--aah-font-size-base)}.aah-table-filter__list-item:hover{background-color:var(--aah-color-primary-light-9);color:var(--aah-color-primary)}.aah-table-filter__list-item.is-active{background-color:var(--aah-color-primary);color:#fff}.aah-table-filter__content{min-width:100px}.aah-table-filter__bottom{border-top:1px solid var(--aah-border-color-lighter);padding:8px}.aah-table-filter__bottom button{background:transparent;border:none;color:var(--aah-text-color-regular);cursor:pointer;font-size:var(--aah-font-size-small);padding:0 3px}.aah-table-filter__bottom button:hover{color:var(--aah-color-primary)}.aah-table-filter__bottom button:focus{outline:none}.aah-table-filter__bottom button.is-disabled{color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-table-filter__wrap{max-height:280px}.aah-table-filter__checkbox-group{padding:10px}.aah-table-filter__checkbox-group label.aah-checkbox{display:flex;align-items:center;margin-right:5px;margin-bottom:12px;margin-left:5px;height:unset}.aah-table-filter__checkbox-group .aah-checkbox:last-child{margin-bottom:0}.aah-table{--aah-table-border-color: var(--aah-border-color-lighter);--aah-table-border: 1px solid var(--aah-table-border-color);--aah-table-text-color: var(--aah-text-color-regular);--aah-table-header-text-color: var(--aah-text-color-secondary);--aah-table-row-hover-bg-color: var(--aah-fill-color-light);--aah-table-current-row-bg-color: var(--aah-color-primary-light-9);--aah-table-header-bg-color: var(--aah-bg-color);--aah-table-fixed-box-shadow: var(--aah-box-shadow-light);--aah-table-bg-color: var(--aah-fill-color-blank);--aah-table-tr-bg-color: var(--aah-bg-color);--aah-table-expanded-cell-bg-color: var(--aah-fill-color-blank);--aah-table-fixed-left-column: inset 10px 0 10px -10px rgba(0, 0, 0, .15);--aah-table-fixed-right-column: inset -10px 0 10px -10px rgba(0, 0, 0, .15);--aah-table-index: var(--aah-index-normal)}.aah-table{position:relative;overflow:hidden;box-sizing:border-box;height:fit-content;width:100%;max-width:100%;background-color:var(--aah-table-bg-color);font-size:14px;color:var(--aah-table-text-color)}.aah-table__inner-wrapper{position:relative;display:flex;flex-direction:column;height:100%}.aah-table__inner-wrapper:before{left:0;bottom:0;width:100%;height:1px}.aah-table tbody:focus-visible{outline:none}.aah-table.has-footer.aah-table--scrollable-y tr:last-child td.aah-table__cell,.aah-table.has-footer.aah-table--fluid-height tr:last-child td.aah-table__cell{border-bottom-color:transparent}.aah-table__empty-block{position:sticky;left:0;min-height:60px;text-align:center;width:100%;display:flex;justify-content:center;align-items:center}.aah-table__empty-text{line-height:60px;width:50%;color:var(--aah-text-color-secondary)}.aah-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;user-select:none}.aah-table__expand-icon{position:relative;cursor:pointer;color:var(--aah-text-color-regular);font-size:12px;transition:transform var(--aah-transition-duration-fast) ease-in-out;height:20px}.aah-table__expand-icon--expanded{transform:rotate(90deg)}.aah-table__expand-icon>.aah-icon{font-size:12px}.aah-table__expanded-cell{background-color:var(--aah-table-expanded-cell-bg-color)}.aah-table__expanded-cell[class*=cell]{padding:20px 50px}.aah-table__expanded-cell:hover{background-color:transparent!important}.aah-table__placeholder{display:inline-block;width:20px}.aah-table__append-wrapper{overflow:hidden}.aah-table--fit{border-right:0;border-bottom:0}.aah-table--fit .aah-table__cell.gutter{border-right-width:1px}.aah-table thead{color:var(--aah-table-header-text-color)}.aah-table thead th{font-weight:600}.aah-table thead.is-group th.aah-table__cell{background:var(--aah-fill-color-light)}.aah-table .aah-table__cell{padding:8px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left;z-index:var(--aah-table-index)}.aah-table .aah-table__cell.is-center{text-align:center}.aah-table .aah-table__cell.is-right{text-align:right}.aah-table .aah-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.aah-table .aah-table__cell.is-hidden>*{visibility:hidden}.aah-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;overflow-wrap:break-word;line-height:23px;padding:0 12px}.aah-table .cell.aah-tooltip{white-space:nowrap;min-width:50px}.aah-table--large{font-size:var(--aah-font-size-base)}.aah-table--large .aah-table__cell{padding:12px 0}.aah-table--large .cell{padding:0 16px}.aah-table--default{font-size:14px}.aah-table--default .aah-table__cell{padding:8px 0}.aah-table--default .cell{padding:0 12px}.aah-table--small{font-size:12px}.aah-table--small .aah-table__cell{padding:4px 0}.aah-table--small .cell{padding:0 8px}.aah-table tr{background-color:var(--aah-table-tr-bg-color)}.aah-table tr input[type=checkbox]{margin:0}.aah-table th.aah-table__cell.is-leaf,.aah-table td.aah-table__cell{border-bottom:var(--aah-table-border)}.aah-table th.aah-table__cell.is-sortable{cursor:pointer}.aah-table th.aah-table__cell{-webkit-user-select:none;user-select:none;background-color:var(--aah-table-header-bg-color)}.aah-table th.aah-table__cell>.cell.highlight{color:var(--aah-color-primary)}.aah-table th.aah-table__cell.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.aah-table td.aah-table__cell div{box-sizing:border-box}.aah-table td.aah-table__cell.gutter{width:0}.aah-table--border:after,.aah-table--border:before,.aah-table--border .aah-table__inner-wrapper:after,.aah-table__inner-wrapper:before{content:"";position:absolute;background-color:var(--aah-table-border-color);z-index:calc(var(--aah-table-index) + 2)}.aah-table--border .aah-table__inner-wrapper:after{left:0;top:0;width:100%;height:1px;z-index:calc(var(--aah-table-index) + 2)}.aah-table--border:before{top:-1px;left:0;width:1px;height:100%}.aah-table--border:after{top:-1px;right:0;width:1px;height:100%}.aah-table--border .aah-table__inner-wrapper{border-right:none;border-bottom:none}.aah-table--border .aah-table__footer-wrapper{position:relative;flex-shrink:0}.aah-table--border .aah-table__cell{border-right:var(--aah-table-border)}.aah-table--border th.aah-table__cell.gutter:last-of-type{border-bottom:var(--aah-table-border);border-bottom-width:1px}.aah-table--border th.aah-table__cell{border-bottom:var(--aah-table-border)}.aah-table--hidden{visibility:hidden}.aah-table__header-wrapper,.aah-table__body-wrapper,.aah-table__footer-wrapper{width:100%}.aah-table__header-wrapper tr td.aah-table-fixed-column--left,.aah-table__header-wrapper tr td.aah-table-fixed-column--right,.aah-table__header-wrapper tr th.aah-table-fixed-column--left,.aah-table__header-wrapper tr th.aah-table-fixed-column--right,.aah-table__body-wrapper tr td.aah-table-fixed-column--left,.aah-table__body-wrapper tr td.aah-table-fixed-column--right,.aah-table__body-wrapper tr th.aah-table-fixed-column--left,.aah-table__body-wrapper tr th.aah-table-fixed-column--right,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right{position:sticky!important;background:inherit;z-index:calc(var(--aah-table-index) + 1)}.aah-table__header-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--right.is-first-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--right.is-first-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right.is-first-column:before{content:"";position:absolute;top:0;width:10px;bottom:-1px;overflow-x:hidden;overflow-y:hidden;box-shadow:none;touch-action:none;pointer-events:none}.aah-table__header-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--right.is-first-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--right.is-first-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left.is-first-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right.is-first-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left.is-first-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right.is-first-column:before{left:-10px}.aah-table__header-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__header-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__header-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__body-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__body-wrapper tr th.aah-table-fixed-column--right.is-last-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--left.is-last-column:before,.aah-table__footer-wrapper tr td.aah-table-fixed-column--right.is-last-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--left.is-last-column:before,.aah-table__footer-wrapper tr th.aah-table-fixed-column--right.is-last-column:before{right:-10px;box-shadow:none}.aah-table__header-wrapper tr td.aah-table__fixed-right-patch,.aah-table__header-wrapper tr th.aah-table__fixed-right-patch,.aah-table__body-wrapper tr td.aah-table__fixed-right-patch,.aah-table__body-wrapper tr th.aah-table__fixed-right-patch,.aah-table__footer-wrapper tr td.aah-table__fixed-right-patch,.aah-table__footer-wrapper tr th.aah-table__fixed-right-patch{position:sticky!important;z-index:calc(var(--aah-table-index) + 1);background:#fff;right:0}.aah-table__header-wrapper{flex-shrink:0}.aah-table__header-wrapper tr th.aah-table-fixed-column--left,.aah-table__header-wrapper tr th.aah-table-fixed-column--right{background-color:var(--aah-table-header-bg-color)}.aah-table__header,.aah-table__body,.aah-table__footer{table-layout:fixed;border-collapse:separate}.aah-table__header-wrapper{overflow:hidden}.aah-table__header-wrapper tbody td.aah-table__cell{background-color:var(--aah-table-row-hover-bg-color);color:var(--aah-table-text-color)}.aah-table__footer-wrapper{overflow:hidden;flex-shrink:0}.aah-table__footer-wrapper tfoot td.aah-table__cell{background-color:var(--aah-table-row-hover-bg-color);color:var(--aah-table-text-color)}.aah-table__header-wrapper .aah-table-column--selection>.cell,.aah-table__body-wrapper .aah-table-column--selection>.cell{display:inline-flex;align-items:center;height:23px}.aah-table__header-wrapper .aah-table-column--selection .aah-checkbox,.aah-table__body-wrapper .aah-table-column--selection .aah-checkbox{height:unset}.aah-table.is-scrolling-left .aah-table-fixed-column--right.is-first-column:before{box-shadow:var(--aah-table-fixed-right-column)}.aah-table.is-scrolling-left.aah-table--border .aah-table-fixed-column--left.is-last-column.aah-table__cell{border-right:var(--aah-table-border)}.aah-table.is-scrolling-left th.aah-table-fixed-column--left{background-color:var(--aah-table-header-bg-color)}.aah-table.is-scrolling-right .aah-table-fixed-column--left.is-last-column:before{box-shadow:var(--aah-table-fixed-left-column)}.aah-table.is-scrolling-right .aah-table-fixed-column--left.is-last-column.aah-table__cell{border-right:none}.aah-table.is-scrolling-right th.aah-table-fixed-column--right{background-color:var(--aah-table-header-bg-color)}.aah-table.is-scrolling-middle .aah-table-fixed-column--left.is-last-column.aah-table__cell{border-right:none}.aah-table.is-scrolling-middle .aah-table-fixed-column--right.is-first-column:before{box-shadow:var(--aah-table-fixed-right-column)}.aah-table.is-scrolling-middle .aah-table-fixed-column--left.is-last-column:before{box-shadow:var(--aah-table-fixed-left-column)}.aah-table.is-scrolling-none .aah-table-fixed-column--left.is-first-column:before,.aah-table.is-scrolling-none .aah-table-fixed-column--left.is-last-column:before,.aah-table.is-scrolling-none .aah-table-fixed-column--right.is-first-column:before,.aah-table.is-scrolling-none .aah-table-fixed-column--right.is-last-column:before{box-shadow:none}.aah-table.is-scrolling-none th.aah-table-fixed-column--left,.aah-table.is-scrolling-none th.aah-table-fixed-column--right{background-color:var(--aah-table-header-bg-color)}.aah-table__body-wrapper{overflow:hidden;position:relative;flex:1}.aah-table__body-wrapper .aah-scrollbar__bar{z-index:calc(var(--aah-table-index) + 2)}.aah-table .caret-wrapper{display:inline-flex;flex-direction:column;align-items:center;height:14px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.aah-table .sort-caret{width:0;height:0;border:solid 5px transparent;position:absolute;left:7px}.aah-table .sort-caret.ascending{border-bottom-color:var(--aah-text-color-placeholder);top:-5px}.aah-table .sort-caret.descending{border-top-color:var(--aah-text-color-placeholder);bottom:-3px}.aah-table .ascending .sort-caret.ascending{border-bottom-color:var(--aah-color-primary)}.aah-table .descending .sort-caret.descending{border-top-color:var(--aah-color-primary)}.aah-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.aah-table--striped .aah-table__body tr.aah-table__row--striped td.aah-table__cell{background:var(--aah-fill-color-lighter)}.aah-table--striped .aah-table__body tr.aah-table__row--striped.current-row td.aah-table__cell{background-color:var(--aah-table-current-row-bg-color)}.aah-table__body tr.hover-row>td.aah-table__cell,.aah-table__body tr.hover-row.current-row>td.aah-table__cell,.aah-table__body tr.hover-row.aah-table__row--striped>td.aah-table__cell,.aah-table__body tr.hover-row.aah-table__row--striped.current-row>td.aah-table__cell{background-color:var(--aah-table-row-hover-bg-color)}.aah-table__body tr>td.hover-cell{background-color:var(--aah-table-row-hover-bg-color)}.aah-table__body tr.current-row>td.aah-table__cell{background-color:var(--aah-table-current-row-bg-color)}.aah-table.aah-table--scrollable-y .aah-table__body-header{position:sticky;top:0;z-index:calc(var(--aah-table-index) + 2)}.aah-table.aah-table--scrollable-y .aah-table__body-footer{position:sticky;bottom:0;z-index:calc(var(--aah-table-index) + 2)}.aah-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:var(--aah-table-border);z-index:calc(var(--aah-table-index) + 9)}.aah-table__column-filter-trigger{display:inline-block;cursor:pointer}.aah-table__column-filter-trigger i{color:var(--aah-color-info);font-size:14px;vertical-align:middle}.aah-table__border-left-patch{top:0;left:0;width:1px;height:100%;z-index:calc(var(--aah-table-index) + 2);position:absolute;background-color:var(--aah-table-border-color)}.aah-table__border-bottom-patch{left:0;height:1px;z-index:calc(var(--aah-table-index) + 2);position:absolute;background-color:var(--aah-table-border-color)}.aah-table__border-right-patch{top:0;height:100%;width:1px;z-index:calc(var(--aah-table-index) + 2);position:absolute;background-color:var(--aah-table-border-color)}.aah-table--enable-row-transition .aah-table__body td.aah-table__cell{transition:background-color .25s ease}.aah-table--enable-row-hover .aah-table__body tr:hover>td.aah-table__cell{background-color:var(--aah-table-row-hover-bg-color)}.aah-table [class*=aah-table__row--level] .aah-table__expand-icon{display:inline-block;width:12px;line-height:12px;height:12px;text-align:center;margin-right:8px}.aah-table .aah-table.aah-table--border .aah-table__cell{border-right:var(--aah-table-border)}.aah-table:not(.aah-table--border) .aah-table__cell{border-right:none}.aah-table:not(.aah-table--border)>.aah-table__inner-wrapper:after{content:none}.aah-table-v2{--aah-table-border-color: var(--aah-border-color-lighter);--aah-table-border: 1px solid var(--aah-table-border-color);--aah-table-text-color: var(--aah-text-color-regular);--aah-table-header-text-color: var(--aah-text-color-secondary);--aah-table-row-hover-bg-color: var(--aah-fill-color-light);--aah-table-current-row-bg-color: var(--aah-color-primary-light-9);--aah-table-header-bg-color: var(--aah-bg-color);--aah-table-fixed-box-shadow: var(--aah-box-shadow-light);--aah-table-bg-color: var(--aah-fill-color-blank);--aah-table-tr-bg-color: var(--aah-bg-color);--aah-table-expanded-cell-bg-color: var(--aah-fill-color-blank);--aah-table-fixed-left-column: inset 10px 0 10px -10px rgba(0, 0, 0, .15);--aah-table-fixed-right-column: inset -10px 0 10px -10px rgba(0, 0, 0, .15);--aah-table-index: var(--aah-index-normal)}.aah-table-v2{font-size:14px}.aah-table-v2 *{box-sizing:border-box}.aah-table-v2__root{position:relative}.aah-table-v2__root:hover .aah-table-v2__main .aah-virtual-scrollbar{opacity:1}.aah-table-v2__main{display:flex;flex-direction:column-reverse;position:absolute;overflow:hidden;top:0;background-color:var(--aah-bg-color);left:0}.aah-table-v2__main .aah-vl__horizontal,.aah-table-v2__main .aah-vl__vertical{z-index:2}.aah-table-v2__left{display:flex;flex-direction:column-reverse;position:absolute;overflow:hidden;top:0;background-color:var(--aah-bg-color);left:0;box-shadow:2px 0 4px #0000000f}.aah-table-v2__left .aah-virtual-scrollbar{opacity:0}.aah-table-v2__left .aah-vl__vertical,.aah-table-v2__left .aah-vl__horizontal{z-index:-1}.aah-table-v2__right{display:flex;flex-direction:column-reverse;position:absolute;overflow:hidden;top:0;background-color:var(--aah-bg-color);right:0;box-shadow:-2px 0 4px #0000000f}.aah-table-v2__right .aah-virtual-scrollbar{opacity:0}.aah-table-v2__right .aah-vl__vertical,.aah-table-v2__right .aah-vl__horizontal{z-index:-1}.aah-table-v2__header-row,.aah-table-v2__row{padding-inline-end:var(--aah-table-scrollbar-size)}.aah-table-v2__header-wrapper{overflow:hidden}.aah-table-v2__header{position:relative;overflow:hidden}.aah-table-v2__footer{position:absolute;left:0;right:0;bottom:0;overflow:hidden}.aah-table-v2__empty{position:absolute;left:0}.aah-table-v2__overlay{position:absolute;left:0;right:0;top:0;bottom:0;z-index:9999}.aah-table-v2__header-row{display:flex;border-bottom:var(--aah-table-border)}.aah-table-v2__header-cell{display:flex;align-items:center;padding:0 8px;height:100%;-webkit-user-select:none;user-select:none;overflow:hidden;background-color:var(--aah-table-header-bg-color);color:var(--aah-table-header-text-color);font-weight:700}.aah-table-v2__header-cell.is-align-center{justify-content:center;text-align:center}.aah-table-v2__header-cell.is-align-right{justify-content:flex-end;text-align:right}.aah-table-v2__header-cell.is-sortable{cursor:pointer}.aah-table-v2__header-cell:hover .aah-icon{display:block}.aah-table-v2__sort-icon{transition:opacity,display var(--aah-transition-duration);opacity:.6;display:none}.aah-table-v2__sort-icon.is-sorting{display:block;opacity:1}.aah-table-v2__row{border-bottom:var(--aah-table-border);display:flex;align-items:center;transition:background-color var(--aah-transition-duration)}.aah-table-v2__row.is-hovered,.aah-table-v2__row:hover{background-color:var(--aah-table-row-hover-bg-color)}.aah-table-v2__row-cell{height:100%;overflow:hidden;display:flex;align-items:center;padding:0 8px}.aah-table-v2__row-cell.is-align-center{justify-content:center;text-align:center}.aah-table-v2__row-cell.is-align-right{justify-content:flex-end;text-align:right}.aah-table-v2__expand-icon{margin:0 4px;cursor:pointer;-webkit-user-select:none;user-select:none}.aah-table-v2__expand-icon svg{transition:transform var(--aah-transition-duration)}.aah-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.aah-table-v2:not(.is-dynamic) .aah-table-v2__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aah-table-v2.is-dynamic .aah-table-v2__row{overflow:hidden;align-items:stretch}.aah-table-v2.is-dynamic .aah-table-v2__row .aah-table-v2__row-cell{overflow-wrap:break-word}.aah-tabs{--aah-tabs-header-height: 40px}.aah-tabs__header{padding:0;position:relative;margin:0 0 15px}.aah-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:var(--aah-color-primary);z-index:1;transition:width var(--aah-transition-duration) var(--aah-transition-function-ease-in-out-bezier),transform var(--aah-transition-duration) var(--aah-transition-function-ease-in-out-bezier);list-style:none}.aah-tabs__new-tab{display:flex;align-items:center;justify-content:center;float:right;border:1px solid var(--aah-border-color);height:20px;width:20px;line-height:20px;margin:10px 0 10px 10px;border-radius:3px;text-align:center;font-size:12px;color:var(--aah-text-color-primary);cursor:pointer;transition:all .15s}.aah-tabs__new-tab .is-icon-plus{height:inherit;width:inherit;transform:scale(.8)}.aah-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.aah-tabs__new-tab:hover{color:var(--aah-color-primary)}.aah-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.aah-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:var(--aah-border-color-light);z-index:var(--aah-index-normal)}.aah-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.aah-tabs__nav-scroll{overflow:hidden}.aah-tabs__nav-next,.aah-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:var(--aah-text-color-secondary);width:20px;text-align:center}.aah-tabs__nav-next{right:0}.aah-tabs__nav-prev{left:0}.aah-tabs__nav{display:flex;white-space:nowrap;position:relative;transition:transform var(--aah-transition-duration);float:left;z-index:calc(var(--aah-index-normal) + 1)}.aah-tabs__nav.is-stretch{min-width:100%;display:flex}.aah-tabs__nav.is-stretch>*{flex:1;text-align:center}.aah-tabs__item{padding:0 20px;height:var(--aah-tabs-header-height);box-sizing:border-box;display:flex;align-items:center;justify-content:center;list-style:none;font-size:var(--aah-font-size-base);font-weight:500;color:var(--aah-text-color-primary);position:relative}.aah-tabs__item:focus,.aah-tabs__item:focus:active{outline:none}.aah-tabs__item:focus-visible{box-shadow:0 0 2px 2px var(--aah-color-primary) inset;border-radius:3px}.aah-tabs__item .is-icon-close{border-radius:50%;text-align:center;transition:all var(--aah-transition-duration) var(--aah-transition-function-ease-in-out-bezier);margin-left:5px}.aah-tabs__item .is-icon-close:before{transform:scale(.9);display:inline-block}.aah-tabs__item .is-icon-close:hover{background-color:var(--aah-text-color-placeholder);color:#fff}.aah-tabs__item.is-active{color:var(--aah-color-primary)}.aah-tabs__item:hover{color:var(--aah-color-primary);cursor:pointer}.aah-tabs__item.is-disabled{color:var(--aah-disabled-text-color);cursor:not-allowed}.aah-tabs__content{overflow:hidden;position:relative}.aah-tabs--card>.aah-tabs__header{border-bottom:1px solid var(--aah-border-color-light);height:var(--aah-tabs-header-height)}.aah-tabs--card>.aah-tabs__header .aah-tabs__nav-wrap:after{content:none}.aah-tabs--card>.aah-tabs__header .aah-tabs__nav{border:1px solid var(--aah-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.aah-tabs--card>.aah-tabs__header .aah-tabs__active-bar{display:none}.aah-tabs--card>.aah-tabs__header .aah-tabs__item .is-icon-close{position:relative;font-size:12px;width:0;height:14px;overflow:hidden;right:-2px;transform-origin:100% 50%}.aah-tabs--card>.aah-tabs__header .aah-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--aah-border-color-light);transition:color var(--aah-transition-duration) var(--aah-transition-function-ease-in-out-bezier),padding var(--aah-transition-duration) var(--aah-transition-function-ease-in-out-bezier)}.aah-tabs--card>.aah-tabs__header .aah-tabs__item:first-child{border-left:none}.aah-tabs--card>.aah-tabs__header .aah-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.aah-tabs--card>.aah-tabs__header .aah-tabs__item.is-closable:hover .is-icon-close{width:14px}.aah-tabs--card>.aah-tabs__header .aah-tabs__item.is-active{border-bottom-color:var(--aah-bg-color)}.aah-tabs--card>.aah-tabs__header .aah-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.aah-tabs--card>.aah-tabs__header .aah-tabs__item.is-active.is-closable .is-icon-close{width:14px}.aah-tabs--border-card{background:var(--aah-bg-color-overlay);border:1px solid var(--aah-border-color)}.aah-tabs--border-card>.aah-tabs__content{padding:15px}.aah-tabs--border-card>.aah-tabs__header{background-color:var(--aah-fill-color-light);border-bottom:1px solid var(--aah-border-color-light);margin:0}.aah-tabs--border-card>.aah-tabs__header .aah-tabs__nav-wrap:after{content:none}.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item{transition:all var(--aah-transition-duration) var(--aah-transition-function-ease-in-out-bezier);border:1px solid transparent;margin-top:-1px;color:var(--aah-text-color-secondary)}.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:first-child{margin-left:-1px}.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item+.aah-tabs__item{margin-left:-1px}.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item.is-active{color:var(--aah-color-primary);background-color:var(--aah-bg-color-overlay);border-right-color:var(--aah-border-color);border-left-color:var(--aah-border-color)}.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:not(.is-disabled):hover{color:var(--aah-color-primary)}.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item.is-disabled{color:var(--aah-disabled-text-color)}.aah-tabs--border-card>.aah-tabs__header .is-scrollable .aah-tabs__item:first-child{margin-left:0}.aah-tabs--top .aah-tabs__item.is-top:nth-child(2),.aah-tabs--top .aah-tabs__item.is-bottom:nth-child(2),.aah-tabs--bottom .aah-tabs__item.is-top:nth-child(2),.aah-tabs--bottom .aah-tabs__item.is-bottom:nth-child(2){padding-left:0}.aah-tabs--top .aah-tabs__item.is-top:last-child,.aah-tabs--top .aah-tabs__item.is-bottom:last-child,.aah-tabs--bottom .aah-tabs__item.is-top:last-child,.aah-tabs--bottom .aah-tabs__item.is-bottom:last-child{padding-right:0}.aah-tabs--top.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:nth-child(2),.aah-tabs--top.aah-tabs--card>.aah-tabs__header .aah-tabs__item:nth-child(2),.aah-tabs--top .aah-tabs--left>.aah-tabs__header .aah-tabs__item:nth-child(2),.aah-tabs--top .aah-tabs--right>.aah-tabs__header .aah-tabs__item:nth-child(2),.aah-tabs--bottom.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:nth-child(2),.aah-tabs--bottom.aah-tabs--card>.aah-tabs__header .aah-tabs__item:nth-child(2),.aah-tabs--bottom .aah-tabs--left>.aah-tabs__header .aah-tabs__item:nth-child(2),.aah-tabs--bottom .aah-tabs--right>.aah-tabs__header .aah-tabs__item:nth-child(2){padding-left:20px}.aah-tabs--top.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.aah-tabs--top.aah-tabs--card>.aah-tabs__header .aah-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.aah-tabs--top .aah-tabs--left>.aah-tabs__header .aah-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.aah-tabs--top .aah-tabs--right>.aah-tabs__header .aah-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.aah-tabs--bottom.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.aah-tabs--bottom.aah-tabs--card>.aah-tabs__header .aah-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.aah-tabs--bottom .aah-tabs--left>.aah-tabs__header .aah-tabs__item:nth-child(2):not(.is-active).is-closable:hover,.aah-tabs--bottom .aah-tabs--right>.aah-tabs__header .aah-tabs__item:nth-child(2):not(.is-active).is-closable:hover{padding-left:13px}.aah-tabs--top.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:last-child,.aah-tabs--top.aah-tabs--card>.aah-tabs__header .aah-tabs__item:last-child,.aah-tabs--top .aah-tabs--left>.aah-tabs__header .aah-tabs__item:last-child,.aah-tabs--top .aah-tabs--right>.aah-tabs__header .aah-tabs__item:last-child,.aah-tabs--bottom.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:last-child,.aah-tabs--bottom.aah-tabs--card>.aah-tabs__header .aah-tabs__item:last-child,.aah-tabs--bottom .aah-tabs--left>.aah-tabs__header .aah-tabs__item:last-child,.aah-tabs--bottom .aah-tabs--right>.aah-tabs__header .aah-tabs__item:last-child{padding-right:20px}.aah-tabs--top.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:last-child:not(.is-active).is-closable:hover,.aah-tabs--top.aah-tabs--card>.aah-tabs__header .aah-tabs__item:last-child:not(.is-active).is-closable:hover,.aah-tabs--top .aah-tabs--left>.aah-tabs__header .aah-tabs__item:last-child:not(.is-active).is-closable:hover,.aah-tabs--top .aah-tabs--right>.aah-tabs__header .aah-tabs__item:last-child:not(.is-active).is-closable:hover,.aah-tabs--bottom.aah-tabs--border-card>.aah-tabs__header .aah-tabs__item:last-child:not(.is-active).is-closable:hover,.aah-tabs--bottom.aah-tabs--card>.aah-tabs__header .aah-tabs__item:last-child:not(.is-active).is-closable:hover,.aah-tabs--bottom .aah-tabs--left>.aah-tabs__header .aah-tabs__item:last-child:not(.is-active).is-closable:hover,.aah-tabs--bottom .aah-tabs--right>.aah-tabs__header .aah-tabs__item:last-child:not(.is-active).is-closable:hover{padding-right:13px}.aah-tabs--bottom .aah-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.aah-tabs--bottom.aah-tabs--border-card .aah-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--aah-border-color)}.aah-tabs--bottom.aah-tabs--border-card .aah-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.aah-tabs--bottom.aah-tabs--border-card .aah-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.aah-tabs--bottom.aah-tabs--border-card .aah-tabs__item.is-bottom{margin:0 -1px -1px}.aah-tabs--left,.aah-tabs--right{overflow:hidden}.aah-tabs--left .aah-tabs__header.is-left,.aah-tabs--left .aah-tabs__header.is-right,.aah-tabs--left .aah-tabs__nav-wrap.is-left,.aah-tabs--left .aah-tabs__nav-wrap.is-right,.aah-tabs--left .aah-tabs__nav-scroll,.aah-tabs--right .aah-tabs__header.is-left,.aah-tabs--right .aah-tabs__header.is-right,.aah-tabs--right .aah-tabs__nav-wrap.is-left,.aah-tabs--right .aah-tabs__nav-wrap.is-right,.aah-tabs--right .aah-tabs__nav-scroll{height:100%}.aah-tabs--left .aah-tabs__active-bar.is-left,.aah-tabs--left .aah-tabs__active-bar.is-right,.aah-tabs--right .aah-tabs__active-bar.is-left,.aah-tabs--right .aah-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.aah-tabs--left .aah-tabs__nav-wrap.is-left,.aah-tabs--left .aah-tabs__nav-wrap.is-right,.aah-tabs--right .aah-tabs__nav-wrap.is-left,.aah-tabs--right .aah-tabs__nav-wrap.is-right{margin-bottom:0}.aah-tabs--left .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-prev,.aah-tabs--left .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-next,.aah-tabs--left .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-prev,.aah-tabs--left .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-next,.aah-tabs--right .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-prev,.aah-tabs--right .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-next,.aah-tabs--right .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-prev,.aah-tabs--right .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-next{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.aah-tabs--left .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-prev i,.aah-tabs--left .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-next i,.aah-tabs--left .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-prev i,.aah-tabs--left .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-next i,.aah-tabs--right .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-prev i,.aah-tabs--right .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-next i,.aah-tabs--right .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-prev i,.aah-tabs--right .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-next i{transform:rotate(90deg)}.aah-tabs--left .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-prev,.aah-tabs--left .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-prev,.aah-tabs--right .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-prev,.aah-tabs--right .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-prev{left:auto;top:0}.aah-tabs--left .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-next,.aah-tabs--left .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-next,.aah-tabs--right .aah-tabs__nav-wrap.is-left>.aah-tabs__nav-next,.aah-tabs--right .aah-tabs__nav-wrap.is-right>.aah-tabs__nav-next{right:auto;bottom:0}.aah-tabs--left .aah-tabs__nav-wrap.is-left.is-scrollable,.aah-tabs--left .aah-tabs__nav-wrap.is-right.is-scrollable,.aah-tabs--right .aah-tabs__nav-wrap.is-left.is-scrollable,.aah-tabs--right .aah-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.aah-tabs--left .aah-tabs__nav-wrap.is-left:after,.aah-tabs--left .aah-tabs__nav-wrap.is-right:after,.aah-tabs--right .aah-tabs__nav-wrap.is-left:after,.aah-tabs--right .aah-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.aah-tabs--left .aah-tabs__nav.is-left,.aah-tabs--left .aah-tabs__nav.is-right,.aah-tabs--right .aah-tabs__nav.is-left,.aah-tabs--right .aah-tabs__nav.is-right{flex-direction:column}.aah-tabs--left .aah-tabs__item.is-left,.aah-tabs--right .aah-tabs__item.is-left{justify-content:flex-end}.aah-tabs--left .aah-tabs__item.is-right,.aah-tabs--right .aah-tabs__item.is-right{justify-content:flex-start}.aah-tabs--left .aah-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.aah-tabs--left .aah-tabs__nav-wrap.is-left{margin-right:-1px}.aah-tabs--left .aah-tabs__nav-wrap.is-left:after{left:auto;right:0}.aah-tabs--left .aah-tabs__active-bar.is-left{right:0;left:auto}.aah-tabs--left .aah-tabs__item.is-left{text-align:right}.aah-tabs--left.aah-tabs--card .aah-tabs__active-bar.is-left{display:none}.aah-tabs--left.aah-tabs--card .aah-tabs__item.is-left{border-left:none;border-right:1px solid var(--aah-border-color-light);border-bottom:none;border-top:1px solid var(--aah-border-color-light);text-align:left}.aah-tabs--left.aah-tabs--card .aah-tabs__item.is-left:first-child{border-right:1px solid var(--aah-border-color-light);border-top:none}.aah-tabs--left.aah-tabs--card .aah-tabs__item.is-left.is-active{border:1px solid var(--aah-border-color-light);border-right-color:#fff;border-left:none;border-bottom:none}.aah-tabs--left.aah-tabs--card .aah-tabs__item.is-left.is-active:first-child{border-top:none}.aah-tabs--left.aah-tabs--card .aah-tabs__item.is-left.is-active:last-child{border-bottom:none}.aah-tabs--left.aah-tabs--card .aah-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid var(--aah-border-color-light);border-right:none}.aah-tabs--left.aah-tabs--card .aah-tabs__new-tab{float:none}.aah-tabs--left.aah-tabs--border-card .aah-tabs__header.is-left{border-right:1px solid var(--aah-border-color)}.aah-tabs--left.aah-tabs--border-card .aah-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.aah-tabs--left.aah-tabs--border-card .aah-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.aah-tabs--right .aah-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.aah-tabs--right .aah-tabs__nav-wrap.is-right{margin-left:-1px}.aah-tabs--right .aah-tabs__nav-wrap.is-right:after{left:0;right:auto}.aah-tabs--right .aah-tabs__active-bar.is-right{left:0}.aah-tabs--right.aah-tabs--card .aah-tabs__active-bar.is-right{display:none}.aah-tabs--right.aah-tabs--card .aah-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--aah-border-color-light)}.aah-tabs--right.aah-tabs--card .aah-tabs__item.is-right:first-child{border-left:1px solid var(--aah-border-color-light);border-top:none}.aah-tabs--right.aah-tabs--card .aah-tabs__item.is-right.is-active{border:1px solid var(--aah-border-color-light);border-left-color:#fff;border-right:none;border-bottom:none}.aah-tabs--right.aah-tabs--card .aah-tabs__item.is-right.is-active:first-child{border-top:none}.aah-tabs--right.aah-tabs--card .aah-tabs__item.is-right.is-active:last-child{border-bottom:none}.aah-tabs--right.aah-tabs--card .aah-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid var(--aah-border-color-light);border-left:none}.aah-tabs--right.aah-tabs--border-card .aah-tabs__header.is-right{border-left:1px solid var(--aah-border-color)}.aah-tabs--right.aah-tabs--border-card .aah-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.aah-tabs--right.aah-tabs--border-card .aah-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInRight-transition,.slideInLeft-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--aah-transition-duration)}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave var(--aah-transition-duration)}.slideInLeft-enter{animation:slideInLeft-enter var(--aah-transition-duration)}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave var(--aah-transition-duration)}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translate(100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translate(-100%)}to{opacity:1;transform-origin:0 0;transform:translate(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translate(0);opacity:1}to{transform-origin:0 0;transform:translate(-100%);opacity:0}}.aah-tag{--aah-tag-font-size: 12px;--aah-tag-border-radius: 4px;--aah-tag-border-radius-rounded: 9999px}.aah-tag{--aah-tag-bg-color: var(--aah-color-primary-light-9);--aah-tag-border-color: var(--aah-color-primary-light-8);--aah-tag-hover-color: var(--aah-color-primary);background-color:var(--aah-tag-bg-color);border-color:var(--aah-tag-border-color);color:var(--aah-tag-text-color);display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:24px;padding:0 9px;font-size:var(--aah-tag-font-size);line-height:1;border-width:1px;border-style:solid;border-radius:var(--aah-tag-border-radius);box-sizing:border-box;white-space:nowrap;--aah-icon-size: 14px}.aah-tag.aah-tag--primary{--aah-tag-bg-color: var(--aah-color-primary-light-9);--aah-tag-border-color: var(--aah-color-primary-light-8);--aah-tag-hover-color: var(--aah-color-primary)}.aah-tag.aah-tag--success{--aah-tag-bg-color: var(--aah-color-success-light-9);--aah-tag-border-color: var(--aah-color-success-light-8);--aah-tag-hover-color: var(--aah-color-success)}.aah-tag.aah-tag--warning{--aah-tag-bg-color: var(--aah-color-warning-light-9);--aah-tag-border-color: var(--aah-color-warning-light-8);--aah-tag-hover-color: var(--aah-color-warning)}.aah-tag.aah-tag--danger{--aah-tag-bg-color: var(--aah-color-danger-light-9);--aah-tag-border-color: var(--aah-color-danger-light-8);--aah-tag-hover-color: var(--aah-color-danger)}.aah-tag.aah-tag--error{--aah-tag-bg-color: var(--aah-color-error-light-9);--aah-tag-border-color: var(--aah-color-error-light-8);--aah-tag-hover-color: var(--aah-color-error)}.aah-tag.aah-tag--info{--aah-tag-bg-color: var(--aah-color-info-light-9);--aah-tag-border-color: var(--aah-color-info-light-8);--aah-tag-hover-color: var(--aah-color-info)}.aah-tag.aah-tag--primary{--aah-tag-text-color: var(--aah-color-primary)}.aah-tag.aah-tag--success{--aah-tag-text-color: var(--aah-color-success)}.aah-tag.aah-tag--warning{--aah-tag-text-color: var(--aah-color-warning)}.aah-tag.aah-tag--danger{--aah-tag-text-color: var(--aah-color-danger)}.aah-tag.aah-tag--error{--aah-tag-text-color: var(--aah-color-error)}.aah-tag.aah-tag--info{--aah-tag-text-color: var(--aah-color-info)}.aah-tag.is-hit{border-color:var(--aah-color-primary)}.aah-tag.is-round{border-radius:var(--aah-tag-border-radius-rounded)}.aah-tag .aah-tag__close{flex-shrink:0;color:var(--aah-tag-text-color)}.aah-tag .aah-tag__close:hover{color:var(--aah-color-white);background-color:var(--aah-tag-hover-color)}.aah-tag .aah-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--aah-icon-size) - 2px);height:var(--aah-icon-size);width:var(--aah-icon-size)}.aah-tag .aah-tag__close{margin-left:6px}.aah-tag--dark{--aah-tag-bg-color: var(--aah-color-primary);--aah-tag-border-color: var(--aah-color-primary);--aah-tag-hover-color: var(--aah-color-primary-light-3);--aah-tag-text-color: var(--aah-color-white)}.aah-tag--dark.aah-tag--primary{--aah-tag-bg-color: var(--aah-color-primary);--aah-tag-border-color: var(--aah-color-primary);--aah-tag-hover-color: var(--aah-color-primary-light-3)}.aah-tag--dark.aah-tag--success{--aah-tag-bg-color: var(--aah-color-success);--aah-tag-border-color: var(--aah-color-success);--aah-tag-hover-color: var(--aah-color-success-light-3)}.aah-tag--dark.aah-tag--warning{--aah-tag-bg-color: var(--aah-color-warning);--aah-tag-border-color: var(--aah-color-warning);--aah-tag-hover-color: var(--aah-color-warning-light-3)}.aah-tag--dark.aah-tag--danger{--aah-tag-bg-color: var(--aah-color-danger);--aah-tag-border-color: var(--aah-color-danger);--aah-tag-hover-color: var(--aah-color-danger-light-3)}.aah-tag--dark.aah-tag--error{--aah-tag-bg-color: var(--aah-color-error);--aah-tag-border-color: var(--aah-color-error);--aah-tag-hover-color: var(--aah-color-error-light-3)}.aah-tag--dark.aah-tag--info{--aah-tag-bg-color: var(--aah-color-info);--aah-tag-border-color: var(--aah-color-info);--aah-tag-hover-color: var(--aah-color-info-light-3)}.aah-tag--dark.aah-tag--primary,.aah-tag--dark.aah-tag--success,.aah-tag--dark.aah-tag--warning,.aah-tag--dark.aah-tag--danger,.aah-tag--dark.aah-tag--error,.aah-tag--dark.aah-tag--info{--aah-tag-text-color: var(--aah-color-white)}.aah-tag--plain{--aah-tag-border-color: var(--aah-color-primary-light-5);--aah-tag-hover-color: var(--aah-color-primary);--aah-tag-bg-color: var(--aah-fill-color-blank)}.aah-tag--plain.aah-tag--primary{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-primary-light-5);--aah-tag-hover-color: var(--aah-color-primary)}.aah-tag--plain.aah-tag--success{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-success-light-5);--aah-tag-hover-color: var(--aah-color-success)}.aah-tag--plain.aah-tag--warning{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-warning-light-5);--aah-tag-hover-color: var(--aah-color-warning)}.aah-tag--plain.aah-tag--danger{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-danger-light-5);--aah-tag-hover-color: var(--aah-color-danger)}.aah-tag--plain.aah-tag--error{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-error-light-5);--aah-tag-hover-color: var(--aah-color-error)}.aah-tag--plain.aah-tag--info{--aah-tag-bg-color: var(--aah-fill-color-blank);--aah-tag-border-color: var(--aah-color-info-light-5);--aah-tag-hover-color: var(--aah-color-info)}.aah-tag.is-closable{padding-right:5px}.aah-tag--large{padding:0 11px;height:32px;--aah-icon-size: 16px}.aah-tag--large .aah-tag__close{margin-left:8px}.aah-tag--large.is-closable{padding-right:7px}.aah-tag--small{padding:0 7px;height:20px;--aah-icon-size: 12px}.aah-tag--small .aah-tag__close{margin-left:4px}.aah-tag--small.is-closable{padding-right:3px}.aah-tag--small .aah-icon-close{transform:scale(.8)}.aah-tag.aah-tag--primary.is-hit{border-color:var(--aah-color-primary)}.aah-tag.aah-tag--success.is-hit{border-color:var(--aah-color-success)}.aah-tag.aah-tag--warning.is-hit{border-color:var(--aah-color-warning)}.aah-tag.aah-tag--danger.is-hit{border-color:var(--aah-color-danger)}.aah-tag.aah-tag--error.is-hit{border-color:var(--aah-color-error)}.aah-tag.aah-tag--info.is-hit{border-color:var(--aah-color-info)}.aah-text{--aah-text-font-size: var(--aah-font-size-base);--aah-text-color: var(--aah-text-color-regular)}.aah-text{align-self:center;margin:0;padding:0;font-size:var(--aah-text-font-size);color:var(--aah-text-color);overflow-wrap:break-word}.aah-text.is-truncated{display:inline-block;max-width:100%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.aah-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.aah-text--large{--aah-text-font-size: var(--aah-font-size-medium)}.aah-text--default{--aah-text-font-size: var(--aah-font-size-base)}.aah-text--small{--aah-text-font-size: var(--aah-font-size-extra-small)}.aah-text.aah-text--primary{--aah-text-color: var(--aah-color-primary)}.aah-text.aah-text--success{--aah-text-color: var(--aah-color-success)}.aah-text.aah-text--warning{--aah-text-color: var(--aah-color-warning)}.aah-text.aah-text--danger{--aah-text-color: var(--aah-color-danger)}.aah-text.aah-text--error{--aah-text-color: var(--aah-color-error)}.aah-text.aah-text--info{--aah-text-color: var(--aah-color-info)}.aah-text>.aah-icon{vertical-align:-2px}.time-select{margin:5px 0;min-width:0}.time-select .aah-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.disabled{color:var(--aah-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--aah-fill-color-light);font-weight:700;cursor:pointer}.time-select .time-select-item.selected:not(.disabled){color:var(--aah-color-primary);font-weight:700}.aah-timeline-item{position:relative;padding-bottom:20px}.aah-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.aah-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid var(--aah-timeline-node-color)}.aah-timeline-item .aah-timeline-item__icon{color:var(--aah-color-white);font-size:var(--aah-font-size-small)}.aah-timeline-item__node{position:absolute;background-color:var(--aah-timeline-node-color);border-color:var(--aah-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;align-items:center}.aah-timeline-item__node--normal{left:-1px;width:var(--aah-timeline-node-size-normal);height:var(--aah-timeline-node-size-normal)}.aah-timeline-item__node--large{left:-2px;width:var(--aah-timeline-node-size-large);height:var(--aah-timeline-node-size-large)}.aah-timeline-item__node.is-hollow{background:var(--aah-color-white);border-style:solid;border-width:2px}.aah-timeline-item__node--primary{background-color:var(--aah-color-primary);border-color:var(--aah-color-primary)}.aah-timeline-item__node--success{background-color:var(--aah-color-success);border-color:var(--aah-color-success)}.aah-timeline-item__node--warning{background-color:var(--aah-color-warning);border-color:var(--aah-color-warning)}.aah-timeline-item__node--danger{background-color:var(--aah-color-danger);border-color:var(--aah-color-danger)}.aah-timeline-item__node--info{background-color:var(--aah-color-info);border-color:var(--aah-color-info)}.aah-timeline-item__dot{position:absolute;display:flex;justify-content:center;align-items:center}.aah-timeline-item__content{color:var(--aah-text-color-primary)}.aah-timeline-item__timestamp{color:var(--aah-text-color-secondary);line-height:1;font-size:var(--aah-font-size-small)}.aah-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.aah-timeline-item__timestamp.is-bottom{margin-top:8px}.aah-timeline{--aah-timeline-node-size-normal: 12px;--aah-timeline-node-size-large: 14px;--aah-timeline-node-color: var(--aah-border-color-light)}.aah-timeline{margin:0;font-size:var(--aah-font-size-base);list-style:none}.aah-timeline .aah-timeline-item:last-child .aah-timeline-item__tail{display:none}.aah-timeline .aah-timeline-item__center{display:flex;align-items:center}.aah-timeline .aah-timeline-item__center .aah-timeline-item__wrapper{width:100%}.aah-timeline .aah-timeline-item__center .aah-timeline-item__tail{top:0}.aah-timeline .aah-timeline-item__center:first-child .aah-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.aah-timeline .aah-timeline-item__center:last-child .aah-timeline-item__tail{display:block;height:calc(50% - 10px)}.aah-tooltip-v2__content{--aah-tooltip-v2-padding: 5px 10px;--aah-tooltip-v2-border-radius: 4px;--aah-tooltip-v2-border-color: var(--aah-border-color);border-radius:var(--aah-tooltip-v2-border-radius);color:var(--aah-color-black);background-color:var(--aah-color-white);padding:var(--aah-tooltip-v2-padding);border:1px solid var(--aah-border-color)}.aah-tooltip-v2__arrow{position:absolute;color:var(--aah-color-white);width:var(--aah-tooltip-v2-arrow-width);height:var(--aah-tooltip-v2-arrow-height);pointer-events:none;left:var(--aah-tooltip-v2-arrow-x);top:var(--aah-tooltip-v2-arrow-y)}.aah-tooltip-v2__arrow:before{content:"";width:0;height:0;border:var(--aah-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.aah-tooltip-v2__arrow:after{content:"";width:0;height:0;border:var(--aah-tooltip-v2-arrow-border-width) solid transparent;position:absolute}.aah-tooltip-v2__content[data-side^=top] .aah-tooltip-v2__arrow{bottom:0}.aah-tooltip-v2__content[data-side^=top] .aah-tooltip-v2__arrow:before{border-top-color:var(--aah-color-white);border-top-width:var(--aah-tooltip-v2-arrow-border-width);border-bottom:0;top:calc(100% - 1px)}.aah-tooltip-v2__content[data-side^=top] .aah-tooltip-v2__arrow:after{border-top-color:var(--aah-border-color);border-top-width:var(--aah-tooltip-v2-arrow-border-width);border-bottom:0;top:100%;z-index:-1}.aah-tooltip-v2__content[data-side^=bottom] .aah-tooltip-v2__arrow{top:0}.aah-tooltip-v2__content[data-side^=bottom] .aah-tooltip-v2__arrow:before{border-bottom-color:var(--aah-color-white);border-bottom-width:var(--aah-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.aah-tooltip-v2__content[data-side^=bottom] .aah-tooltip-v2__arrow:after{border-bottom-color:var(--aah-border-color);border-bottom-width:var(--aah-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.aah-tooltip-v2__content[data-side^=left] .aah-tooltip-v2__arrow{right:0}.aah-tooltip-v2__content[data-side^=left] .aah-tooltip-v2__arrow:before{border-left-color:var(--aah-color-white);border-left-width:var(--aah-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.aah-tooltip-v2__content[data-side^=left] .aah-tooltip-v2__arrow:after{border-left-color:var(--aah-border-color);border-left-width:var(--aah-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.aah-tooltip-v2__content[data-side^=right] .aah-tooltip-v2__arrow{left:0}.aah-tooltip-v2__content[data-side^=right] .aah-tooltip-v2__arrow:before{border-right-color:var(--aah-color-white);border-right-width:var(--aah-tooltip-v2-arrow-border-width);border-left:0;right:calc(100% - 1px)}.aah-tooltip-v2__content[data-side^=right] .aah-tooltip-v2__arrow:after{border-right-color:var(--aah-border-color);border-right-width:var(--aah-tooltip-v2-arrow-border-width);border-left:0;right:100%;z-index:-1}.aah-tooltip-v2__content.is-dark{--aah-tooltip-v2-border-color: transparent;background-color:var(--aah-color-black);color:var(--aah-color-white);border-color:transparent}.aah-tooltip-v2__content.is-dark .aah-tooltip-v2__arrow{background-color:var(--aah-color-black);border-color:transparent}.aah-transfer{--aah-transfer-border-color: var(--aah-border-color-lighter);--aah-transfer-border-radius: var(--aah-border-radius-base);--aah-transfer-panel-width: 200px;--aah-transfer-panel-header-height: 40px;--aah-transfer-panel-header-bg-color: var(--aah-fill-color-light);--aah-transfer-panel-footer-height: 40px;--aah-transfer-panel-body-height: 278px;--aah-transfer-item-height: 30px;--aah-transfer-filter-height: 32px}.aah-transfer{font-size:var(--aah-font-size-base)}.aah-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.aah-transfer__button{vertical-align:top}.aah-transfer__button:nth-child(2){margin:0 0 0 10px}.aah-transfer__button i,.aah-transfer__button span{font-size:14px}.aah-transfer__button .aah-icon+span{margin-left:0}.aah-transfer-panel{overflow:hidden;background:var(--aah-bg-color-overlay);display:inline-block;text-align:left;vertical-align:middle;width:var(--aah-transfer-panel-width);max-height:100%;box-sizing:border-box;position:relative}.aah-transfer-panel__body{height:var(--aah-transfer-panel-body-height);border-left:1px solid var(--aah-transfer-border-color);border-right:1px solid var(--aah-transfer-border-color);border-bottom:1px solid var(--aah-transfer-border-color);border-bottom-left-radius:var(--aah-transfer-border-radius);border-bottom-right-radius:var(--aah-transfer-border-radius);overflow:hidden}.aah-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.aah-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:var(--aah-transfer-panel-body-height);overflow:auto;box-sizing:border-box}.aah-transfer-panel__list.is-filterable{height:calc(100% - var(--aah-transfer-filter-height) - 30px);padding-top:0}.aah-transfer-panel__item{height:var(--aah-transfer-item-height);line-height:var(--aah-transfer-item-height);padding-left:15px;display:block!important}.aah-transfer-panel__item+.aah-transfer-panel__item{margin-left:0}.aah-transfer-panel__item.aah-checkbox{color:var(--aah-text-color-regular)}.aah-transfer-panel__item:hover{color:var(--aah-color-primary)}.aah-transfer-panel__item.aah-checkbox .aah-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:22px;line-height:var(--aah-transfer-item-height)}.aah-transfer-panel__item .aah-checkbox__input{position:absolute;top:8px}.aah-transfer-panel__filter{text-align:center;padding:15px;box-sizing:border-box}.aah-transfer-panel__filter .aah-input__inner{height:var(--aah-transfer-filter-height);width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:calc(var(--aah-transfer-filter-height) / 2)}.aah-transfer-panel__filter .aah-icon-circle-close{cursor:pointer}.aah-transfer-panel .aah-transfer-panel__header{display:flex;align-items:center;height:var(--aah-transfer-panel-header-height);background:var(--aah-transfer-panel-header-bg-color);margin:0;padding-left:15px;border:1px solid var(--aah-transfer-border-color);border-top-left-radius:var(--aah-transfer-border-radius);border-top-right-radius:var(--aah-transfer-border-radius);box-sizing:border-box;color:var(--aah-color-black)}.aah-transfer-panel .aah-transfer-panel__header .aah-checkbox{position:relative;display:flex;width:100%;align-items:center}.aah-transfer-panel .aah-transfer-panel__header .aah-checkbox .aah-checkbox__label{font-size:16px;color:var(--aah-text-color-primary);font-weight:400}.aah-transfer-panel .aah-transfer-panel__header .aah-checkbox .aah-checkbox__label span{position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0);color:var(--aah-text-color-secondary);font-size:12px;font-weight:400}.aah-transfer-panel .aah-transfer-panel__footer{height:var(--aah-transfer-panel-footer-height);background:var(--aah-bg-color-overlay);margin:0;padding:0;border:1px solid var(--aah-transfer-border-color);border-bottom-left-radius:var(--aah-transfer-border-radius);border-bottom-right-radius:var(--aah-transfer-border-radius)}.aah-transfer-panel .aah-transfer-panel__footer:after{display:inline-block;content:"";height:100%;vertical-align:middle}.aah-transfer-panel .aah-transfer-panel__footer .aah-checkbox{padding-left:20px;color:var(--aah-text-color-regular)}.aah-transfer-panel .aah-transfer-panel__empty{margin:0;height:var(--aah-transfer-item-height);line-height:var(--aah-transfer-item-height);padding:6px 15px 0;color:var(--aah-text-color-secondary);text-align:center}.aah-transfer-panel .aah-checkbox__label{padding-left:8px}.aah-transfer-panel .aah-checkbox__inner{height:14px;width:14px;border-radius:3px}.aah-transfer-panel .aah-checkbox__inner:after{height:6px;width:3px;left:4px}.aah-tree{--aah-tree-node-content-height: 26px;--aah-tree-node-hover-bg-color: var(--aah-fill-color-light);--aah-tree-text-color: var(--aah-text-color-regular);--aah-tree-expand-icon-color: var(--aah-text-color-placeholder)}.aah-tree{position:relative;cursor:default;background:var(--aah-fill-color-blank);color:var(--aah-tree-text-color);font-size:var(--aah-font-size-base)}.aah-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.aah-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--aah-text-color-secondary);font-size:var(--aah-font-size-base)}.aah-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:var(--aah-color-primary)}.aah-tree-node{white-space:nowrap;outline:none}.aah-tree-node:focus>.aah-tree-node__content{background-color:var(--aah-tree-node-hover-bg-color)}.aah-tree-node.is-drop-inner>.aah-tree-node__content .aah-tree-node__label{background-color:var(--aah-color-primary);color:#fff}.aah-tree-node__content{--aah-checkbox-height: var(--aah-tree-node-content-height);display:flex;align-items:center;height:var(--aah-tree-node-content-height);cursor:pointer}.aah-tree-node__content>.aah-tree-node__expand-icon{padding:6px;box-sizing:content-box}.aah-tree-node__content>label.aah-checkbox{margin-right:8px}.aah-tree-node__content:hover{background-color:var(--aah-tree-node-hover-bg-color)}.aah-tree.is-dragging .aah-tree-node__content{cursor:move}.aah-tree.is-dragging .aah-tree-node__content *{pointer-events:none}.aah-tree.is-dragging.is-drop-not-allow .aah-tree-node__content{cursor:not-allowed}.aah-tree-node__expand-icon{cursor:pointer;color:var(--aah-tree-expand-icon-color);font-size:12px;transform:rotate(0);transition:transform var(--aah-transition-duration) ease-in-out}.aah-tree-node__expand-icon.expanded{transform:rotate(90deg)}.aah-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.aah-tree-node__expand-icon.is-hidden{visibility:hidden}.aah-tree-node__loading-icon{margin-right:8px;font-size:var(--aah-font-size-base);color:var(--aah-tree-expand-icon-color)}.aah-tree-node>.aah-tree-node__children{overflow:hidden;background-color:transparent}.aah-tree-node.is-expanded>.aah-tree-node__children{display:block}.aah-tree--highlight-current .aah-tree-node.is-current>.aah-tree-node__content{background-color:var(--aah-color-primary-light-9)}.aah-tree-select{--aah-tree-node-content-height: 26px;--aah-tree-node-hover-bg-color: var(--aah-fill-color-light);--aah-tree-text-color: var(--aah-text-color-regular);--aah-tree-expand-icon-color: var(--aah-text-color-placeholder)}.aah-tree-select__popper .aah-tree-node__expand-icon{margin-left:8px}.aah-tree-select__popper .aah-tree-node.is-checked>.aah-tree-node__content .aah-select-dropdown__item.selected:after{content:none}.aah-tree-select__popper .aah-select-dropdown__item{flex:1;background:transparent!important;padding-left:0;height:20px;line-height:20px}.aah-upload{--aah-upload-dragger-padding-horizontal: 40px;--aah-upload-dragger-padding-vertical: 10px}.aah-upload{display:inline-flex;justify-content:center;align-items:center;cursor:pointer;outline:none}.aah-upload__input{display:none}.aah-upload__tip{font-size:12px;color:var(--aah-text-color-regular);margin-top:7px}.aah-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.aah-upload--picture-card{--aah-upload-picture-card-size: 148px;background-color:var(--aah-fill-color-lighter);border:1px dashed var(--aah-border-color-darker);border-radius:6px;box-sizing:border-box;width:var(--aah-upload-picture-card-size);height:var(--aah-upload-picture-card-size);cursor:pointer;vertical-align:top;display:inline-flex;justify-content:center;align-items:center}.aah-upload--picture-card>i{font-size:28px;color:var(--aah-text-color-secondary)}.aah-upload--picture-card:hover{border-color:var(--aah-color-primary);color:var(--aah-color-primary)}.aah-upload.is-drag{display:block}.aah-upload:focus{border-color:var(--aah-color-primary);color:var(--aah-color-primary)}.aah-upload:focus .aah-upload-dragger{border-color:var(--aah-color-primary)}.aah-upload-dragger{padding:var(--aah-upload-dragger-padding-horizontal) var(--aah-upload-dragger-padding-vertical);background-color:var(--aah-fill-color-blank);border:1px dashed var(--aah-border-color);border-radius:6px;box-sizing:border-box;text-align:center;cursor:pointer;position:relative;overflow:hidden}.aah-upload-dragger .aah-icon--upload{font-size:67px;color:var(--aah-text-color-placeholder);margin-bottom:16px;line-height:50px}.aah-upload-dragger+.aah-upload__tip{text-align:center}.aah-upload-dragger~.aah-upload__files{border-top:var(--aah-border);margin-top:7px;padding-top:5px}.aah-upload-dragger .aah-upload__text{color:var(--aah-text-color-regular);font-size:14px;text-align:center}.aah-upload-dragger .aah-upload__text em{color:var(--aah-color-primary);font-style:normal}.aah-upload-dragger:hover{border-color:var(--aah-color-primary)}.aah-upload-dragger.is-dragover{padding:calc(var(--aah-upload-dragger-padding-horizontal) - 1px) calc(var(--aah-upload-dragger-padding-vertical) - 1px);background-color:var(--aah-color-primary-light-9);border:2px dashed var(--aah-color-primary)}.aah-upload-list{margin:10px 0 0;padding:0;list-style:none;position:relative}.aah-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:var(--aah-text-color-regular);margin-bottom:5px;position:relative;box-sizing:border-box;border-radius:4px;width:100%}.aah-upload-list__item .aah-progress{position:absolute;top:20px;width:100%}.aah-upload-list__item .aah-progress__text{position:absolute;right:0;top:-13px}.aah-upload-list__item .aah-progress-bar{margin-right:0;padding-right:0}.aah-upload-list__item .aah-icon--upload-success{color:var(--aah-color-success)}.aah-upload-list__item .aah-icon--close{display:none;position:absolute;right:5px;top:50%;cursor:pointer;opacity:.75;color:var(--aah-text-color-regular);transition:opacity var(--aah-transition-duration);transform:translateY(-50%)}.aah-upload-list__item .aah-icon--close:hover{opacity:1;color:var(--aah-color-primary)}.aah-upload-list__item .aah-icon--close-tip{display:none;position:absolute;top:1px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:var(--aah-color-primary);font-style:normal}.aah-upload-list__item:hover{background-color:var(--aah-fill-color-light)}.aah-upload-list__item:hover .aah-icon--close{display:inline-flex}.aah-upload-list__item:hover .aah-progress__text{display:none}.aah-upload-list__item .aah-upload-list__item-info{display:inline-flex;justify-content:center;flex-direction:column;width:calc(100% - 30px);margin-left:4px}.aah-upload-list__item.is-success .aah-upload-list__item-status-label{display:inline-flex}.aah-upload-list__item.is-success .aah-upload-list__item-name:hover,.aah-upload-list__item.is-success .aah-upload-list__item-name:focus{color:var(--aah-color-primary);cursor:pointer}.aah-upload-list__item.is-success:focus:not(:hover) .aah-icon--close-tip{display:inline-block}.aah-upload-list__item.is-success:not(.focusing):focus,.aah-upload-list__item.is-success:active{outline-width:0}.aah-upload-list__item.is-success:not(.focusing):focus .aah-icon--close-tip,.aah-upload-list__item.is-success:active .aah-icon--close-tip{display:none}.aah-upload-list__item.is-success:hover .aah-upload-list__item-status-label,.aah-upload-list__item.is-success:focus .aah-upload-list__item-status-label{display:none;opacity:0}.aah-upload-list__item-name{color:var(--aah-text-color-regular);display:inline-flex;text-align:center;align-items:center;padding:0 4px;transition:color var(--aah-transition-duration);font-size:var(--aah-font-size-base)}.aah-upload-list__item-name .aah-icon{margin-right:6px;color:var(--aah-text-color-secondary)}.aah-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aah-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none;height:100%;justify-content:center;align-items:center;transition:opacity var(--aah-transition-duration)}.aah-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:var(--aah-text-color-regular);display:none}.aah-upload-list__item-delete:hover{color:var(--aah-color-primary)}.aah-upload-list--picture-card{--aah-upload-list-picture-card-size: 148px;display:inline-flex;flex-wrap:wrap;margin:0}.aah-upload-list--picture-card .aah-upload-list__item{overflow:hidden;background-color:var(--aah-fill-color-blank);border:1px solid var(--aah-border-color);border-radius:6px;box-sizing:border-box;width:var(--aah-upload-list-picture-card-size);height:var(--aah-upload-list-picture-card-size);margin:0 8px 8px 0;padding:0;display:inline-flex}.aah-upload-list--picture-card .aah-upload-list__item .aah-icon--check,.aah-upload-list--picture-card .aah-upload-list__item .aah-icon--circle-check{color:#fff}.aah-upload-list--picture-card .aah-upload-list__item .aah-icon--close{display:none}.aah-upload-list--picture-card .aah-upload-list__item:hover .aah-upload-list__item-status-label{opacity:0;display:block}.aah-upload-list--picture-card .aah-upload-list__item:hover .aah-progress__text{display:block}.aah-upload-list--picture-card .aah-upload-list__item .aah-upload-list__item-name{display:none}.aah-upload-list--picture-card .aah-upload-list__item-thumbnail{width:100%;height:100%;object-fit:contain}.aah-upload-list--picture-card .aah-upload-list__item-status-label{right:-15px;top:-6px;width:40px;height:24px;background:var(--aah-color-success);text-align:center;transform:rotate(45deg)}.aah-upload-list--picture-card .aah-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.aah-upload-list--picture-card .aah-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;display:inline-flex;justify-content:center;align-items:center;color:#fff;opacity:0;font-size:20px;background-color:var(--aah-overlay-color-lighter);transition:opacity var(--aah-transition-duration)}.aah-upload-list--picture-card .aah-upload-list__item-actions span{display:none;cursor:pointer}.aah-upload-list--picture-card .aah-upload-list__item-actions span+span{margin-left:1rem}.aah-upload-list--picture-card .aah-upload-list__item-actions .aah-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.aah-upload-list--picture-card .aah-upload-list__item-actions:hover{opacity:1}.aah-upload-list--picture-card .aah-upload-list__item-actions:hover span{display:inline-flex}.aah-upload-list--picture-card .aah-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.aah-upload-list--picture-card .aah-progress .aah-progress__text{top:50%}.aah-upload-list--picture .aah-upload-list__item{overflow:hidden;z-index:0;background-color:var(--aah-fill-color-blank);border:1px solid var(--aah-border-color);border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px;display:flex;align-items:center}.aah-upload-list--picture .aah-upload-list__item .aah-icon--check,.aah-upload-list--picture .aah-upload-list__item .aah-icon--circle-check{color:#fff}.aah-upload-list--picture .aah-upload-list__item:hover .aah-upload-list__item-status-label{opacity:0;display:inline-flex}.aah-upload-list--picture .aah-upload-list__item:hover .aah-progress__text{display:block}.aah-upload-list--picture .aah-upload-list__item.is-success .aah-upload-list__item-name i{display:none}.aah-upload-list--picture .aah-upload-list__item .aah-icon--close{top:5px;transform:translateY(0)}.aah-upload-list--picture .aah-upload-list__item-thumbnail{display:inline-flex;justify-content:center;align-items:center;width:70px;height:70px;object-fit:contain;position:relative;z-index:1;background-color:var(--aah-color-white)}.aah-upload-list--picture .aah-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:var(--aah-color-success);text-align:center;transform:rotate(45deg)}.aah-upload-list--picture .aah-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.aah-upload-list--picture .aah-progress{position:relative;top:-7px}.aah-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.aah-upload-cover:after{display:inline-block;content:"";height:100%;vertical-align:middle}.aah-upload-cover img{display:block;width:100%;height:100%}.aah-upload-cover__label{right:-15px;top:-6px;width:40px;height:24px;background:var(--aah-color-success);text-align:center;transform:rotate(45deg)}.aah-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.aah-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.aah-upload-cover__progress+.aah-upload__inner{opacity:0}.aah-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.aah-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:var(--aah-overlay-color-light);text-align:center}.aah-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:var(--aah-transition-md-fade);margin-top:60px}.aah-upload-cover__interact .btn i{margin-top:0}.aah-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.aah-upload-cover__interact .btn:not(:first-child){margin-left:35px}.aah-upload-cover__interact .btn:hover{transform:translateY(-13px)}.aah-upload-cover__interact .btn:hover span{opacity:1}.aah-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.aah-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:var(--aah-text-color-primary)}.aah-upload-cover+.aah-upload__inner{opacity:0;position:relative;z-index:1}.aah-vl__wrapper{position:relative}.aah-vl__wrapper:hover .aah-virtual-scrollbar,.aah-vl__wrapper.always-on .aah-virtual-scrollbar{opacity:1}.aah-vl__window{scrollbar-width:none}.aah-vl__window::-webkit-scrollbar{display:none}.aah-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.aah-virtual-scrollbar.always-on{opacity:1}.aah-vg__wrapper{position:relative}.aah-popper{--aah-popper-border-radius: var(--aah-popover-border-radius, 4px)}.aah-popper{position:absolute;border-radius:var(--aah-popper-border-radius);padding:5px 11px;z-index:2000;font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;visibility:visible}.aah-popper.is-dark{color:var(--aah-bg-color);background:var(--aah-text-color-primary);border:1px solid var(--aah-text-color-primary)}.aah-popper.is-dark .aah-popper__arrow:before{border:1px solid var(--aah-text-color-primary);background:var(--aah-text-color-primary);right:0}.aah-popper.is-light{background:var(--aah-bg-color-overlay);border:1px solid var(--aah-border-color-light)}.aah-popper.is-light .aah-popper__arrow:before{border:1px solid var(--aah-border-color-light);background:var(--aah-bg-color-overlay);right:0}.aah-popper.is-pure{padding:0}.aah-popper__arrow{position:absolute;width:10px;height:10px;z-index:-1}.aah-popper__arrow:before{position:absolute;width:10px;height:10px;z-index:-1;content:" ";transform:rotate(45deg);background:var(--aah-text-color-primary);box-sizing:border-box}.aah-popper[data-popper-placement^=top]>.aah-popper__arrow{bottom:-5px}.aah-popper[data-popper-placement^=top]>.aah-popper__arrow:before{border-bottom-right-radius:2px}.aah-popper[data-popper-placement^=bottom]>.aah-popper__arrow{top:-5px}.aah-popper[data-popper-placement^=bottom]>.aah-popper__arrow:before{border-top-left-radius:2px}.aah-popper[data-popper-placement^=left]>.aah-popper__arrow{right:-5px}.aah-popper[data-popper-placement^=left]>.aah-popper__arrow:before{border-top-right-radius:2px}.aah-popper[data-popper-placement^=right]>.aah-popper__arrow{left:-5px}.aah-popper[data-popper-placement^=right]>.aah-popper__arrow:before{border-bottom-left-radius:2px}.aah-popper[data-popper-placement^=top] .aah-popper__arrow:before{border-top-color:transparent!important;border-left-color:transparent!important}.aah-popper[data-popper-placement^=bottom] .aah-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.aah-popper[data-popper-placement^=left] .aah-popper__arrow:before{border-left-color:transparent!important;border-bottom-color:transparent!important}.aah-popper[data-popper-placement^=right] .aah-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.aah-statistic{--aah-statistic-title-font-weight: 400;--aah-statistic-title-font-size: var(--aah-font-size-extra-small);--aah-statistic-title-color: var(--aah-text-color-regular);--aah-statistic-content-font-weight: 400;--aah-statistic-content-font-size: var(--aah-font-size-extra-large);--aah-statistic-content-color: var(--aah-text-color-primary)}.aah-statistic__head{font-weight:var(--aah-statistic-title-font-weight);font-size:var(--aah-statistic-title-font-size);color:var(--aah-statistic-title-color);line-height:20px;margin-bottom:4px}.aah-statistic__content{font-weight:var(--aah-statistic-content-font-weight);font-size:var(--aah-statistic-content-font-size);color:var(--aah-statistic-content-color)}.aah-statistic__value{display:inline-block}.aah-statistic__prefix{margin-right:4px;display:inline-block}.aah-statistic__suffix{margin-left:4px;display:inline-block}.aah-tour{--aah-tour-width: 520px;--aah-tour-padding-primary: 12px;--aah-tour-font-line-height: var(--aah-font-line-height-primary);--aah-tour-title-font-size: 16px;--aah-tour-title-text-color: var(--aah-text-color-primary);--aah-tour-title-font-weight: 400;--aah-tour-close-color: var(--aah-color-info);--aah-tour-font-size: 14px;--aah-tour-color: var(--aah-text-color-primary);--aah-tour-bg-color: var(--aah-bg-color);--aah-tour-border-radius: 4px}.aah-tour__hollow{transition:all var(--aah-transition-duration) ease}.aah-tour__content{border-radius:var(--aah-tour-border-radius);width:var(--aah-tour-width);padding:var(--aah-tour-padding-primary);background:var(--aah-tour-bg-color);box-shadow:var(--aah-box-shadow-light);box-sizing:border-box;overflow-wrap:break-word}.aah-tour__arrow{position:absolute;background:var(--aah-tour-bg-color);width:10px;height:10px;pointer-events:none;transform:rotate(45deg);box-sizing:border-box}.aah-tour__content[data-side^=top] .aah-tour__arrow{border-top-color:transparent;border-left-color:transparent}.aah-tour__content[data-side^=bottom] .aah-tour__arrow{border-bottom-color:transparent;border-right-color:transparent}.aah-tour__content[data-side^=left] .aah-tour__arrow{border-left-color:transparent;border-bottom-color:transparent}.aah-tour__content[data-side^=right] .aah-tour__arrow{border-right-color:transparent;border-top-color:transparent}.aah-tour__content[data-side^=top] .aah-tour__arrow{bottom:-5px}.aah-tour__content[data-side^=bottom] .aah-tour__arrow{top:-5px}.aah-tour__content[data-side^=left] .aah-tour__arrow{right:-5px}.aah-tour__content[data-side^=right] .aah-tour__arrow{left:-5px}.aah-tour__closebtn{position:absolute;top:0;right:0;padding:0;width:40px;height:40px;background:transparent;border:none;outline:none;cursor:pointer;font-size:var(--aah-message-close-size, 16px)}.aah-tour__closebtn .aah-tour__close{color:var(--aah-tour-close-color);font-size:inherit}.aah-tour__closebtn:focus .aah-tour__close,.aah-tour__closebtn:hover .aah-tour__close{color:var(--aah-color-primary)}.aah-tour__header{padding-bottom:var(--aah-tour-padding-primary)}.aah-tour__header.show-close{padding-right:calc(var(--aah-tour-padding-primary) + var(--aah-message-close-size, 16px))}.aah-tour__title{line-height:var(--aah-tour-font-line-height);font-size:var(--aah-tour-title-font-size);color:var(--aah-tour-title-text-color);font-weight:var(--aah-tour-title-font-weight)}.aah-tour__body{color:var(--aah-tour-text-color);font-size:var(--aah-tour-font-size)}.aah-tour__body img,.aah-tour__body video{max-width:100%}.aah-tour__footer{padding-top:var(--aah-tour-padding-primary);box-sizing:border-box;display:flex;justify-content:space-between}.aah-tour__content .aah-tour-indicators{display:inline-block;flex:1}.aah-tour__content .aah-tour-indicator{width:6px;height:6px;display:inline-block;border-radius:50%;background:var(--aah-color-info-light-9);margin-right:6px}.aah-tour__content .aah-tour-indicator.is-active{background:var(--aah-color-primary)}.aah-tour.aah-tour--primary{--aah-tour-title-text-color: #fff;--aah-tour-text-color: #fff;--aah-tour-bg-color: var(--aah-color-primary);--aah-tour-close-color: #fff}.aah-tour.aah-tour--primary .aah-tour__closebtn:focus .aah-tour__close,.aah-tour.aah-tour--primary .aah-tour__closebtn:hover .aah-tour__close{color:var(--aah-tour-title-text-color)}.aah-tour.aah-tour--primary .aah-button--default{color:var(--aah-color-primary);border-color:var(--aah-color-primary);background:#fff}.aah-tour.aah-tour--primary .aah-button--primary{border-color:#fff}.aah-tour.aah-tour--primary .aah-tour-indicator{background:#ffffff26}.aah-tour.aah-tour--primary .aah-tour-indicator.is-active{background:#fff}.aah-tour-parent--hidden{overflow:hidden}.aah-anchor{--aah-anchor-bg-color: var(--aah-bg-color);--aah-anchor-padding-indent: 14px;--aah-anchor-line-height: 22px;--aah-anchor-font-size: 12px;--aah-anchor-color: var(--aah-text-color-secondary);--aah-anchor-active-color: var(--aah-color-primary);--aah-anchor-marker-bg-color: var(--aah-color-primary);position:relative;background-color:var(--aah-anchor-bg-color)}.aah-anchor__marker{position:absolute;background-color:var(--aah-anchor-marker-bg-color);border-radius:4px;opacity:0;z-index:0}.aah-anchor.aah-anchor--vertical .aah-anchor__marker{width:4px;height:14px;top:8px;left:0;transition:top .25s ease-in-out,opacity .25s}.aah-anchor.aah-anchor--vertical .aah-anchor__list{padding-left:var(--aah-anchor-padding-indent)}.aah-anchor.aah-anchor--vertical.aah-anchor--underline:before{position:absolute;left:0;width:2px;height:100%;background-color:#0505050f;content:""}.aah-anchor.aah-anchor--vertical.aah-anchor--underline .aah-anchor__marker{width:2px;border-radius:unset}.aah-anchor.aah-anchor--horizontal .aah-anchor__marker{height:2px;width:20px;bottom:0;transition:left .25s ease-in-out,opacity .25s,width .25s}.aah-anchor.aah-anchor--horizontal .aah-anchor__list{display:flex;padding-bottom:4px}.aah-anchor.aah-anchor--horizontal .aah-anchor__list .aah-anchor__item{padding-left:16px}.aah-anchor.aah-anchor--horizontal .aah-anchor__list .aah-anchor__item:first-child{padding-left:0}.aah-anchor.aah-anchor--horizontal.aah-anchor--underline:before{position:absolute;bottom:0;width:100%;height:2px;background-color:#0505050f;content:""}.aah-anchor.aah-anchor--horizontal.aah-anchor--underline .aah-anchor__marker{height:2px;border-radius:unset}.aah-anchor__item{overflow:hidden;display:flex;flex-direction:column}.aah-anchor__link{font-size:var(--aah-anchor-font-size);line-height:var(--aah-anchor-line-height);padding:4px 0;color:var(--aah-anchor-color);transition:color var(--aah-transition-duration);white-space:nowrap;text-decoration:none;text-overflow:ellipsis;overflow:hidden;max-width:100%;outline:none;cursor:pointer}.aah-anchor__link:hover,.aah-anchor__link:focus{color:var(--aah-anchor-color)}.aah-anchor__link.is-active{color:var(--aah-anchor-active-color)}.aah-anchor .aah-anchor__list .aah-anchor__item a{display:inline-block}html.dark{color-scheme:dark;--aah-color-primary: #409eff;--aah-color-primary-light-3: #3375b9;--aah-color-primary-light-5: #2a598a;--aah-color-primary-light-7: #213d5b;--aah-color-primary-light-8: #1d3043;--aah-color-primary-light-9: #18222c;--aah-color-primary-dark-2: #66b1ff;--aah-color-success: #67c23a;--aah-color-success-light-3: #4e8e2f;--aah-color-success-light-5: #3e6b27;--aah-color-success-light-7: #2d481f;--aah-color-success-light-8: #25371c;--aah-color-success-light-9: #1c2518;--aah-color-success-dark-2: #85ce61;--aah-color-warning: #e6a23c;--aah-color-warning-light-3: #a77730;--aah-color-warning-light-5: #7d5b28;--aah-color-warning-light-7: #533f20;--aah-color-warning-light-8: #3e301c;--aah-color-warning-light-9: #292218;--aah-color-warning-dark-2: #ebb563;--aah-color-danger: #f56c6c;--aah-color-danger-light-3: #b25252;--aah-color-danger-light-5: #854040;--aah-color-danger-light-7: #582e2e;--aah-color-danger-light-8: #412626;--aah-color-danger-light-9: #2b1d1d;--aah-color-danger-dark-2: #f78989;--aah-color-error: #f56c6c;--aah-color-error-light-3: #b25252;--aah-color-error-light-5: #854040;--aah-color-error-light-7: #582e2e;--aah-color-error-light-8: #412626;--aah-color-error-light-9: #2b1d1d;--aah-color-error-dark-2: #f78989;--aah-color-info: #909399;--aah-color-info-light-3: #6b6d71;--aah-color-info-light-5: #525457;--aah-color-info-light-7: #393a3c;--aah-color-info-light-8: #2d2d2f;--aah-color-info-light-9: #202121;--aah-color-info-dark-2: #a6a9ad;--aah-box-shadow: 0px 12px 32px 4px rgba(0, 0, 0, .36), 0px 8px 20px rgba(0, 0, 0, .72);--aah-box-shadow-light: 0px 0px 12px rgba(0, 0, 0, .72);--aah-box-shadow-lighter: 0px 0px 6px rgba(0, 0, 0, .72);--aah-box-shadow-dark: 0px 16px 48px 16px rgba(0, 0, 0, .72), 0px 12px 32px #000000, 0px 8px 16px -8px #000000;--aah-bg-color-page: #0a0a0a;--aah-bg-color: #141414;--aah-bg-color-overlay: #1d1e1f;--aah-text-color-primary: #E5EAF3;--aah-text-color-regular: #CFD3DC;--aah-text-color-secondary: #A3A6AD;--aah-text-color-placeholder: #8D9095;--aah-text-color-disabled: #6C6E72;--aah-border-color-darker: #636466;--aah-border-color-dark: #58585B;--aah-border-color: #4C4D4F;--aah-border-color-light: #414243;--aah-border-color-lighter: #363637;--aah-border-color-extra-light: #2B2B2C;--aah-fill-color-darker: #424243;--aah-fill-color-dark: #39393A;--aah-fill-color: #303030;--aah-fill-color-light: #262727;--aah-fill-color-lighter: #1D1D1D;--aah-fill-color-extra-light: #191919;--aah-fill-color-blank: transparent;--aah-mask-color: rgba(0, 0, 0, .8);--aah-mask-color-extra-light: rgba(0, 0, 0, .3)}html.dark .aah-button{--aah-button-disabled-text-color: rgba(255, 255, 255, .5)}html.dark .aah-card{--aah-card-bg-color: var(--aah-bg-color-overlay)}html.dark .aah-empty{--aah-empty-fill-color-0: var(--aah-color-black);--aah-empty-fill-color-1: #4b4b52;--aah-empty-fill-color-2: #36383d;--aah-empty-fill-color-3: #1e1e20;--aah-empty-fill-color-4: #262629;--aah-empty-fill-color-5: #202124;--aah-empty-fill-color-6: #212224;--aah-empty-fill-color-7: #1b1c1f;--aah-empty-fill-color-8: #1c1d1f;--aah-empty-fill-color-9: #18181a}*,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.visible{visibility:visible}.fixed{position:fixed}.m-2{margin:.5rem}.m-3{margin:.75rem}[m-2~="default:"]:default{margin:.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mr-10{margin-right:2.5rem}.ms{margin-inline-start:1rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.inline-block{display:inline-block}.hidden{display:none}.w-\\[90\\%\\]{width:90%}.flex{display:flex}.flex-shrink{flex-shrink:1}.flex-grow{flex-grow:1}.table{display:table}.items-center{align-items:center}.justify-right{justify-content:right}.space-x-2>:not([hidden])~:not([hidden]){--un-space-x-reverse:0;margin-left:calc(.5rem * calc(1 - var(--un-space-x-reverse)));margin-right:calc(.5rem * var(--un-space-x-reverse))}.b,.border{border-width:1px}[p~="2"]{padding:.5rem}[align~=middle]{vertical-align:middle}.outline{outline-style:solid} `);
(function (vue, ElementPlus, DOMPurify, $, markdownit, hljs) {
'use strict';
var _GM_deleteValue = /* @__PURE__ */ (() => typeof GM_deleteValue != "undefined" ? GM_deleteValue : void 0)();
var _GM_getResourceText = /* @__PURE__ */ (() => typeof GM_getResourceText != "undefined" ? GM_getResourceText : void 0)();
var _GM_getValue = /* @__PURE__ */ (() => typeof GM_getValue != "undefined" ? GM_getValue : void 0)();
var _GM_info = /* @__PURE__ */ (() => typeof GM_info != "undefined" ? GM_info : void 0)();
var _GM_listValues = /* @__PURE__ */ (() => typeof GM_listValues != "undefined" ? GM_listValues : void 0)();
var _GM_setValue = /* @__PURE__ */ (() => typeof GM_setValue != "undefined" ? GM_setValue : void 0)();
var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)();
var _unsafeWindow = /* @__PURE__ */ (() => typeof unsafeWindow != "undefined" ? unsafeWindow : void 0)();
var isVue2 = false;
/*!
* pinia v2.1.7
* (c) 2023 Eduardo San Martin Morote
* @license MIT
*/
let activePinia;
const setActivePinia = (pinia) => activePinia = pinia;
const piniaSymbol = (
/* istanbul ignore next */
Symbol()
);
function isPlainObject(o) {
return o && typeof o === "object" && Object.prototype.toString.call(o) === "[object Object]" && typeof o.toJSON !== "function";
}
var MutationType;
(function(MutationType2) {
MutationType2["direct"] = "direct";
MutationType2["patchObject"] = "patch object";
MutationType2["patchFunction"] = "patch function";
})(MutationType || (MutationType = {}));
function createPinia() {
const scope = vue.effectScope(true);
const state = scope.run(() => vue.ref({}));
let _p = [];
let toBeInstalled = [];
const pinia = vue.markRaw({
install(app) {
setActivePinia(pinia);
{
pinia._a = app;
app.provide(piniaSymbol, pinia);
app.config.globalProperties.$pinia = pinia;
toBeInstalled.forEach((plugin) => _p.push(plugin));
toBeInstalled = [];
}
},
use(plugin) {
if (!this._a && !isVue2) {
toBeInstalled.push(plugin);
} else {
_p.push(plugin);
}
return this;
},
_p,
// it's actually undefined here
// @ts-expect-error
_a: null,
_e: scope,
_s: /* @__PURE__ */ new Map(),
state
});
return pinia;
}
const noop = () => {
};
function addSubscription(subscriptions, callback, detached, onCleanup = noop) {
subscriptions.push(callback);
const removeSubscription = () => {
const idx = subscriptions.indexOf(callback);
if (idx > -1) {
subscriptions.splice(idx, 1);
onCleanup();
}
};
if (!detached && vue.getCurrentScope()) {
vue.onScopeDispose(removeSubscription);
}
return removeSubscription;
}
function triggerSubscriptions(subscriptions, ...args) {
subscriptions.slice().forEach((callback) => {
callback(...args);
});
}
const fallbackRunWithContext = (fn) => fn();
function mergeReactiveObjects(target, patchToApply) {
if (target instanceof Map && patchToApply instanceof Map) {
patchToApply.forEach((value, key2) => target.set(key2, value));
}
if (target instanceof Set && patchToApply instanceof Set) {
patchToApply.forEach(target.add, target);
}
for (const key2 in patchToApply) {
if (!patchToApply.hasOwnProperty(key2))
continue;
const subPatch = patchToApply[key2];
const targetValue = target[key2];
if (isPlainObject(targetValue) && isPlainObject(subPatch) && target.hasOwnProperty(key2) && !vue.isRef(subPatch) && !vue.isReactive(subPatch)) {
target[key2] = mergeReactiveObjects(targetValue, subPatch);
} else {
target[key2] = subPatch;
}
}
return target;
}
const skipHydrateSymbol = (
/* istanbul ignore next */
Symbol()
);
function shouldHydrate(obj) {
return !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);
}
const { assign } = Object;
function isComputed(o) {
return !!(vue.isRef(o) && o.effect);
}
function createOptionsStore(id, options, pinia, hot) {
const { state, actions, getters } = options;
const initialState = pinia.state.value[id];
let store;
function setup() {
if (!initialState && true) {
{
pinia.state.value[id] = state ? state() : {};
}
}
const localState = vue.toRefs(pinia.state.value[id]);
return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {
computedGetters[name] = vue.markRaw(vue.computed(() => {
setActivePinia(pinia);
const store2 = pinia._s.get(id);
return getters[name].call(store2, store2);
}));
return computedGetters;
}, {}));
}
store = createSetupStore(id, setup, options, pinia, hot, true);
return store;
}
function createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {
let scope;
const optionsForPlugin = assign({ actions: {} }, options);
const $subscribeOptions = {
deep: true
// flush: 'post',
};
let isListening;
let isSyncListening;
let subscriptions = [];
let actionSubscriptions = [];
let debuggerEvents;
const initialState = pinia.state.value[$id];
if (!isOptionsStore && !initialState && true) {
{
pinia.state.value[$id] = {};
}
}
vue.ref({});
let activeListener;
function $patch(partialStateOrMutator) {
let subscriptionMutation;
isListening = isSyncListening = false;
if (typeof partialStateOrMutator === "function") {
partialStateOrMutator(pinia.state.value[$id]);
subscriptionMutation = {
type: MutationType.patchFunction,
storeId: $id,
events: debuggerEvents
};
} else {
mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);
subscriptionMutation = {
type: MutationType.patchObject,
payload: partialStateOrMutator,
storeId: $id,
events: debuggerEvents
};
}
const myListenerId = activeListener = Symbol();
vue.nextTick().then(() => {
if (activeListener === myListenerId) {
isListening = true;
}
});
isSyncListening = true;
triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);
}
const $reset = isOptionsStore ? function $reset2() {
const { state } = options;
const newState = state ? state() : {};
this.$patch(($state) => {
assign($state, newState);
});
} : (
/* istanbul ignore next */
noop
);
function $dispose() {
scope.stop();
subscriptions = [];
actionSubscriptions = [];
pinia._s.delete($id);
}
function wrapAction(name, action) {
return function() {
setActivePinia(pinia);
const args = Array.from(arguments);
const afterCallbackList = [];
const onErrorCallbackList = [];
function after(callback) {
afterCallbackList.push(callback);
}
function onError(callback) {
onErrorCallbackList.push(callback);
}
triggerSubscriptions(actionSubscriptions, {
args,
name,
store,
after,
onError
});
let ret;
try {
ret = action.apply(this && this.$id === $id ? this : store, args);
} catch (error) {
triggerSubscriptions(onErrorCallbackList, error);
throw error;
}
if (ret instanceof Promise) {
return ret.then((value) => {
triggerSubscriptions(afterCallbackList, value);
return value;
}).catch((error) => {
triggerSubscriptions(onErrorCallbackList, error);
return Promise.reject(error);
});
}
triggerSubscriptions(afterCallbackList, ret);
return ret;
};
}
const partialStore = {
_p: pinia,
// _s: scope,
$id,
$onAction: addSubscription.bind(null, actionSubscriptions),
$patch,
$reset,
$subscribe(callback, options2 = {}) {
const removeSubscription = addSubscription(subscriptions, callback, options2.detached, () => stopWatcher());
const stopWatcher = scope.run(() => vue.watch(() => pinia.state.value[$id], (state) => {
if (options2.flush === "sync" ? isSyncListening : isListening) {
callback({
storeId: $id,
type: MutationType.direct,
events: debuggerEvents
}, state);
}
}, assign({}, $subscribeOptions, options2)));
return removeSubscription;
},
$dispose
};
const store = vue.reactive(partialStore);
pinia._s.set($id, store);
const runWithContext = pinia._a && pinia._a.runWithContext || fallbackRunWithContext;
const setupStore = runWithContext(() => pinia._e.run(() => (scope = vue.effectScope()).run(setup)));
for (const key2 in setupStore) {
const prop = setupStore[key2];
if (vue.isRef(prop) && !isComputed(prop) || vue.isReactive(prop)) {
if (!isOptionsStore) {
if (initialState && shouldHydrate(prop)) {
if (vue.isRef(prop)) {
prop.value = initialState[key2];
} else {
mergeReactiveObjects(prop, initialState[key2]);
}
}
{
pinia.state.value[$id][key2] = prop;
}
}
} else if (typeof prop === "function") {
const actionValue = wrapAction(key2, prop);
{
setupStore[key2] = actionValue;
}
optionsForPlugin.actions[key2] = prop;
} else
;
}
{
assign(store, setupStore);
assign(vue.toRaw(store), setupStore);
}
Object.defineProperty(store, "$state", {
get: () => pinia.state.value[$id],
set: (state) => {
$patch(($state) => {
assign($state, state);
});
}
});
pinia._p.forEach((extender) => {
{
assign(store, scope.run(() => extender({
store,
app: pinia._a,
pinia,
options: optionsForPlugin
})));
}
});
if (initialState && isOptionsStore && options.hydrate) {
options.hydrate(store.$state, initialState);
}
isListening = true;
isSyncListening = true;
return store;
}
function defineStore(idOrOptions, setup, setupOptions) {
let id;
let options;
const isSetupStore = typeof setup === "function";
if (typeof idOrOptions === "string") {
id = idOrOptions;
options = isSetupStore ? setupOptions : setup;
} else {
options = idOrOptions;
id = idOrOptions.id;
}
function useStore(pinia, hot) {
const hasContext = vue.hasInjectionContext();
pinia = // in test mode, ignore the argument provided as we can always retrieve a
// pinia instance with getActivePinia()
pinia || (hasContext ? vue.inject(piniaSymbol, null) : null);
if (pinia)
setActivePinia(pinia);
pinia = activePinia;
if (!pinia._s.has(id)) {
if (isSetupStore) {
createSetupStore(id, setup, options, pinia);
} else {
createOptionsStore(id, options, pinia);
}
}
const store = pinia._s.get(id);
return store;
}
useStore.$id = id;
return useStore;
}
const prefix = "AiAsk_";
class Cache {
/**
* 封装缓存
* @param key 缓存key
* @param value 缓存值
* @param expire 过期时间
* @returns 缓存值
*/
static set(key2, value, expire = 0) {
key2 = prefix + key2;
const cacheValue = { value, expire: expire > 0 ? Date.now() + expire * 1e3 : 0 };
_GM_setValue(key2, cacheValue);
return _GM_getValue(key2);
}
/**
* 获取缓存
* @param key 缓存key
* @param defaultVal 默认值
* @returns 缓存值
*/
static get(key2, defaultVal = null) {
key2 = prefix + key2;
const cache = _GM_getValue(key2);
if (cache && cache.expire && cache.expire < Date.now()) {
_GM_deleteValue(key2);
return defaultVal;
}
return cache ? cache.value : defaultVal;
}
/**
* 前缀匹配
* @param key 缓存key
* @returns 匹配的键数组
*/
static match(key2) {
key2 = prefix + key2;
return _GM_listValues().filter((k) => k.startsWith(key2));
}
/**
* 前缀匹配,获取值
* @param key 缓存key
* @returns 匹配的值数组
*/
static matchGet(key2) {
const fullKey = prefix + key2;
let queslist = _GM_listValues().filter((k) => k.startsWith(fullKey)).map((k) => {
const value = _GM_getValue(k, { value: null, expire: 0 }).value;
if (value)
value.key = k.replace(prefix, "");
return value;
}).filter((value) => value !== null);
queslist.sort((a, b) => (b.createTime || 0) - (a.createTime || 0));
return queslist;
}
/**
* 删除缓存
* @param key 缓存key
*/
static remove(key2) {
_GM_deleteValue(prefix + key2);
}
/**
* 清空缓存
*/
static clear() {
_GM_listValues().filter((key2) => key2.startsWith(prefix)).forEach(_GM_deleteValue);
}
/**
* 前缀匹配删除
* @param key 缓存key
*/
static matchRemove(key2) {
key2 = prefix + key2;
_GM_listValues().filter((k) => k.startsWith(key2)).forEach(_GM_deleteValue);
}
}
var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
function getDefaultExportFromCjs(x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
}
function getAugmentedNamespace(n) {
if (n.__esModule)
return n;
var f = n.default;
if (typeof f == "function") {
var a = function a2() {
if (this instanceof a2) {
return Reflect.construct(f, arguments, this.constructor);
}
return f.apply(this, arguments);
};
a.prototype = f.prototype;
} else
a = {};
Object.defineProperty(a, "__esModule", { value: true });
Object.keys(n).forEach(function(k) {
var d = Object.getOwnPropertyDescriptor(n, k);
Object.defineProperty(a, k, d.get ? d : {
enumerable: true,
get: function() {
return n[k];
}
});
});
return a;
}
var md5 = { exports: {} };
const __viteBrowserExternal = {};
const __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
default: __viteBrowserExternal
}, Symbol.toStringTag, { value: "Module" }));
const require$$1 = /* @__PURE__ */ getAugmentedNamespace(__viteBrowserExternal$1);
/**
* [js-md5]{@link https://github.com/emn178/js-md5}
*
* @namespace md5
* @version 0.8.3
* @author Chen, Yi-Cyuan [emn178@gmail.com]
* @copyright Chen, Yi-Cyuan 2014-2023
* @license MIT
*/
(function(module) {
(function() {
var INPUT_ERROR = "input is invalid type";
var FINALIZE_ERROR = "finalize already called";
var WINDOW = typeof window === "object";
var root = WINDOW ? window : {};
if (root.JS_MD5_NO_WINDOW) {
WINDOW = false;
}
var WEB_WORKER = !WINDOW && typeof self === "object";
var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;
if (NODE_JS) {
root = commonjsGlobal;
} else if (WEB_WORKER) {
root = self;
}
var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && true && module.exports;
var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";
var HEX_CHARS = "0123456789abcdef".split("");
var EXTRA = [128, 32768, 8388608, -2147483648];
var SHIFT = [0, 8, 16, 24];
var OUTPUT_TYPES = ["hex", "array", "digest", "buffer", "arrayBuffer", "base64"];
var BASE64_ENCODE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
var blocks = [], buffer8;
if (ARRAY_BUFFER) {
var buffer = new ArrayBuffer(68);
buffer8 = new Uint8Array(buffer);
blocks = new Uint32Array(buffer);
}
var isArray = Array.isArray;
if (root.JS_MD5_NO_NODE_JS || !isArray) {
isArray = function(obj) {
return Object.prototype.toString.call(obj) === "[object Array]";
};
}
var isView = ArrayBuffer.isView;
if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !isView)) {
isView = function(obj) {
return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;
};
}
var formatMessage = function(message) {
var type = typeof message;
if (type === "string") {
return [message, true];
}
if (type !== "object" || message === null) {
throw new Error(INPUT_ERROR);
}
if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
return [new Uint8Array(message), false];
}
if (!isArray(message) && !isView(message)) {
throw new Error(INPUT_ERROR);
}
return [message, false];
};
var createOutputMethod = function(outputType) {
return function(message) {
return new Md5(true).update(message)[outputType]();
};
};
var createMethod = function() {
var method = createOutputMethod("hex");
if (NODE_JS) {
method = nodeWrap(method);
}
method.create = function() {
return new Md5();
};
method.update = function(message) {
return method.create().update(message);
};
for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
var type = OUTPUT_TYPES[i];
method[type] = createOutputMethod(type);
}
return method;
};
var nodeWrap = function(method) {
var crypto = require$$1;
var Buffer = require$$1.Buffer;
var bufferFrom;
if (Buffer.from && !root.JS_MD5_NO_BUFFER_FROM) {
bufferFrom = Buffer.from;
} else {
bufferFrom = function(message) {
return new Buffer(message);
};
}
var nodeMethod = function(message) {
if (typeof message === "string") {
return crypto.createHash("md5").update(message, "utf8").digest("hex");
} else {
if (message === null || message === void 0) {
throw new Error(INPUT_ERROR);
} else if (message.constructor === ArrayBuffer) {
message = new Uint8Array(message);
}
}
if (isArray(message) || isView(message) || message.constructor === Buffer) {
return crypto.createHash("md5").update(bufferFrom(message)).digest("hex");
} else {
return method(message);
}
};
return nodeMethod;
};
var createHmacOutputMethod = function(outputType) {
return function(key2, message) {
return new HmacMd5(key2, true).update(message)[outputType]();
};
};
var createHmacMethod = function() {
var method = createHmacOutputMethod("hex");
method.create = function(key2) {
return new HmacMd5(key2);
};
method.update = function(key2, message) {
return method.create(key2).update(message);
};
for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
var type = OUTPUT_TYPES[i];
method[type] = createHmacOutputMethod(type);
}
return method;
};
function Md5(sharedMemory) {
if (sharedMemory) {
blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
this.blocks = blocks;
this.buffer8 = buffer8;
} else {
if (ARRAY_BUFFER) {
var buffer2 = new ArrayBuffer(68);
this.buffer8 = new Uint8Array(buffer2);
this.blocks = new Uint32Array(buffer2);
} else {
this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
}
}
this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;
this.finalized = this.hashed = false;
this.first = true;
}
Md5.prototype.update = function(message) {
if (this.finalized) {
throw new Error(FINALIZE_ERROR);
}
var result = formatMessage(message);
message = result[0];
var isString = result[1];
var code, index = 0, i, length = message.length, blocks2 = this.blocks;
var buffer82 = this.buffer8;
while (index < length) {
if (this.hashed) {
this.hashed = false;
blocks2[0] = blocks2[16];
blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;
}
if (isString) {
if (ARRAY_BUFFER) {
for (i = this.start; index < length && i < 64; ++index) {
code = message.charCodeAt(index);
if (code < 128) {
buffer82[i++] = code;
} else if (code < 2048) {
buffer82[i++] = 192 | code >>> 6;
buffer82[i++] = 128 | code & 63;
} else if (code < 55296 || code >= 57344) {
buffer82[i++] = 224 | code >>> 12;
buffer82[i++] = 128 | code >>> 6 & 63;
buffer82[i++] = 128 | code & 63;
} else {
code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);
buffer82[i++] = 240 | code >>> 18;
buffer82[i++] = 128 | code >>> 12 & 63;
buffer82[i++] = 128 | code >>> 6 & 63;
buffer82[i++] = 128 | code & 63;
}
}
} else {
for (i = this.start; index < length && i < 64; ++index) {
code = message.charCodeAt(index);
if (code < 128) {
blocks2[i >>> 2] |= code << SHIFT[i++ & 3];
} else if (code < 2048) {
blocks2[i >>> 2] |= (192 | code >>> 6) << SHIFT[i++ & 3];
blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
} else if (code < 55296 || code >= 57344) {
blocks2[i >>> 2] |= (224 | code >>> 12) << SHIFT[i++ & 3];
blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];
blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
} else {
code = 65536 + ((code & 1023) << 10 | message.charCodeAt(++index) & 1023);
blocks2[i >>> 2] |= (240 | code >>> 18) << SHIFT[i++ & 3];
blocks2[i >>> 2] |= (128 | code >>> 12 & 63) << SHIFT[i++ & 3];
blocks2[i >>> 2] |= (128 | code >>> 6 & 63) << SHIFT[i++ & 3];
blocks2[i >>> 2] |= (128 | code & 63) << SHIFT[i++ & 3];
}
}
}
} else {
if (ARRAY_BUFFER) {
for (i = this.start; index < length && i < 64; ++index) {
buffer82[i++] = message[index];
}
} else {
for (i = this.start; index < length && i < 64; ++index) {
blocks2[i >>> 2] |= message[index] << SHIFT[i++ & 3];
}
}
}
this.lastByteIndex = i;
this.bytes += i - this.start;
if (i >= 64) {
this.start = i - 64;
this.hash();
this.hashed = true;
} else {
this.start = i;
}
}
if (this.bytes > 4294967295) {
this.hBytes += this.bytes / 4294967296 << 0;
this.bytes = this.bytes % 4294967296;
}
return this;
};
Md5.prototype.finalize = function() {
if (this.finalized) {
return;
}
this.finalized = true;
var blocks2 = this.blocks, i = this.lastByteIndex;
blocks2[i >>> 2] |= EXTRA[i & 3];
if (i >= 56) {
if (!this.hashed) {
this.hash();
}
blocks2[0] = blocks2[16];
blocks2[16] = blocks2[1] = blocks2[2] = blocks2[3] = blocks2[4] = blocks2[5] = blocks2[6] = blocks2[7] = blocks2[8] = blocks2[9] = blocks2[10] = blocks2[11] = blocks2[12] = blocks2[13] = blocks2[14] = blocks2[15] = 0;
}
blocks2[14] = this.bytes << 3;
blocks2[15] = this.hBytes << 3 | this.bytes >>> 29;
this.hash();
};
Md5.prototype.hash = function() {
var a, b, c, d, bc, da, blocks2 = this.blocks;
if (this.first) {
a = blocks2[0] - 680876937;
a = (a << 7 | a >>> 25) - 271733879 << 0;
d = (-1732584194 ^ a & 2004318071) + blocks2[1] - 117830708;
d = (d << 12 | d >>> 20) + a << 0;
c = (-271733879 ^ d & (a ^ -271733879)) + blocks2[2] - 1126478375;
c = (c << 17 | c >>> 15) + d << 0;
b = (a ^ c & (d ^ a)) + blocks2[3] - 1316259209;
b = (b << 22 | b >>> 10) + c << 0;
} else {
a = this.h0;
b = this.h1;
c = this.h2;
d = this.h3;
a += (d ^ b & (c ^ d)) + blocks2[0] - 680876936;
a = (a << 7 | a >>> 25) + b << 0;
d += (c ^ a & (b ^ c)) + blocks2[1] - 389564586;
d = (d << 12 | d >>> 20) + a << 0;
c += (b ^ d & (a ^ b)) + blocks2[2] + 606105819;
c = (c << 17 | c >>> 15) + d << 0;
b += (a ^ c & (d ^ a)) + blocks2[3] - 1044525330;
b = (b << 22 | b >>> 10) + c << 0;
}
a += (d ^ b & (c ^ d)) + blocks2[4] - 176418897;
a = (a << 7 | a >>> 25) + b << 0;
d += (c ^ a & (b ^ c)) + blocks2[5] + 1200080426;
d = (d << 12 | d >>> 20) + a << 0;
c += (b ^ d & (a ^ b)) + blocks2[6] - 1473231341;
c = (c << 17 | c >>> 15) + d << 0;
b += (a ^ c & (d ^ a)) + blocks2[7] - 45705983;
b = (b << 22 | b >>> 10) + c << 0;
a += (d ^ b & (c ^ d)) + blocks2[8] + 1770035416;
a = (a << 7 | a >>> 25) + b << 0;
d += (c ^ a & (b ^ c)) + blocks2[9] - 1958414417;
d = (d << 12 | d >>> 20) + a << 0;
c += (b ^ d & (a ^ b)) + blocks2[10] - 42063;
c = (c << 17 | c >>> 15) + d << 0;
b += (a ^ c & (d ^ a)) + blocks2[11] - 1990404162;
b = (b << 22 | b >>> 10) + c << 0;
a += (d ^ b & (c ^ d)) + blocks2[12] + 1804603682;
a = (a << 7 | a >>> 25) + b << 0;
d += (c ^ a & (b ^ c)) + blocks2[13] - 40341101;
d = (d << 12 | d >>> 20) + a << 0;
c += (b ^ d & (a ^ b)) + blocks2[14] - 1502002290;
c = (c << 17 | c >>> 15) + d << 0;
b += (a ^ c & (d ^ a)) + blocks2[15] + 1236535329;
b = (b << 22 | b >>> 10) + c << 0;
a += (c ^ d & (b ^ c)) + blocks2[1] - 165796510;
a = (a << 5 | a >>> 27) + b << 0;
d += (b ^ c & (a ^ b)) + blocks2[6] - 1069501632;
d = (d << 9 | d >>> 23) + a << 0;
c += (a ^ b & (d ^ a)) + blocks2[11] + 643717713;
c = (c << 14 | c >>> 18) + d << 0;
b += (d ^ a & (c ^ d)) + blocks2[0] - 373897302;
b = (b << 20 | b >>> 12) + c << 0;
a += (c ^ d & (b ^ c)) + blocks2[5] - 701558691;
a = (a << 5 | a >>> 27) + b << 0;
d += (b ^ c & (a ^ b)) + blocks2[10] + 38016083;
d = (d << 9 | d >>> 23) + a << 0;
c += (a ^ b & (d ^ a)) + blocks2[15] - 660478335;
c = (c << 14 | c >>> 18) + d << 0;
b += (d ^ a & (c ^ d)) + blocks2[4] - 405537848;
b = (b << 20 | b >>> 12) + c << 0;
a += (c ^ d & (b ^ c)) + blocks2[9] + 568446438;
a = (a << 5 | a >>> 27) + b << 0;
d += (b ^ c & (a ^ b)) + blocks2[14] - 1019803690;
d = (d << 9 | d >>> 23) + a << 0;
c += (a ^ b & (d ^ a)) + blocks2[3] - 187363961;
c = (c << 14 | c >>> 18) + d << 0;
b += (d ^ a & (c ^ d)) + blocks2[8] + 1163531501;
b = (b << 20 | b >>> 12) + c << 0;
a += (c ^ d & (b ^ c)) + blocks2[13] - 1444681467;
a = (a << 5 | a >>> 27) + b << 0;
d += (b ^ c & (a ^ b)) + blocks2[2] - 51403784;
d = (d << 9 | d >>> 23) + a << 0;
c += (a ^ b & (d ^ a)) + blocks2[7] + 1735328473;
c = (c << 14 | c >>> 18) + d << 0;
b += (d ^ a & (c ^ d)) + blocks2[12] - 1926607734;
b = (b << 20 | b >>> 12) + c << 0;
bc = b ^ c;
a += (bc ^ d) + blocks2[5] - 378558;
a = (a << 4 | a >>> 28) + b << 0;
d += (bc ^ a) + blocks2[8] - 2022574463;
d = (d << 11 | d >>> 21) + a << 0;
da = d ^ a;
c += (da ^ b) + blocks2[11] + 1839030562;
c = (c << 16 | c >>> 16) + d << 0;
b += (da ^ c) + blocks2[14] - 35309556;
b = (b << 23 | b >>> 9) + c << 0;
bc = b ^ c;
a += (bc ^ d) + blocks2[1] - 1530992060;
a = (a << 4 | a >>> 28) + b << 0;
d += (bc ^ a) + blocks2[4] + 1272893353;
d = (d << 11 | d >>> 21) + a << 0;
da = d ^ a;
c += (da ^ b) + blocks2[7] - 155497632;
c = (c << 16 | c >>> 16) + d << 0;
b += (da ^ c) + blocks2[10] - 1094730640;
b = (b << 23 | b >>> 9) + c << 0;
bc = b ^ c;
a += (bc ^ d) + blocks2[13] + 681279174;
a = (a << 4 | a >>> 28) + b << 0;
d += (bc ^ a) + blocks2[0] - 358537222;
d = (d << 11 | d >>> 21) + a << 0;
da = d ^ a;
c += (da ^ b) + blocks2[3] - 722521979;
c = (c << 16 | c >>> 16) + d << 0;
b += (da ^ c) + blocks2[6] + 76029189;
b = (b << 23 | b >>> 9) + c << 0;
bc = b ^ c;
a += (bc ^ d) + blocks2[9] - 640364487;
a = (a << 4 | a >>> 28) + b << 0;
d += (bc ^ a) + blocks2[12] - 421815835;
d = (d << 11 | d >>> 21) + a << 0;
da = d ^ a;
c += (da ^ b) + blocks2[15] + 530742520;
c = (c << 16 | c >>> 16) + d << 0;
b += (da ^ c) + blocks2[2] - 995338651;
b = (b << 23 | b >>> 9) + c << 0;
a += (c ^ (b | ~d)) + blocks2[0] - 198630844;
a = (a << 6 | a >>> 26) + b << 0;
d += (b ^ (a | ~c)) + blocks2[7] + 1126891415;
d = (d << 10 | d >>> 22) + a << 0;
c += (a ^ (d | ~b)) + blocks2[14] - 1416354905;
c = (c << 15 | c >>> 17) + d << 0;
b += (d ^ (c | ~a)) + blocks2[5] - 57434055;
b = (b << 21 | b >>> 11) + c << 0;
a += (c ^ (b | ~d)) + blocks2[12] + 1700485571;
a = (a << 6 | a >>> 26) + b << 0;
d += (b ^ (a | ~c)) + blocks2[3] - 1894986606;
d = (d << 10 | d >>> 22) + a << 0;
c += (a ^ (d | ~b)) + blocks2[10] - 1051523;
c = (c << 15 | c >>> 17) + d << 0;
b += (d ^ (c | ~a)) + blocks2[1] - 2054922799;
b = (b << 21 | b >>> 11) + c << 0;
a += (c ^ (b | ~d)) + blocks2[8] + 1873313359;
a = (a << 6 | a >>> 26) + b << 0;
d += (b ^ (a | ~c)) + blocks2[15] - 30611744;
d = (d << 10 | d >>> 22) + a << 0;
c += (a ^ (d | ~b)) + blocks2[6] - 1560198380;
c = (c << 15 | c >>> 17) + d << 0;
b += (d ^ (c | ~a)) + blocks2[13] + 1309151649;
b = (b << 21 | b >>> 11) + c << 0;
a += (c ^ (b | ~d)) + blocks2[4] - 145523070;
a = (a << 6 | a >>> 26) + b << 0;
d += (b ^ (a | ~c)) + blocks2[11] - 1120210379;
d = (d << 10 | d >>> 22) + a << 0;
c += (a ^ (d | ~b)) + blocks2[2] + 718787259;
c = (c << 15 | c >>> 17) + d << 0;
b += (d ^ (c | ~a)) + blocks2[9] - 343485551;
b = (b << 21 | b >>> 11) + c << 0;
if (this.first) {
this.h0 = a + 1732584193 << 0;
this.h1 = b - 271733879 << 0;
this.h2 = c - 1732584194 << 0;
this.h3 = d + 271733878 << 0;
this.first = false;
} else {
this.h0 = this.h0 + a << 0;
this.h1 = this.h1 + b << 0;
this.h2 = this.h2 + c << 0;
this.h3 = this.h3 + d << 0;
}
};
Md5.prototype.hex = function() {
this.finalize();
var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
return HEX_CHARS[h0 >>> 4 & 15] + HEX_CHARS[h0 & 15] + HEX_CHARS[h0 >>> 12 & 15] + HEX_CHARS[h0 >>> 8 & 15] + HEX_CHARS[h0 >>> 20 & 15] + HEX_CHARS[h0 >>> 16 & 15] + HEX_CHARS[h0 >>> 28 & 15] + HEX_CHARS[h0 >>> 24 & 15] + HEX_CHARS[h1 >>> 4 & 15] + HEX_CHARS[h1 & 15] + HEX_CHARS[h1 >>> 12 & 15] + HEX_CHARS[h1 >>> 8 & 15] + HEX_CHARS[h1 >>> 20 & 15] + HEX_CHARS[h1 >>> 16 & 15] + HEX_CHARS[h1 >>> 28 & 15] + HEX_CHARS[h1 >>> 24 & 15] + HEX_CHARS[h2 >>> 4 & 15] + HEX_CHARS[h2 & 15] + HEX_CHARS[h2 >>> 12 & 15] + HEX_CHARS[h2 >>> 8 & 15] + HEX_CHARS[h2 >>> 20 & 15] + HEX_CHARS[h2 >>> 16 & 15] + HEX_CHARS[h2 >>> 28 & 15] + HEX_CHARS[h2 >>> 24 & 15] + HEX_CHARS[h3 >>> 4 & 15] + HEX_CHARS[h3 & 15] + HEX_CHARS[h3 >>> 12 & 15] + HEX_CHARS[h3 >>> 8 & 15] + HEX_CHARS[h3 >>> 20 & 15] + HEX_CHARS[h3 >>> 16 & 15] + HEX_CHARS[h3 >>> 28 & 15] + HEX_CHARS[h3 >>> 24 & 15];
};
Md5.prototype.toString = Md5.prototype.hex;
Md5.prototype.digest = function() {
this.finalize();
var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;
return [
h0 & 255,
h0 >>> 8 & 255,
h0 >>> 16 & 255,
h0 >>> 24 & 255,
h1 & 255,
h1 >>> 8 & 255,
h1 >>> 16 & 255,
h1 >>> 24 & 255,
h2 & 255,
h2 >>> 8 & 255,
h2 >>> 16 & 255,
h2 >>> 24 & 255,
h3 & 255,
h3 >>> 8 & 255,
h3 >>> 16 & 255,
h3 >>> 24 & 255
];
};
Md5.prototype.array = Md5.prototype.digest;
Md5.prototype.arrayBuffer = function() {
this.finalize();
var buffer2 = new ArrayBuffer(16);
var blocks2 = new Uint32Array(buffer2);
blocks2[0] = this.h0;
blocks2[1] = this.h1;
blocks2[2] = this.h2;
blocks2[3] = this.h3;
return buffer2;
};
Md5.prototype.buffer = Md5.prototype.arrayBuffer;
Md5.prototype.base64 = function() {
var v1, v2, v3, base64Str = "", bytes = this.array();
for (var i = 0; i < 15; ) {
v1 = bytes[i++];
v2 = bytes[i++];
v3 = bytes[i++];
base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + BASE64_ENCODE_CHAR[v3 & 63];
}
v1 = bytes[i];
base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[v1 << 4 & 63] + "==";
return base64Str;
};
function HmacMd5(key2, sharedMemory) {
var i, result = formatMessage(key2);
key2 = result[0];
if (result[1]) {
var bytes = [], length = key2.length, index = 0, code;
for (i = 0; i < length; ++i) {
code = key2.charCodeAt(i);
if (code < 128) {
bytes[index++] = code;
} else if (code < 2048) {
bytes[index++] = 192 | code >>> 6;
bytes[index++] = 128 | code & 63;
} else if (code < 55296 || code >= 57344) {
bytes[index++] = 224 | code >>> 12;
bytes[index++] = 128 | code >>> 6 & 63;
bytes[index++] = 128 | code & 63;
} else {
code = 65536 + ((code & 1023) << 10 | key2.charCodeAt(++i) & 1023);
bytes[index++] = 240 | code >>> 18;
bytes[index++] = 128 | code >>> 12 & 63;
bytes[index++] = 128 | code >>> 6 & 63;
bytes[index++] = 128 | code & 63;
}
}
key2 = bytes;
}
if (key2.length > 64) {
key2 = new Md5(true).update(key2).array();
}
var oKeyPad = [], iKeyPad = [];
for (i = 0; i < 64; ++i) {
var b = key2[i] || 0;
oKeyPad[i] = 92 ^ b;
iKeyPad[i] = 54 ^ b;
}
Md5.call(this, sharedMemory);
this.update(iKeyPad);
this.oKeyPad = oKeyPad;
this.inner = true;
this.sharedMemory = sharedMemory;
}
HmacMd5.prototype = new Md5();
HmacMd5.prototype.finalize = function() {
Md5.prototype.finalize.call(this);
if (this.inner) {
this.inner = false;
var innerHash = this.array();
Md5.call(this, this.sharedMemory);
this.update(this.oKeyPad);
this.update(innerHash);
Md5.prototype.finalize.call(this);
}
};
var exports = createMethod();
exports.md5 = exports;
exports.md5.hmac = createHmacMethod();
if (COMMON_JS) {
module.exports = exports;
} else {
root.md5 = exports;
}
})();
})(md5);
var md5Exports = md5.exports;
const scriptInfo$1 = _GM_info;
const key = randomString(9) + "_";
function request(url, method, data = void 0, headers = void 0, timeout = 5e3) {
if (method === "GET" && data) {
url += `?${new URLSearchParams(data).toString()}`;
}
if (method === "POST") {
const t = get_t(data);
headers = {
...headers,
"aka": t
};
}
const finalHeaders = {
"User-Agent": _unsafeWindow.navigator.userAgent,
"Content-Type": "application/json",
"referer": location.href,
"v": scriptInfo$1.script.version,
...headers
};
return new Promise((resolve, reject) => {
const startTime = Date.now();
_GM_xmlhttpRequest({
method,
url,
headers: finalHeaders,
data: method !== "GET" ? JSON.stringify(data) : void 0,
timeout,
onload: function(response) {
const endTime = Date.now();
const duration = endTime - startTime;
resolve([response, duration]);
},
ontimeout: () => reject(new Error("接口请求超时")),
onerror: (error) => {
reject(error);
}
});
});
}
function requestFetch(url, method, data, headers, timeout = 5e3) {
const finalHeaders = {
"User-Agent": _unsafeWindow.navigator.userAgent,
"Content-Type": method === "POST" ? "application/json" : "text/plain;charset=UTF-8",
...headers
};
return new Promise((resolve, reject) => {
fetch(url, {
method,
headers: finalHeaders,
body: method === "POST" ? JSON.stringify(data) : void 0
}).then((response) => resolve(response.text())).catch(function(error) {
reject(error);
});
});
}
function headi() {
let z = Array.from({ length: 4 }, () => Math.floor(Math.random() * 255)).join(".");
return {
"X-Forwarded-For": z,
"X-Real-IP": z
};
}
function sleep(time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
function removeHtml(htmlStr) {
const textArea = document.createElement("textarea");
textArea.innerHTML = htmlStr;
htmlStr = textArea.value;
htmlStr = htmlStr.replace(/[\t\r\xa0]/g, " ");
htmlStr = htmlStr.replace(/[\u2000-\u200a]/g, " ");
htmlStr = htmlStr.replace(/<br\s*\/?>/g, "\n");
htmlStr = htmlStr.replace(/<(\/)?(p|div).*?>/g, "\n");
htmlStr = htmlStr.replace(/ {2,}/g, " ");
htmlStr = htmlStr.replace(/\n{2,}/g, "\n");
htmlStr = DOMPurify.sanitize(htmlStr, { ALLOWED_TAGS: ["img", "br", "sub", "sup", "table", "caption", "thead", "tfoot", "tbody", "tr", "th", "td", "strong"], ALLOWED_ATTR: ["src", "href"], ALLOW_DATA_ATTR: false });
return htmlStr.trim();
}
function removeHtml1(htmlStr, replacen = true) {
const textArea = document.createElement("textarea");
textArea.innerHTML = htmlStr;
htmlStr = textArea.value;
htmlStr = htmlStr.replace(/[\t\r\xa0]/g, " ");
htmlStr = htmlStr.replace(/[\u2000-\u200a]/g, " ");
htmlStr = htmlStr.replace(/<br\s*\/?>/g, "\n");
if (replacen) {
htmlStr = htmlStr.replace(/<(\/)?(p|div).*?>/g, "\n");
}
htmlStr = htmlStr.replace(/ {2,}/g, " ");
htmlStr = htmlStr.replace(/\n{2,}/g, "\n");
htmlStr = htmlStr.replace(/<xmp.*?>/g, "<pre>");
htmlStr = htmlStr.replace(/<\/xmp>/g, "</pre>");
htmlStr = DOMPurify.sanitize(htmlStr, { ALLOWED_TAGS: ["img", "br", "sub", "sup"], ALLOWED_ATTR: ["src", "href"], ALLOW_DATA_ATTR: false, KEEP_CONTENT: true });
let imgReg = /<img.*?src="(.*?)".*?>/g;
let imgArr = htmlStr.match(imgReg);
if (imgArr) {
imgArr.forEach((item) => {
let src = item.match(/src="(.*?)"/);
if (src) {
if (src[1].indexOf("http") == -1 && !src[1].includes("data:image")) {
if (src[1].startsWith("/")) {
htmlStr = htmlStr.replace(src[1], location.origin + src[1]);
} else {
const fullURL = new URL(src[1], document.baseURI).href;
htmlStr = htmlStr.replace(src[1], fullURL);
}
}
}
});
}
return htmlStr.trim();
}
function titleClean(title) {
return title.replace(/^[.*?]\s*/, "").replace(/^【.*?】\s*/, "").replace(/\s*(\d+\.\d+分)$/, "").replace(/^\d+\./, "").trim();
}
const typeToNumber = {
"单选题": "0",
"多选题": "1",
"填空题": "2",
"判断题": "3",
"简答题": "4",
"问答题": "4",
"名词解释": "5",
"论述题": "6",
"计算题": "7",
"分录题": "9",
"资料题": "10",
"连线题": "11",
"匹配题": "11",
"排序题": "13",
"完型填空": "14",
"完形填空题": "14",
"阅读理解": "15",
"程序题": "17",
"口语题": "18",
"听力题": "19",
"共用选项题": "20",
"测评题": "21",
"钟表题": "23",
"选词填空": "24",
"选做题": "25",
"其它": "8"
};
const numberToType = Object.fromEntries(
Object.entries(typeToNumber).map(([key2, value]) => [value, key2])
);
function typeChange(typeName) {
return typeToNumber[typeName] ?? "8";
}
function typeChange2(typeNumber) {
return numberToType[typeNumber] ?? "其它";
}
function typeMatch(typeName) {
const typeMap2 = {
"0": ["单选", "单项选择"],
"1": ["多选", "多项选择"],
"2": ["填空"],
"3": ["判断"],
"4": ["简答", "问答"],
"5": ["名词解释"],
"6": ["论述"],
"7": ["计算"],
"9": ["分录"],
"14": ["完形填空"],
"24": ["选词填空"]
};
let type = "8";
for (let key2 in typeMap2) {
if (typeMap2[key2].some((item) => typeName.includes(item))) {
type = key2;
break;
}
}
return type;
}
function answerFormat(answer) {
if (answer instanceof Array) {
answer = answer.filter(function(item) {
return item !== null;
});
for (let i = 0; i < answer.length; i++) {
answer[i] = removeHtml(answer[i]);
}
} else if (typeof answer === "string") {
answer = titleClean(answer);
}
return answer;
}
function removeSpace(str) {
if (/^[+-]?\d+(\.\d+)?$/.test(str)) {
return str;
}
return str.replace(/[\s\p{P}]/gu, "");
}
function matchAnswer(answer, options) {
if (answer == "" || answer == null || answer == void 0) {
return [];
}
answer = answer.map((item) => removeHtml1(item));
options = options.map((item) => removeHtml1(item));
answer = answerFormat(answer);
let isMatch = options.every((item) => {
return /[\u4e00-\u9fa5a-zA-Z0-9]/.test(item);
});
if (isMatch) {
answer = answer.map((item) => removeSpace(item));
options = options.map((item) => removeSpace(item));
}
var matchArr = [];
for (var i = 0; i < answer.length; i++) {
for (var j = 0; j < options.length; j++) {
if (answer[i] == options[j]) {
matchArr.push(j);
}
}
}
return matchArr;
}
function recoverConsole() {
var iframe = document.createElement("iframe");
iframe.style.display = "none";
document.body.appendChild(iframe);
window.console = iframe.contentWindow.console;
}
function qc(item) {
$(item).find(".answerBg, .textDIV, .eidtDiv").each(function() {
($(this).find(".check_answer").length || $(this).find(".check_answer_dx").length) && $(this).click();
});
$(item).find(".answerBg, .textDIV, .eidtDiv").find("textarea").each(function() {
_unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
this.setContent("");
});
});
$(item).find(":radio, :checkbox").prop("checked", false);
$(item).find("textarea").each(function() {
_unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
this.setContent("");
});
});
}
function qc1(item) {
$(item).find(".before-after,.before-after-checkbox, .textDIV, .eidtDiv").each(function() {
($(this).find(".check_answer").length || $(this).find(".check_answer_dx").length) && $(this).click();
});
$(item).find(".before-after, .textDIV, .eidtDiv").find("textarea").each(function() {
_unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
this.setContent("");
});
});
$(item).find(":radio, :checkbox").prop("checked", false);
$(item).find("textarea").each(function() {
_unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
this.setContent("");
});
});
}
const allowCopy = () => {
document.body.oncopy = null;
document.body.oncut = null;
document.body.onpaste = null;
document.body.onselectstart = null;
document.body.ondragstart = null;
const style = document.createElement("style");
style.innerHTML = `
* {
-webkit-user-select: auto !important;
-moz-user-select: auto !important;
-o-user-select: auto !important;
user-select: auto !important;
}
`;
document.head.appendChild(style);
};
function isTrue(text) {
return Boolean(String(text).match(/(正确|是|对|√|T|ri|true)/));
}
function isFalse(text) {
return Boolean(String(text).match(/(错误|否|错|×|F|wr|false)/));
}
function msg(content, type = "info") {
try {
ElementPlus.ElNotification({
// @ts-ignore
title: `${scriptInfo$1.script.name} v${scriptInfo$1.script.version}`,
// 设置通知标题,使用模板字符串拼接脚本信息
message: content,
// 设置通知内容
type,
// 设置通知类型,默认为 "info"
dangerouslyUseHTMLString: true,
// 允许使用 HTML 字符串
// el改aah
appendTo: document.getElementById("AiAskApp")
});
} catch (e) {
}
}
const formatDate = (dateString) => {
let date = new Date(dateString);
return date.toISOString().replace("T", " ").substring(0, 19);
};
const updateCheck = () => {
const app = wapp().app;
if (!app.app.checkUpdate) {
return Promise.resolve(null);
}
let updateCache = Cache.get("lastCheckTime");
if (updateCache && (/* @__PURE__ */ new Date()).getTime() - updateCache < 1e3 * 60) {
return Promise.resolve(null);
}
try {
let scriptId = app.script.updateURL.match(/scripts\/(\d+)/)[1];
if (!scriptId) {
return Promise.resolve(null);
}
let url = `https://greasyfork.org/zh-CN/scripts/${scriptId}.json`;
return new Promise((resolve, reject) => {
requestFetch(url, "GET", {}, {}).then((res) => {
res = JSON.parse(res);
log("更新检测", res, "info");
if (res.version > scriptInfo$1.script.version) {
msg(`检测到新版本<span style="color:red">${res.version}</span>,请及时更新<br>更新时间:${formatDate(res.code_updated_at)}<br><a target="_blank" href="https://greasyfork.org/zh-CN/scripts/${scriptId}">>>点我快捷跳转更新<<</a>`, "warning");
}
Cache.set("lastCheckTime", (/* @__PURE__ */ new Date()).getTime());
}).catch(
(error) => {
console.error("更新检测失败", error);
resolve(null);
}
);
});
} catch {
console.error("更新检测失败");
return Promise.resolve(null);
}
};
const updateCheck1 = () => {
const app = wapp().app;
let scriptId = app.script.updateURL.match(/scripts\/(\d+)/)[1];
if (!scriptId) {
return Promise.resolve(null);
}
let url = `https://greasyfork.org/zh-CN/scripts/${scriptId}.json`;
return new Promise((resolve, reject) => {
requestFetch(url, "GET", {}, {}).then((res) => {
res = JSON.parse(res);
if (res.version > scriptInfo$1.script.version) {
msg(`检测到新版本<span style="color:red">${res.version}</span>,请及时更新<br>更新时间:${formatDate(res.code_updated_at)}<br><a target="_blank" href="https://greasyfork.org/zh-CN/scripts/${scriptId}">>>点我快捷跳转更新<<</a>`, "warning");
} else {
msg(`当前版本为最新版本`, "success");
}
Cache.set("lastCheckTime", (/* @__PURE__ */ new Date()).getTime());
}).catch(
(error) => {
console.error("更新检测失败", error);
resolve(null);
}
);
});
};
function randomString(len) {
let str = "";
for (; str.length < len; str += Math.random().toString(36).substr(2))
;
return str.substr(0, len);
}
function wapp() {
const app = _unsafeWindow[key];
return app;
}
const waitUntil = (condition, interval = 100) => {
return new Promise((resolve) => {
const timer = setInterval(() => {
if (condition()) {
clearInterval(timer);
resolve();
}
}, interval);
});
};
const questionHash = (type, question, options, optionsSort = true) => {
let option = Array.from(options);
if (optionsSort) {
option.sort();
}
const optionsStr = option.join("");
let hashStr = `${type}${question}${optionsStr}`;
hashStr = hashStr.replace(/\s/g, "");
const hash = md5Exports.md5(hashStr);
return hash;
};
const env = (dev, prod) => {
return prod;
};
async function encrypt(data, key2 = "asdgdfghfghfghfg", iv = "1234567890123456") {
let enc = new TextEncoder();
let alg = { name: "AES-CBC", iv: enc.encode(iv) };
let cryptoKey = await window.crypto.subtle.importKey("raw", enc.encode(key2), alg, false, ["encrypt"]);
let encrypted = await window.crypto.subtle.encrypt(alg, cryptoKey, enc.encode(data));
let uint8Array = new Uint8Array(encrypted);
let binaryString = "";
for (let i = 0; i < uint8Array.length; i++) {
binaryString += String.fromCharCode(uint8Array[i]);
}
return btoa(binaryString);
}
async function decrypt(encryptedData, key2 = "asdgdfghfghfghfg", iv = "1234567890123456") {
let dec = new TextDecoder();
let alg = { name: "AES-CBC", iv: new TextEncoder().encode(iv) };
let cryptoKey = await window.crypto.subtle.importKey("raw", new TextEncoder().encode(key2), alg, false, ["decrypt"]);
let binaryString = atob(encryptedData);
let len = binaryString.length;
let bytes = new Uint8Array(len);
for (let i = 0; i < len; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
let decrypted = await window.crypto.subtle.decrypt(alg, cryptoKey, bytes);
return dec.decode(decrypted);
}
function get_t(data) {
const { sign, t, ...rest } = data;
const keys = Object.keys(rest).sort();
const str = keys.map((key2) => {
let value = rest[key2];
if (typeof value === "object") {
value = JSON.stringify(value);
}
return `${key2}=${value}`;
}).join("&");
return md5Exports.md5(str);
}
function removeStartChar(options) {
return options.map((item, inx) => {
let chr = String.fromCharCode(65 + inx) + ".";
let chr1 = String.fromCharCode(65 + inx) + "、";
let chr2 = String.fromCharCode(65 + inx) + ".";
let chr3 = String.fromCharCode(65 + inx);
return item.replace(new RegExp(`^${chr}|^${chr1}|^${chr2}|^${chr3}`), "").trim();
});
}
function removeOptionsStartChar(options) {
for (let i = 0; i < options.length; i++) {
let chr = String.fromCharCode(65 + i) + ".";
let chr1 = String.fromCharCode(65 + i) + "、";
let chr2 = String.fromCharCode(65 + i) + ".";
let chr3 = String.fromCharCode(65 + i);
const Exp = new RegExp(`^${chr}|^${chr1}|^${chr2}|^${chr3}`);
if (options[i].match(Exp)) {
options[i] = options[i].replace(Exp, "").trim();
} else {
return false;
}
}
return options;
}
function optionsToString(options) {
if (typeof options !== "object")
return "";
return options.map((item, inx) => {
let chr = String.fromCharCode(65 + inx) + ".";
return chr + item;
}).join("<br>");
}
function log(...args) {
}
function getUrl() {
return location.href;
}
function isExist(selector) {
return $(selector).length > 0;
}
function judgeAnswer(text) {
return isTrue(text) ? ["正确"] : isFalse(text) ? ["错误"] : [];
}
function createWorker(fn) {
const blob = new Blob([`(${fn.toString()})()`], { type: "application/javascript" });
const url = URL.createObjectURL(blob);
const worker = new Worker(url);
return worker;
}
class Answer {
constructor() {
}
/**
* @description: 接口打分,是否有答案,是否匹配
*/
static score(api, score) {
let cache = Cache.get("api_" + api, { score: 0 });
cache.score += score;
Cache.set("api_" + api, cache, 600);
}
/**
* @description: 批量获取所有答案
*/
static async getAllAnswers(questionList) {
const promises = [
this.getAnswer3(questionList),
this.getAnswer1(questionList)
];
return Promise.all(promises);
}
/**
* @description: 批量获取答案
*/
static async getAnswers(questionList) {
const promises = [
this.getAnswer3(questionList)
];
return Promise.all(promises);
}
/**
* @description: 批量获取答案(免费接口)
*/
static async getAnswersFree(questionList) {
const promises = [
this.getMainAnswer(questionList),
this.getAnswer1(questionList)
];
return Promise.all(promises);
}
/**
* @description: 内置接口1 一之题库
*/
static async getAnswer1(questionData) {
let headers = headi();
return new Promise((resolve) => {
request("http://cx.icodef.com/wyn-nb?v=4", "POST", {
question: questionData.question
}, headers).then((res) => {
let duration = res[1];
try {
res = JSON.parse(res[0].responseText);
} catch (error) {
resolve({ form: "免费题库", answer: null, error, duration });
}
let answer = "";
if (res.code === 1) {
let data = res.data.replace(/javascript:void\(0\);/g, "").trim().replace(/\n/g, "");
const keywords = ["叛逆", "公众号", "李恒雅", "一之"];
if (keywords.every((keyword) => !data.includes(keyword))) {
answer = data.split("#");
}
}
resolve({ form: "免费题库", answer, duration });
}).catch((error) => {
if (error === "timeout") {
this.score("icodef", -1);
}
resolve({ form: "免费题库", answer: "", msg: error, duration: 5e3 });
});
});
}
static async getAnswer2(questionData) {
return new Promise((resolve) => {
if (![0, 1, 2].includes(parseInt(questionData.type))) {
resolve({
form: "muketool",
answer: "",
duration: "不支持的题型"
});
return;
}
request("https://api.muketool.com/cx/v2/query", "POST", {
question: questionData.question,
type: parseInt(questionData.type)
}, {}).then((res) => {
let duration = res[1];
res = JSON.parse(res[0].responseText);
resolve({
form: "muketool",
answer: res.code === 1 ? res.data.split("#") : "",
duration
});
}).catch((error) => {
if (error === "timeout") {
this.score("muketool", -1);
}
resolve({
form: "muketool",
answer: ""
});
});
});
}
static async getAnswer3(questionData) {
const headers = {
"Content-Type": "application/json",
"referer": location.href,
"v": scriptInfo.version,
"s": scriptInfo.author
};
const data = {
question: questionData.question,
// 选项数组
options: questionData.options.map((item) => item),
type: questionData.type,
questionData: questionData.html.innerHTML,
workType: questionData.workType,
key: appCache.key ?? ""
};
return new Promise((resolve) => {
request("https://api.tikuhai.com/search", "POST", data, headers).then((res) => {
let duration = res[1];
res = JSON.parse(res[0].responseText);
if (res.code === 200) {
resolve({
form: "付费题库",
answer: res.data.answer,
duration,
msg: res.msg
});
} else {
resolve({
form: "付费题库",
answer: "",
duration,
msg: res.msg
});
}
}).catch((error) => {
if (error === "timeout") {
this.score("tikuhai", -1);
}
resolve({
form: "付费题库",
answer: "",
error,
duration: 10,
msg: "请求失败"
});
});
});
}
/**
* @description: 获取当前的时间戳
*/
static getTimestamp() {
return Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3);
}
/**
* @description: 将答案缓存在本地
*/
static cacheAnswer(questionData) {
const data = {
type: questionData.type,
question: questionData.question,
options: questionData.options,
answer: questionData.answer
};
const hash = questionHash(data.type, data.question, data.options);
data.createTime = this.getTimestamp();
Cache.set("ques1_" + hash, data);
}
/**
* @description: 从本地缓存获取答案
*/
static async getCacheAnswer(questionData) {
const hash = questionHash(questionData.type, questionData.question, questionData.options);
let data = Cache.get("ques1_" + hash);
if (data) {
return {
form: "本地缓存",
answer: data.answer,
duration: 10
};
}
return {
form: "本地缓存",
answer: "",
duration: 10,
msg: "未找到缓存"
};
}
/**
* @description: 从自建题库获取答案
*/
static getMainAnswer(questionData) {
const data = {
type: questionData.type,
question: questionData.question,
options: questionData.options.map((item) => item),
html: questionData.html.innerHTML,
workType: questionData.workType,
pageType: questionData.pageType
};
const url = env("http://127.0.0.1:9966/api/search", "https://aiask.wk66.top/api/search");
return new Promise((resolve) => {
request(url, "POST", data, {}).then((res) => {
let duration = res[1];
res = JSON.parse(res[0].responseText);
if (res.code === 200) {
resolve({
form: "爱问答题库",
answer: res.data.answer,
duration,
msg: res.msg
});
} else {
resolve({
form: "爱问答题库",
answer: "",
duration,
msg: res.msg
});
}
}).catch((error) => {
resolve({
form: "爱问答题库",
answer: "",
error,
duration: 10,
msg: "请求失败"
});
});
});
}
/**
* @description: 同步题库
*/
static async syncQuestionList(data) {
return new Promise((resolve) => {
const url = env("http://127.0.0.1:9966/api/sync", "https://aiask.wk66.top/api/sync");
request(url, "POST", data, {}).then((res) => {
log(res[0].responseText);
resolve(res[0].responseText);
}).catch((error) => {
resolve(error);
});
});
}
}
const parsePack = (str) => {
const pattern = /data:\s*({.*?})\s*\n/g;
const result = [];
let match;
while ((match = pattern.exec(str)) !== null) {
const jsonStr = match[1];
try {
const json = JSON.parse(jsonStr);
result.push(json);
} catch (e) {
}
}
return result;
};
const aiAsk = async (message, callback, isfinish) => {
let config = getApp();
let url = config.gpt[0].api;
let data = JSON.stringify({
"model": "gpt-3.5-turbo",
"messages": [
{ "role": "system", "content": "请只需要回答我的问题不要有多余的话,如果你不知道请返回【我不会】" },
{
"role": "user",
"content": message
}
],
"stream": true
});
let headers = {
"Accept": "application/json",
"Authorization": `Bearer ${config.gpt[0].key}`,
"Content-Type": "application/json"
};
return new Promise((resolve, reject) => {
if (!config.gpt[0].key) {
callback(`AI响应异常,可能是没有获取KEY,请按下方步骤操作
1. 打开[智普清言](https://chatglm.cn/main/alltoolsdetail)
2. 登录后随便发一条消息即可
3. 返回答题页刷新页面 `);
return resolve("暂无KEY");
}
_GM_xmlhttpRequest({
method: "POST",
url,
data,
headers,
responseType: "stream",
onloadstart: async (r) => {
let strText = "";
let finish = false;
let count = 0;
const reader = r.response.getReader();
const decoder = new TextDecoder();
try {
while (!finish) {
const { done, value } = await reader.read();
await sleep(50);
if (done) {
finish = true;
log("AI响应完成", "success");
isfinish();
return resolve(strText);
}
count++;
const jsonArray = parsePack(decoder.decode(value));
if (count === 1) {
}
jsonArray.forEach((json) => {
if (!json.choices || json.choices.length === 0) {
return;
}
const text = json.choices[0].delta.content;
if (text === void 0 || text === "") {
return;
}
strText += text;
callback(text);
});
}
} catch (error) {
console.error("Error reading stream:", error);
return reject(error);
}
}
});
});
};
const yunmuxueyuan = [
{
type: "hook",
name: "云幕学苑hook",
match: location.host.includes("w-ling.cn"),
main: (data) => {
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.path;
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== $("#app")[0].__vue__.$route.path) {
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.path;
if (_unsafeWindow.mainClass === "homework-detail-container") {
await waitUntil(function() {
return $(".selectDan").length !== 0;
});
}
vuePageChange();
observer.disconnect();
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "save",
name: "云幕学苑收录",
match: () => location.host.includes("w-ling.cn") && location.href.includes("practiceRecord"),
question: {
html: ".selectDan >div >div",
question: ".title",
options: ".selectItem label .tagbq",
type: ".question-box .tag",
workType: "yunmuxueyuan",
pageType: "yunmuxueyuan"
},
init: async () => {
await waitUntil(function() {
return isExist(".selectDan >div >div");
});
},
answerHook: (item) => {
const type = $(item.html).parent().find("h3").text().split("、")[1];
item.question = item.question.replace(/^\d+、/, "");
item.question = item.question.replace(/\(\d+分\)$/, "");
let answer = $(item.html).find(".anaylize > span:eq(0)").text().replace("作答正确:", "");
if (answer === "") {
answer = $(item.html).find(".falsanaly > span:eq(1)").text().replace("正确答案:", "");
}
switch (type) {
case "单选题":
case "多选题":
answer = answer.split("");
item.answer = answer.map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
if (item.answer.length === 0) {
return;
}
item.answer.length > 1 ? item.type = "1" : item.type = "0";
break;
case "判断题":
item.type = "3";
if (answer == "T") {
item.answer = ["正确"];
}
if (answer == "F") {
item.answer = ["错误"];
}
break;
case "填空题":
item.answer = $(item.html).find(".riganswer > span").first().nextAll("span").map((inx, element) => {
return removeHtml1($(element).text());
}).get();
item.type = "2";
break;
}
return item;
}
},
{
type: "ask",
name: "云幕学苑",
tips: "云幕学苑仅支持选择判断,其他题型待适配",
match: () => location.host.includes("w-ling.cn") && (location.href.includes("practicePaper") || location.href.includes("examIndex")),
question: {
html: ".selectDan >div >div",
question: ".title",
options: ".selectItem label .tagbq",
type: ".question-box .tag",
workType: "yunmuxueyuan",
pageType: "yunmuxueyuan"
},
init: async () => {
await waitUntil(function() {
return $(".selectDan >div >div").length !== 0;
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
item.question = item.question.replace(/^\d+、/, "");
item.question = item.question.replace(/\(\d+分\)$/, "");
const type = $(item.html).parent().find("h4").text().split("、")[1];
switch (type) {
case "单选题":
item.type = "0";
break;
case "多选题":
item.type = "1";
break;
case "判断题":
item.type = "3";
item.$options = $(item.html).find(".selectItem label");
item.options = item.$options.map((inx, element) => {
return removeHtml1($(element).text());
}).get();
log(item.$options);
break;
case "填空题":
item.type = "2";
break;
}
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "3":
break;
case "2":
$(item.html).find(".tiankong input").each((inx, element) => {
let vueL = $(element).parent()[0].__vue__;
$(element).val(item.answer[inx]);
const event2 = new Event("input");
element.dispatchEvent(event2);
vueL.$emit("change", item.answer[inx]);
});
return false;
}
return true;
},
finish: (item) => {
}
}
];
var Typr = {};
Typr.parse = function(buff) {
var bin = Typr._bin;
var data = new Uint8Array(buff);
var offset = 0;
bin.readFixed(data, offset);
offset += 4;
var numTables = bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
var tags = ["cmap", "head", "hhea", "maxp", "hmtx", "name", "OS/2", "post", "loca", "glyf", "kern", "CFF ", "GPOS", "GSUB", "SVG "];
var obj = { _data: data };
var tabs = {};
for (var i = 0; i < numTables; i++) {
var tag = bin.readASCII(data, offset, 4);
offset += 4;
bin.readUint(data, offset);
offset += 4;
var toffset = bin.readUint(data, offset);
offset += 4;
var length = bin.readUint(data, offset);
offset += 4;
tabs[tag] = { offset: toffset, length };
}
for (var i = 0; i < tags.length; i++) {
var t = tags[i];
if (tabs[t])
obj[t.trim()] = Typr[t.trim()].parse(data, tabs[t].offset, tabs[t].length, obj);
}
return obj;
};
Typr._tabOffset = function(data, tab) {
var bin = Typr._bin;
var numTables = bin.readUshort(data, 4);
var offset = 12;
for (var i = 0; i < numTables; i++) {
var tag = bin.readASCII(data, offset, 4);
offset += 4;
bin.readUint(data, offset);
offset += 4;
var toffset = bin.readUint(data, offset);
offset += 4;
bin.readUint(data, offset);
offset += 4;
if (tag == tab)
return toffset;
}
return 0;
};
Typr._bin = { readFixed: function(data, o) {
return (data[o] << 8 | data[o + 1]) + (data[o + 2] << 8 | data[o + 3]) / (256 * 256 + 4);
}, readF2dot14: function(data, o) {
var num = Typr._bin.readShort(data, o);
return num / 16384;
}, readInt: function(buff, p) {
var a = Typr._bin.t.uint8;
a[0] = buff[p + 3];
a[1] = buff[p + 2];
a[2] = buff[p + 1];
a[3] = buff[p];
return Typr._bin.t.int32[0];
}, readInt8: function(buff, p) {
var a = Typr._bin.t.uint8;
a[0] = buff[p];
return Typr._bin.t.int8[0];
}, readShort: function(buff, p) {
var a = Typr._bin.t.uint8;
a[1] = buff[p];
a[0] = buff[p + 1];
return Typr._bin.t.int16[0];
}, readUshort: function(buff, p) {
return buff[p] << 8 | buff[p + 1];
}, readUshorts: function(buff, p, len) {
var arr = [];
for (var i = 0; i < len; i++)
arr.push(Typr._bin.readUshort(buff, p + i * 2));
return arr;
}, readUint: function(buff, p) {
var a = Typr._bin.t.uint8;
a[3] = buff[p];
a[2] = buff[p + 1];
a[1] = buff[p + 2];
a[0] = buff[p + 3];
return Typr._bin.t.uint32[0];
}, readUint64: function(buff, p) {
return Typr._bin.readUint(buff, p) * (4294967295 + 1) + Typr._bin.readUint(buff, p + 4);
}, readASCII: function(buff, p, l) {
var s = "";
for (var i = 0; i < l; i++)
s += String.fromCharCode(buff[p + i]);
return s;
}, readUnicode: function(buff, p, l) {
var s = "";
for (var i = 0; i < l; i++) {
var c = buff[p++] << 8 | buff[p++];
s += String.fromCharCode(c);
}
return s;
}, _tdec: window["TextDecoder"] ? new window["TextDecoder"]() : null, readUTF8: function(buff, p, l) {
var tdec = Typr._bin._tdec;
if (tdec && p == 0 && l == buff.length)
return tdec["decode"](buff);
return Typr._bin.readASCII(buff, p, l);
}, readBytes: function(buff, p, l) {
var arr = [];
for (var i = 0; i < l; i++)
arr.push(buff[p + i]);
return arr;
}, readASCIIArray: function(buff, p, l) {
var s = [];
for (var i = 0; i < l; i++)
s.push(String.fromCharCode(buff[p + i]));
return s;
} };
Typr._bin.t = { buff: new ArrayBuffer(8) };
Typr._bin.t.int8 = new Int8Array(Typr._bin.t.buff);
Typr._bin.t.uint8 = new Uint8Array(Typr._bin.t.buff);
Typr._bin.t.int16 = new Int16Array(Typr._bin.t.buff);
Typr._bin.t.uint16 = new Uint16Array(Typr._bin.t.buff);
Typr._bin.t.int32 = new Int32Array(Typr._bin.t.buff);
Typr._bin.t.uint32 = new Uint32Array(Typr._bin.t.buff);
Typr._lctf = {};
Typr._lctf.parse = function(data, offset, length, font, subt) {
var bin = Typr._bin;
var obj = {};
var offset0 = offset;
bin.readFixed(data, offset);
offset += 4;
var offScriptList = bin.readUshort(data, offset);
offset += 2;
var offFeatureList = bin.readUshort(data, offset);
offset += 2;
var offLookupList = bin.readUshort(data, offset);
offset += 2;
obj.scriptList = Typr._lctf.readScriptList(data, offset0 + offScriptList);
obj.featureList = Typr._lctf.readFeatureList(data, offset0 + offFeatureList);
obj.lookupList = Typr._lctf.readLookupList(data, offset0 + offLookupList, subt);
return obj;
};
Typr._lctf.readLookupList = function(data, offset, subt) {
var bin = Typr._bin;
var offset0 = offset;
var obj = [];
var count = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < count; i++) {
var noff = bin.readUshort(data, offset);
offset += 2;
var lut = Typr._lctf.readLookupTable(data, offset0 + noff, subt);
obj.push(lut);
}
return obj;
};
Typr._lctf.readLookupTable = function(data, offset, subt) {
var bin = Typr._bin;
var offset0 = offset;
var obj = { tabs: [] };
obj.ltype = bin.readUshort(data, offset);
offset += 2;
obj.flag = bin.readUshort(data, offset);
offset += 2;
var cnt = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < cnt; i++) {
var noff = bin.readUshort(data, offset);
offset += 2;
var tab = subt(data, obj.ltype, offset0 + noff);
obj.tabs.push(tab);
}
return obj;
};
Typr._lctf.numOfOnes = function(n) {
var num = 0;
for (var i = 0; i < 32; i++)
if ((n >>> i & 1) != 0)
num++;
return num;
};
Typr._lctf.readClassDef = function(data, offset) {
var bin = Typr._bin;
var obj = [];
var format = bin.readUshort(data, offset);
offset += 2;
if (format == 1) {
var startGlyph = bin.readUshort(data, offset);
offset += 2;
var glyphCount = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < glyphCount; i++) {
obj.push(startGlyph + i);
obj.push(startGlyph + i);
obj.push(bin.readUshort(data, offset));
offset += 2;
}
}
if (format == 2) {
var count = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < count; i++) {
obj.push(bin.readUshort(data, offset));
offset += 2;
obj.push(bin.readUshort(data, offset));
offset += 2;
obj.push(bin.readUshort(data, offset));
offset += 2;
}
}
return obj;
};
Typr._lctf.getInterval = function(tab, val) {
for (var i = 0; i < tab.length; i += 3) {
var start = tab[i], end = tab[i + 1];
tab[i + 2];
if (start <= val && val <= end)
return i;
}
return -1;
};
Typr._lctf.readValueRecord = function(data, offset, valFmt) {
var bin = Typr._bin;
var arr = [];
arr.push(valFmt & 1 ? bin.readShort(data, offset) : 0);
offset += valFmt & 1 ? 2 : 0;
arr.push(valFmt & 2 ? bin.readShort(data, offset) : 0);
offset += valFmt & 2 ? 2 : 0;
arr.push(valFmt & 4 ? bin.readShort(data, offset) : 0);
offset += valFmt & 4 ? 2 : 0;
arr.push(valFmt & 8 ? bin.readShort(data, offset) : 0);
offset += valFmt & 8 ? 2 : 0;
return arr;
};
Typr._lctf.readCoverage = function(data, offset) {
var bin = Typr._bin;
var cvg = {};
cvg.fmt = bin.readUshort(data, offset);
offset += 2;
var count = bin.readUshort(data, offset);
offset += 2;
if (cvg.fmt == 1)
cvg.tab = bin.readUshorts(data, offset, count);
if (cvg.fmt == 2)
cvg.tab = bin.readUshorts(data, offset, count * 3);
return cvg;
};
Typr._lctf.coverageIndex = function(cvg, val) {
var tab = cvg.tab;
if (cvg.fmt == 1)
return tab.indexOf(val);
if (cvg.fmt == 2) {
var ind = Typr._lctf.getInterval(tab, val);
if (ind != -1)
return tab[ind + 2] + (val - tab[ind]);
}
return -1;
};
Typr._lctf.readFeatureList = function(data, offset) {
var bin = Typr._bin;
var offset0 = offset;
var obj = [];
var count = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < count; i++) {
var tag = bin.readASCII(data, offset, 4);
offset += 4;
var noff = bin.readUshort(data, offset);
offset += 2;
obj.push({ tag: tag.trim(), tab: Typr._lctf.readFeatureTable(data, offset0 + noff) });
}
return obj;
};
Typr._lctf.readFeatureTable = function(data, offset) {
var bin = Typr._bin;
bin.readUshort(data, offset);
offset += 2;
var lookupCount = bin.readUshort(data, offset);
offset += 2;
var indices = [];
for (var i = 0; i < lookupCount; i++)
indices.push(bin.readUshort(data, offset + 2 * i));
return indices;
};
Typr._lctf.readScriptList = function(data, offset) {
var bin = Typr._bin;
var offset0 = offset;
var obj = {};
var count = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < count; i++) {
var tag = bin.readASCII(data, offset, 4);
offset += 4;
var noff = bin.readUshort(data, offset);
offset += 2;
obj[tag.trim()] = Typr._lctf.readScriptTable(data, offset0 + noff);
}
return obj;
};
Typr._lctf.readScriptTable = function(data, offset) {
var bin = Typr._bin;
var offset0 = offset;
var obj = {};
var defLangSysOff = bin.readUshort(data, offset);
offset += 2;
obj.default = Typr._lctf.readLangSysTable(data, offset0 + defLangSysOff);
var langSysCount = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < langSysCount; i++) {
var tag = bin.readASCII(data, offset, 4);
offset += 4;
var langSysOff = bin.readUshort(data, offset);
offset += 2;
obj[tag.trim()] = Typr._lctf.readLangSysTable(data, offset0 + langSysOff);
}
return obj;
};
Typr._lctf.readLangSysTable = function(data, offset) {
var bin = Typr._bin;
var obj = {};
bin.readUshort(data, offset);
offset += 2;
obj.reqFeature = bin.readUshort(data, offset);
offset += 2;
var featureCount = bin.readUshort(data, offset);
offset += 2;
obj.features = bin.readUshorts(data, offset, featureCount);
return obj;
};
Typr.CFF = {};
Typr.CFF.parse = function(data, offset, length) {
var bin = Typr._bin;
data = new Uint8Array(data.buffer, offset, length);
offset = 0;
data[offset];
offset++;
data[offset];
offset++;
data[offset];
offset++;
data[offset];
offset++;
var ninds = [];
offset = Typr.CFF.readIndex(data, offset, ninds);
var names = [];
for (var i = 0; i < ninds.length - 1; i++)
names.push(bin.readASCII(data, offset + ninds[i], ninds[i + 1] - ninds[i]));
offset += ninds[ninds.length - 1];
var tdinds = [];
offset = Typr.CFF.readIndex(data, offset, tdinds);
var topDicts = [];
for (var i = 0; i < tdinds.length - 1; i++)
topDicts.push(Typr.CFF.readDict(data, offset + tdinds[i], offset + tdinds[i + 1]));
offset += tdinds[tdinds.length - 1];
var topdict = topDicts[0];
var sinds = [];
offset = Typr.CFF.readIndex(data, offset, sinds);
var strings = [];
for (var i = 0; i < sinds.length - 1; i++)
strings.push(bin.readASCII(data, offset + sinds[i], sinds[i + 1] - sinds[i]));
offset += sinds[sinds.length - 1];
Typr.CFF.readSubrs(data, offset, topdict);
if (topdict.CharStrings) {
offset = topdict.CharStrings;
var sinds = [];
offset = Typr.CFF.readIndex(data, offset, sinds);
var cstr = [];
for (var i = 0; i < sinds.length - 1; i++)
cstr.push(bin.readBytes(data, offset + sinds[i], sinds[i + 1] - sinds[i]));
topdict.CharStrings = cstr;
}
if (topdict.Encoding)
topdict.Encoding = Typr.CFF.readEncoding(data, topdict.Encoding, topdict.CharStrings.length);
if (topdict.charset)
topdict.charset = Typr.CFF.readCharset(data, topdict.charset, topdict.CharStrings.length);
if (topdict.Private) {
offset = topdict.Private[1];
topdict.Private = Typr.CFF.readDict(data, offset, offset + topdict.Private[0]);
if (topdict.Private.Subrs)
Typr.CFF.readSubrs(data, offset + topdict.Private.Subrs, topdict.Private);
}
var obj = {};
for (var p in topdict) {
if (["FamilyName", "FullName", "Notice", "version", "Copyright"].indexOf(p) != -1)
obj[p] = strings[topdict[p] - 426 + 35];
else
obj[p] = topdict[p];
}
return obj;
};
Typr.CFF.readSubrs = function(data, offset, obj) {
var bin = Typr._bin;
var gsubinds = [];
offset = Typr.CFF.readIndex(data, offset, gsubinds);
var bias, nSubrs = gsubinds.length;
if (nSubrs < 1240)
bias = 107;
else if (nSubrs < 33900)
bias = 1131;
else
bias = 32768;
obj.Bias = bias;
obj.Subrs = [];
for (var i = 0; i < gsubinds.length - 1; i++)
obj.Subrs.push(bin.readBytes(data, offset + gsubinds[i], gsubinds[i + 1] - gsubinds[i]));
};
Typr.CFF.tableSE = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 0, 111, 112, 113, 114, 0, 115, 116, 117, 118, 119, 120, 121, 122, 0, 123, 0, 124, 125, 126, 127, 128, 129, 130, 131, 0, 132, 133, 0, 134, 135, 136, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 139, 0, 0, 0, 0, 140, 141, 142, 143, 0, 0, 0, 0, 0, 144, 0, 0, 0, 145, 0, 0, 146, 147, 148, 149, 0, 0, 0, 0];
Typr.CFF.glyphByUnicode = function(cff, code) {
for (var i = 0; i < cff.charset.length; i++)
if (cff.charset[i] == code)
return i;
return -1;
};
Typr.CFF.glyphBySE = function(cff, charcode) {
if (charcode < 0 || charcode > 255)
return -1;
return Typr.CFF.glyphByUnicode(cff, Typr.CFF.tableSE[charcode]);
};
Typr.CFF.readEncoding = function(data, offset, num) {
Typr._bin;
var array = [".notdef"];
var format = data[offset];
offset++;
if (format == 0) {
var nCodes = data[offset];
offset++;
for (var i = 0; i < nCodes; i++)
array.push(data[offset + i]);
} else
throw "error: unknown encoding format: " + format;
return array;
};
Typr.CFF.readCharset = function(data, offset, num) {
var bin = Typr._bin;
var charset = [".notdef"];
var format = data[offset];
offset++;
if (format == 0) {
for (var i = 0; i < num; i++) {
var first = bin.readUshort(data, offset);
offset += 2;
charset.push(first);
}
} else if (format == 1 || format == 2) {
while (charset.length < num) {
var first = bin.readUshort(data, offset);
offset += 2;
var nLeft = 0;
if (format == 1) {
nLeft = data[offset];
offset++;
} else {
nLeft = bin.readUshort(data, offset);
offset += 2;
}
for (var i = 0; i <= nLeft; i++) {
charset.push(first);
first++;
}
}
} else
throw "error: format: " + format;
return charset;
};
Typr.CFF.readIndex = function(data, offset, inds) {
var bin = Typr._bin;
var count = bin.readUshort(data, offset);
offset += 2;
var offsize = data[offset];
offset++;
if (offsize == 1)
for (var i = 0; i < count + 1; i++)
inds.push(data[offset + i]);
else if (offsize == 2)
for (var i = 0; i < count + 1; i++)
inds.push(bin.readUshort(data, offset + i * 2));
else if (offsize == 3)
for (var i = 0; i < count + 1; i++)
inds.push(bin.readUint(data, offset + i * 3 - 1) & 16777215);
else if (count != 0)
throw "unsupported offset size: " + offsize + ", count: " + count;
offset += (count + 1) * offsize;
return offset - 1;
};
Typr.CFF.getCharString = function(data, offset, o) {
var bin = Typr._bin;
var b0 = data[offset], b1 = data[offset + 1];
data[offset + 2];
data[offset + 3];
data[offset + 4];
var vs = 1;
var op = null, val = null;
if (b0 <= 20) {
op = b0;
vs = 1;
}
if (b0 == 12) {
op = b0 * 100 + b1;
vs = 2;
}
if (21 <= b0 && b0 <= 27) {
op = b0;
vs = 1;
}
if (b0 == 28) {
val = bin.readShort(data, offset + 1);
vs = 3;
}
if (29 <= b0 && b0 <= 31) {
op = b0;
vs = 1;
}
if (32 <= b0 && b0 <= 246) {
val = b0 - 139;
vs = 1;
}
if (247 <= b0 && b0 <= 250) {
val = (b0 - 247) * 256 + b1 + 108;
vs = 2;
}
if (251 <= b0 && b0 <= 254) {
val = -(b0 - 251) * 256 - b1 - 108;
vs = 2;
}
if (b0 == 255) {
val = bin.readInt(data, offset + 1) / 65535;
vs = 5;
}
o.val = val != null ? val : "o" + op;
o.size = vs;
};
Typr.CFF.readCharString = function(data, offset, length) {
var end = offset + length;
var bin = Typr._bin;
var arr = [];
while (offset < end) {
var b0 = data[offset], b1 = data[offset + 1];
data[offset + 2];
data[offset + 3];
data[offset + 4];
var vs = 1;
var op = null, val = null;
if (b0 <= 20) {
op = b0;
vs = 1;
}
if (b0 == 12) {
op = b0 * 100 + b1;
vs = 2;
}
if (b0 == 19 || b0 == 20) {
op = b0;
vs = 2;
}
if (21 <= b0 && b0 <= 27) {
op = b0;
vs = 1;
}
if (b0 == 28) {
val = bin.readShort(data, offset + 1);
vs = 3;
}
if (29 <= b0 && b0 <= 31) {
op = b0;
vs = 1;
}
if (32 <= b0 && b0 <= 246) {
val = b0 - 139;
vs = 1;
}
if (247 <= b0 && b0 <= 250) {
val = (b0 - 247) * 256 + b1 + 108;
vs = 2;
}
if (251 <= b0 && b0 <= 254) {
val = -(b0 - 251) * 256 - b1 - 108;
vs = 2;
}
if (b0 == 255) {
val = bin.readInt(data, offset + 1) / 65535;
vs = 5;
}
arr.push(val != null ? val : "o" + op);
offset += vs;
}
return arr;
};
Typr.CFF.readDict = function(data, offset, end) {
var bin = Typr._bin;
var dict = {};
var carr = [];
while (offset < end) {
var b0 = data[offset], b1 = data[offset + 1];
data[offset + 2];
data[offset + 3];
data[offset + 4];
var vs = 1;
var key2 = null, val = null;
if (b0 == 28) {
val = bin.readShort(data, offset + 1);
vs = 3;
}
if (b0 == 29) {
val = bin.readInt(data, offset + 1);
vs = 5;
}
if (32 <= b0 && b0 <= 246) {
val = b0 - 139;
vs = 1;
}
if (247 <= b0 && b0 <= 250) {
val = (b0 - 247) * 256 + b1 + 108;
vs = 2;
}
if (251 <= b0 && b0 <= 254) {
val = -(b0 - 251) * 256 - b1 - 108;
vs = 2;
}
if (b0 == 255) {
val = bin.readInt(data, offset + 1) / 65535;
vs = 5;
throw "unknown number";
}
if (b0 == 30) {
var nibs = [];
vs = 1;
while (true) {
var b = data[offset + vs];
vs++;
var nib0 = b >> 4, nib1 = b & 15;
if (nib0 != 15)
nibs.push(nib0);
if (nib1 != 15)
nibs.push(nib1);
if (nib1 == 15)
break;
}
var s = "";
var chars = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ".", "e", "e-", "reserved", "-", "endOfNumber"];
for (var i = 0; i < nibs.length; i++)
s += chars[nibs[i]];
val = parseFloat(s);
}
if (b0 <= 21) {
var keys = ["version", "Notice", "FullName", "FamilyName", "Weight", "FontBBox", "BlueValues", "OtherBlues", "FamilyBlues", "FamilyOtherBlues", "StdHW", "StdVW", "escape", "UniqueID", "XUID", "charset", "Encoding", "CharStrings", "Private", "Subrs", "defaultWidthX", "nominalWidthX"];
key2 = keys[b0];
vs = 1;
if (b0 == 12) {
var keys = ["Copyright", "isFixedPitch", "ItalicAngle", "UnderlinePosition", "UnderlineThickness", "PaintType", "CharstringType", "FontMatrix", "StrokeWidth", "BlueScale", "BlueShift", "BlueFuzz", "StemSnapH", "StemSnapV", "ForceBold", 0, 0, "LanguageGroup", "ExpansionFactor", "initialRandomSeed", "SyntheticBase", "PostScript", "BaseFontName", "BaseFontBlend", 0, 0, 0, 0, 0, 0, "ROS", "CIDFontVersion", "CIDFontRevision", "CIDFontType", "CIDCount", "UIDBase", "FDArray", "FDSelect", "FontName"];
key2 = keys[b1];
vs = 2;
}
}
if (key2 != null) {
dict[key2] = carr.length == 1 ? carr[0] : carr;
carr = [];
} else
carr.push(val);
offset += vs;
}
return dict;
};
Typr.cmap = {};
Typr.cmap.parse = function(data, offset, length) {
data = new Uint8Array(data.buffer, offset, length);
offset = 0;
var bin = Typr._bin;
var obj = {};
bin.readUshort(data, offset);
offset += 2;
var numTables = bin.readUshort(data, offset);
offset += 2;
var offs = [];
obj.tables = [];
for (var i = 0; i < numTables; i++) {
var platformID = bin.readUshort(data, offset);
offset += 2;
var encodingID = bin.readUshort(data, offset);
offset += 2;
var noffset = bin.readUint(data, offset);
offset += 4;
var id = "p" + platformID + "e" + encodingID;
var tind = offs.indexOf(noffset);
if (tind == -1) {
tind = obj.tables.length;
var subt;
offs.push(noffset);
var format = bin.readUshort(data, noffset);
if (format == 0)
subt = Typr.cmap.parse0(data, noffset);
else if (format == 4)
subt = Typr.cmap.parse4(data, noffset);
else if (format == 6)
subt = Typr.cmap.parse6(data, noffset);
else if (format == 12)
subt = Typr.cmap.parse12(data, noffset);
else
console.log("unknown format: " + format, platformID, encodingID, noffset);
obj.tables.push(subt);
}
if (obj[id] != null)
throw "multiple tables for one platform+encoding";
obj[id] = tind;
}
return obj;
};
Typr.cmap.parse0 = function(data, offset) {
var bin = Typr._bin;
var obj = {};
obj.format = bin.readUshort(data, offset);
offset += 2;
var len = bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
obj.map = [];
for (var i = 0; i < len - 6; i++)
obj.map.push(data[offset + i]);
return obj;
};
Typr.cmap.parse4 = function(data, offset) {
var bin = Typr._bin;
var offset0 = offset;
var obj = {};
obj.format = bin.readUshort(data, offset);
offset += 2;
var length = bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
var segCountX2 = bin.readUshort(data, offset);
offset += 2;
var segCount = segCountX2 / 2;
obj.searchRange = bin.readUshort(data, offset);
offset += 2;
obj.entrySelector = bin.readUshort(data, offset);
offset += 2;
obj.rangeShift = bin.readUshort(data, offset);
offset += 2;
obj.endCount = bin.readUshorts(data, offset, segCount);
offset += segCount * 2;
offset += 2;
obj.startCount = bin.readUshorts(data, offset, segCount);
offset += segCount * 2;
obj.idDelta = [];
for (var i = 0; i < segCount; i++) {
obj.idDelta.push(bin.readShort(data, offset));
offset += 2;
}
obj.idRangeOffset = bin.readUshorts(data, offset, segCount);
offset += segCount * 2;
obj.glyphIdArray = [];
while (offset < offset0 + length) {
obj.glyphIdArray.push(bin.readUshort(data, offset));
offset += 2;
}
return obj;
};
Typr.cmap.parse6 = function(data, offset) {
var bin = Typr._bin;
var obj = {};
obj.format = bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
obj.firstCode = bin.readUshort(data, offset);
offset += 2;
var entryCount = bin.readUshort(data, offset);
offset += 2;
obj.glyphIdArray = [];
for (var i = 0; i < entryCount; i++) {
obj.glyphIdArray.push(bin.readUshort(data, offset));
offset += 2;
}
return obj;
};
Typr.cmap.parse12 = function(data, offset) {
var bin = Typr._bin;
var obj = {};
obj.format = bin.readUshort(data, offset);
offset += 2;
offset += 2;
bin.readUint(data, offset);
offset += 4;
bin.readUint(data, offset);
offset += 4;
var nGroups = bin.readUint(data, offset);
offset += 4;
obj.groups = [];
for (var i = 0; i < nGroups; i++) {
var off = offset + i * 12;
var startCharCode = bin.readUint(data, off + 0);
var endCharCode = bin.readUint(data, off + 4);
var startGlyphID = bin.readUint(data, off + 8);
obj.groups.push([startCharCode, endCharCode, startGlyphID]);
}
return obj;
};
Typr.glyf = {};
Typr.glyf.parse = function(data, offset, length, font) {
var obj = [];
for (var g = 0; g < font.maxp.numGlyphs; g++)
obj.push(null);
return obj;
};
Typr.glyf._parseGlyf = function(font, g) {
var bin = Typr._bin;
var data = font._data;
var offset = Typr._tabOffset(data, "glyf") + font.loca[g];
if (font.loca[g] == font.loca[g + 1])
return null;
var gl = {};
gl.noc = bin.readShort(data, offset);
offset += 2;
gl.xMin = bin.readShort(data, offset);
offset += 2;
gl.yMin = bin.readShort(data, offset);
offset += 2;
gl.xMax = bin.readShort(data, offset);
offset += 2;
gl.yMax = bin.readShort(data, offset);
offset += 2;
if (gl.xMin >= gl.xMax || gl.yMin >= gl.yMax)
return null;
if (gl.noc > 0) {
gl.endPts = [];
for (var i = 0; i < gl.noc; i++) {
gl.endPts.push(bin.readUshort(data, offset));
offset += 2;
}
var instructionLength = bin.readUshort(data, offset);
offset += 2;
if (data.length - offset < instructionLength)
return null;
gl.instructions = bin.readBytes(data, offset, instructionLength);
offset += instructionLength;
var crdnum = gl.endPts[gl.noc - 1] + 1;
gl.flags = [];
for (var i = 0; i < crdnum; i++) {
var flag = data[offset];
offset++;
gl.flags.push(flag);
if ((flag & 8) != 0) {
var rep = data[offset];
offset++;
for (var j = 0; j < rep; j++) {
gl.flags.push(flag);
i++;
}
}
}
gl.xs = [];
for (var i = 0; i < crdnum; i++) {
var i8 = (gl.flags[i] & 2) != 0, same = (gl.flags[i] & 16) != 0;
if (i8) {
gl.xs.push(same ? data[offset] : -data[offset]);
offset++;
} else {
if (same)
gl.xs.push(0);
else {
gl.xs.push(bin.readShort(data, offset));
offset += 2;
}
}
}
gl.ys = [];
for (var i = 0; i < crdnum; i++) {
var i8 = (gl.flags[i] & 4) != 0, same = (gl.flags[i] & 32) != 0;
if (i8) {
gl.ys.push(same ? data[offset] : -data[offset]);
offset++;
} else {
if (same)
gl.ys.push(0);
else {
gl.ys.push(bin.readShort(data, offset));
offset += 2;
}
}
}
var x = 0, y = 0;
for (var i = 0; i < crdnum; i++) {
x += gl.xs[i];
y += gl.ys[i];
gl.xs[i] = x;
gl.ys[i] = y;
}
} else {
var ARG_1_AND_2_ARE_WORDS = 1 << 0;
var ARGS_ARE_XY_VALUES = 1 << 1;
var WE_HAVE_A_SCALE = 1 << 3;
var MORE_COMPONENTS = 1 << 5;
var WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;
var WE_HAVE_A_TWO_BY_TWO = 1 << 7;
var WE_HAVE_INSTRUCTIONS = 1 << 8;
gl.parts = [];
var flags;
do {
flags = bin.readUshort(data, offset);
offset += 2;
var part = { m: { a: 1, b: 0, c: 0, d: 1, tx: 0, ty: 0 }, p1: -1, p2: -1 };
gl.parts.push(part);
part.glyphIndex = bin.readUshort(data, offset);
offset += 2;
if (flags & ARG_1_AND_2_ARE_WORDS) {
var arg1 = bin.readShort(data, offset);
offset += 2;
var arg2 = bin.readShort(data, offset);
offset += 2;
} else {
var arg1 = bin.readInt8(data, offset);
offset++;
var arg2 = bin.readInt8(data, offset);
offset++;
}
if (flags & ARGS_ARE_XY_VALUES) {
part.m.tx = arg1;
part.m.ty = arg2;
} else {
part.p1 = arg1;
part.p2 = arg2;
}
if (flags & WE_HAVE_A_SCALE) {
part.m.a = part.m.d = bin.readF2dot14(data, offset);
offset += 2;
} else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {
part.m.a = bin.readF2dot14(data, offset);
offset += 2;
part.m.d = bin.readF2dot14(data, offset);
offset += 2;
} else if (flags & WE_HAVE_A_TWO_BY_TWO) {
part.m.a = bin.readF2dot14(data, offset);
offset += 2;
part.m.b = bin.readF2dot14(data, offset);
offset += 2;
part.m.c = bin.readF2dot14(data, offset);
offset += 2;
part.m.d = bin.readF2dot14(data, offset);
offset += 2;
}
} while (flags & MORE_COMPONENTS);
if (flags & WE_HAVE_INSTRUCTIONS) {
var numInstr = bin.readUshort(data, offset);
offset += 2;
gl.instr = [];
for (var i = 0; i < numInstr; i++) {
gl.instr.push(data[offset]);
offset++;
}
}
}
return gl;
};
Typr.GPOS = {};
Typr.GPOS.parse = function(data, offset, length, font) {
return Typr._lctf.parse(data, offset, length, font, Typr.GPOS.subt);
};
Typr.GPOS.subt = function(data, ltype, offset) {
if (ltype != 2)
return null;
var bin = Typr._bin, offset0 = offset, tab = {};
tab.format = bin.readUshort(data, offset);
offset += 2;
var covOff = bin.readUshort(data, offset);
offset += 2;
tab.coverage = Typr._lctf.readCoverage(data, covOff + offset0);
tab.valFmt1 = bin.readUshort(data, offset);
offset += 2;
tab.valFmt2 = bin.readUshort(data, offset);
offset += 2;
var ones1 = Typr._lctf.numOfOnes(tab.valFmt1);
var ones2 = Typr._lctf.numOfOnes(tab.valFmt2);
if (tab.format == 1) {
tab.pairsets = [];
var count = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < count; i++) {
var psoff = bin.readUshort(data, offset);
offset += 2;
psoff += offset0;
var pvcount = bin.readUshort(data, psoff);
psoff += 2;
var arr = [];
for (var j = 0; j < pvcount; j++) {
var gid2 = bin.readUshort(data, psoff);
psoff += 2;
var value1, value2;
if (tab.valFmt1 != 0) {
value1 = Typr._lctf.readValueRecord(data, psoff, tab.valFmt1);
psoff += ones1 * 2;
}
if (tab.valFmt2 != 0) {
value2 = Typr._lctf.readValueRecord(data, psoff, tab.valFmt2);
psoff += ones2 * 2;
}
arr.push({ gid2, val1: value1, val2: value2 });
}
tab.pairsets.push(arr);
}
}
if (tab.format == 2) {
var classDef1 = bin.readUshort(data, offset);
offset += 2;
var classDef2 = bin.readUshort(data, offset);
offset += 2;
var class1Count = bin.readUshort(data, offset);
offset += 2;
var class2Count = bin.readUshort(data, offset);
offset += 2;
tab.classDef1 = Typr._lctf.readClassDef(data, offset0 + classDef1);
tab.classDef2 = Typr._lctf.readClassDef(data, offset0 + classDef2);
tab.matrix = [];
for (var i = 0; i < class1Count; i++) {
var row = [];
for (var j = 0; j < class2Count; j++) {
var value1 = null, value2 = null;
if (tab.valFmt1 != 0) {
value1 = Typr._lctf.readValueRecord(data, offset, tab.valFmt1);
offset += ones1 * 2;
}
if (tab.valFmt2 != 0) {
value2 = Typr._lctf.readValueRecord(data, offset, tab.valFmt2);
offset += ones2 * 2;
}
row.push({ val1: value1, val2: value2 });
}
tab.matrix.push(row);
}
}
return tab;
};
Typr.GSUB = {};
Typr.GSUB.parse = function(data, offset, length, font) {
return Typr._lctf.parse(data, offset, length, font, Typr.GSUB.subt);
};
Typr.GSUB.subt = function(data, ltype, offset) {
var bin = Typr._bin, offset0 = offset, tab = {};
if (ltype != 1 && ltype != 4 && ltype != 5)
return null;
tab.fmt = bin.readUshort(data, offset);
offset += 2;
var covOff = bin.readUshort(data, offset);
offset += 2;
tab.coverage = Typr._lctf.readCoverage(data, covOff + offset0);
if (ltype == 1) {
if (tab.fmt == 1) {
tab.delta = bin.readShort(data, offset);
offset += 2;
} else if (tab.fmt == 2) {
var cnt = bin.readUshort(data, offset);
offset += 2;
tab.newg = bin.readUshorts(data, offset, cnt);
offset += tab.newg.length * 2;
}
} else if (ltype == 4) {
tab.vals = [];
var cnt = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < cnt; i++) {
var loff = bin.readUshort(data, offset);
offset += 2;
tab.vals.push(Typr.GSUB.readLigatureSet(data, offset0 + loff));
}
} else if (ltype == 5) {
if (tab.fmt == 2) {
var cDefOffset = bin.readUshort(data, offset);
offset += 2;
tab.cDef = Typr._lctf.readClassDef(data, offset0 + cDefOffset);
tab.scset = [];
var subClassSetCount = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < subClassSetCount; i++) {
var scsOff = bin.readUshort(data, offset);
offset += 2;
tab.scset.push(scsOff == 0 ? null : Typr.GSUB.readSubClassSet(data, offset0 + scsOff));
}
} else
console.log("unknown table format", tab.fmt);
}
return tab;
};
Typr.GSUB.readSubClassSet = function(data, offset) {
var rUs = Typr._bin.readUshort, offset0 = offset, lset = [];
var cnt = rUs(data, offset);
offset += 2;
for (var i = 0; i < cnt; i++) {
var loff = rUs(data, offset);
offset += 2;
lset.push(Typr.GSUB.readSubClassRule(data, offset0 + loff));
}
return lset;
};
Typr.GSUB.readSubClassRule = function(data, offset) {
var rUs = Typr._bin.readUshort, rule2 = {};
var gcount = rUs(data, offset);
offset += 2;
var scount = rUs(data, offset);
offset += 2;
rule2.input = [];
for (var i = 0; i < gcount - 1; i++) {
rule2.input.push(rUs(data, offset));
offset += 2;
}
rule2.substLookupRecords = Typr.GSUB.readSubstLookupRecords(data, offset, scount);
return rule2;
};
Typr.GSUB.readSubstLookupRecords = function(data, offset, cnt) {
var rUs = Typr._bin.readUshort;
var out = [];
for (var i = 0; i < cnt; i++) {
out.push(rUs(data, offset), rUs(data, offset + 2));
offset += 4;
}
return out;
};
Typr.GSUB.readChainSubClassSet = function(data, offset) {
var bin = Typr._bin, offset0 = offset, lset = [];
var cnt = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < cnt; i++) {
var loff = bin.readUshort(data, offset);
offset += 2;
lset.push(Typr.GSUB.readChainSubClassRule(data, offset0 + loff));
}
return lset;
};
Typr.GSUB.readChainSubClassRule = function(data, offset) {
var bin = Typr._bin, rule2 = {};
var pps = ["backtrack", "input", "lookahead"];
for (var pi = 0; pi < pps.length; pi++) {
var cnt = bin.readUshort(data, offset);
offset += 2;
if (pi == 1)
cnt--;
rule2[pps[pi]] = bin.readUshorts(data, offset, cnt);
offset += rule2[pps[pi]].length * 2;
}
var cnt = bin.readUshort(data, offset);
offset += 2;
rule2.subst = bin.readUshorts(data, offset, cnt * 2);
offset += rule2.subst.length * 2;
return rule2;
};
Typr.GSUB.readLigatureSet = function(data, offset) {
var bin = Typr._bin, offset0 = offset, lset = [];
var lcnt = bin.readUshort(data, offset);
offset += 2;
for (var j = 0; j < lcnt; j++) {
var loff = bin.readUshort(data, offset);
offset += 2;
lset.push(Typr.GSUB.readLigature(data, offset0 + loff));
}
return lset;
};
Typr.GSUB.readLigature = function(data, offset) {
var bin = Typr._bin, lig = { chain: [] };
lig.nglyph = bin.readUshort(data, offset);
offset += 2;
var ccnt = bin.readUshort(data, offset);
offset += 2;
for (var k = 0; k < ccnt - 1; k++) {
lig.chain.push(bin.readUshort(data, offset));
offset += 2;
}
return lig;
};
Typr.head = {};
Typr.head.parse = function(data, offset, length) {
var bin = Typr._bin;
var obj = {};
bin.readFixed(data, offset);
offset += 4;
obj.fontRevision = bin.readFixed(data, offset);
offset += 4;
bin.readUint(data, offset);
offset += 4;
bin.readUint(data, offset);
offset += 4;
obj.flags = bin.readUshort(data, offset);
offset += 2;
obj.unitsPerEm = bin.readUshort(data, offset);
offset += 2;
obj.created = bin.readUint64(data, offset);
offset += 8;
obj.modified = bin.readUint64(data, offset);
offset += 8;
obj.xMin = bin.readShort(data, offset);
offset += 2;
obj.yMin = bin.readShort(data, offset);
offset += 2;
obj.xMax = bin.readShort(data, offset);
offset += 2;
obj.yMax = bin.readShort(data, offset);
offset += 2;
obj.macStyle = bin.readUshort(data, offset);
offset += 2;
obj.lowestRecPPEM = bin.readUshort(data, offset);
offset += 2;
obj.fontDirectionHint = bin.readShort(data, offset);
offset += 2;
obj.indexToLocFormat = bin.readShort(data, offset);
offset += 2;
obj.glyphDataFormat = bin.readShort(data, offset);
offset += 2;
return obj;
};
Typr.hhea = {};
Typr.hhea.parse = function(data, offset, length) {
var bin = Typr._bin;
var obj = {};
bin.readFixed(data, offset);
offset += 4;
obj.ascender = bin.readShort(data, offset);
offset += 2;
obj.descender = bin.readShort(data, offset);
offset += 2;
obj.lineGap = bin.readShort(data, offset);
offset += 2;
obj.advanceWidthMax = bin.readUshort(data, offset);
offset += 2;
obj.minLeftSideBearing = bin.readShort(data, offset);
offset += 2;
obj.minRightSideBearing = bin.readShort(data, offset);
offset += 2;
obj.xMaxExtent = bin.readShort(data, offset);
offset += 2;
obj.caretSlopeRise = bin.readShort(data, offset);
offset += 2;
obj.caretSlopeRun = bin.readShort(data, offset);
offset += 2;
obj.caretOffset = bin.readShort(data, offset);
offset += 2;
offset += 4 * 2;
obj.metricDataFormat = bin.readShort(data, offset);
offset += 2;
obj.numberOfHMetrics = bin.readUshort(data, offset);
offset += 2;
return obj;
};
Typr.hmtx = {};
Typr.hmtx.parse = function(data, offset, length, font) {
var bin = Typr._bin;
var obj = {};
obj.aWidth = [];
obj.lsBearing = [];
var aw = 0, lsb = 0;
for (var i = 0; i < font.maxp.numGlyphs; i++) {
if (i < font.hhea.numberOfHMetrics) {
aw = bin.readUshort(data, offset);
offset += 2;
lsb = bin.readShort(data, offset);
offset += 2;
}
obj.aWidth.push(aw);
obj.lsBearing.push(lsb);
}
return obj;
};
Typr.kern = {};
Typr.kern.parse = function(data, offset, length, font) {
var bin = Typr._bin;
var version = bin.readUshort(data, offset);
offset += 2;
if (version == 1)
return Typr.kern.parseV1(data, offset - 2, length, font);
var nTables = bin.readUshort(data, offset);
offset += 2;
var map = { glyph1: [], rval: [] };
for (var i = 0; i < nTables; i++) {
offset += 2;
var length = bin.readUshort(data, offset);
offset += 2;
var coverage = bin.readUshort(data, offset);
offset += 2;
var format = coverage >>> 8;
format &= 15;
if (format == 0)
offset = Typr.kern.readFormat0(data, offset, map);
else
throw "unknown kern table format: " + format;
}
return map;
};
Typr.kern.parseV1 = function(data, offset, length, font) {
var bin = Typr._bin;
bin.readFixed(data, offset);
offset += 4;
var nTables = bin.readUint(data, offset);
offset += 4;
var map = { glyph1: [], rval: [] };
for (var i = 0; i < nTables; i++) {
bin.readUint(data, offset);
offset += 4;
var coverage = bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
var format = coverage >>> 8;
format &= 15;
if (format == 0)
offset = Typr.kern.readFormat0(data, offset, map);
else
throw "unknown kern table format: " + format;
}
return map;
};
Typr.kern.readFormat0 = function(data, offset, map) {
var bin = Typr._bin;
var pleft = -1;
var nPairs = bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
for (var j = 0; j < nPairs; j++) {
var left = bin.readUshort(data, offset);
offset += 2;
var right = bin.readUshort(data, offset);
offset += 2;
var value = bin.readShort(data, offset);
offset += 2;
if (left != pleft) {
map.glyph1.push(left);
map.rval.push({ glyph2: [], vals: [] });
}
var rval = map.rval[map.rval.length - 1];
rval.glyph2.push(right);
rval.vals.push(value);
pleft = left;
}
return offset;
};
Typr.loca = {};
Typr.loca.parse = function(data, offset, length, font) {
var bin = Typr._bin;
var obj = [];
var ver = font.head.indexToLocFormat;
var len = font.maxp.numGlyphs + 1;
if (ver == 0)
for (var i = 0; i < len; i++)
obj.push(bin.readUshort(data, offset + (i << 1)) << 1);
if (ver == 1)
for (var i = 0; i < len; i++)
obj.push(bin.readUint(data, offset + (i << 2)));
return obj;
};
Typr.maxp = {};
Typr.maxp.parse = function(data, offset, length) {
var bin = Typr._bin;
var obj = {};
var ver = bin.readUint(data, offset);
offset += 4;
obj.numGlyphs = bin.readUshort(data, offset);
offset += 2;
if (ver == 65536) {
obj.maxPoints = bin.readUshort(data, offset);
offset += 2;
obj.maxContours = bin.readUshort(data, offset);
offset += 2;
obj.maxCompositePoints = bin.readUshort(data, offset);
offset += 2;
obj.maxCompositeContours = bin.readUshort(data, offset);
offset += 2;
obj.maxZones = bin.readUshort(data, offset);
offset += 2;
obj.maxTwilightPoints = bin.readUshort(data, offset);
offset += 2;
obj.maxStorage = bin.readUshort(data, offset);
offset += 2;
obj.maxFunctionDefs = bin.readUshort(data, offset);
offset += 2;
obj.maxInstructionDefs = bin.readUshort(data, offset);
offset += 2;
obj.maxStackElements = bin.readUshort(data, offset);
offset += 2;
obj.maxSizeOfInstructions = bin.readUshort(data, offset);
offset += 2;
obj.maxComponentElements = bin.readUshort(data, offset);
offset += 2;
obj.maxComponentDepth = bin.readUshort(data, offset);
offset += 2;
}
return obj;
};
Typr.name = {};
Typr.name.parse = function(data, offset, length) {
var bin = Typr._bin;
var obj = {};
bin.readUshort(data, offset);
offset += 2;
var count = bin.readUshort(data, offset);
offset += 2;
bin.readUshort(data, offset);
offset += 2;
var offset0 = offset;
for (var i = 0; i < count; i++) {
var platformID = bin.readUshort(data, offset);
offset += 2;
var encodingID = bin.readUshort(data, offset);
offset += 2;
var languageID = bin.readUshort(data, offset);
offset += 2;
var nameID = bin.readUshort(data, offset);
offset += 2;
var length = bin.readUshort(data, offset);
offset += 2;
var noffset = bin.readUshort(data, offset);
offset += 2;
var plat = "p" + platformID;
if (obj[plat] == null)
obj[plat] = {};
var names = ["copyright", "fontFamily", "fontSubfamily", "ID", "fullName", "version", "postScriptName", "trademark", "manufacturer", "designer", "description", "urlVendor", "urlDesigner", "licence", "licenceURL", "---", "typoFamilyName", "typoSubfamilyName", "compatibleFull", "sampleText", "postScriptCID", "wwsFamilyName", "wwsSubfamilyName", "lightPalette", "darkPalette"];
var cname = names[nameID];
var soff = offset0 + count * 12 + noffset;
var str;
if (platformID == 0)
str = bin.readUnicode(data, soff, length / 2);
else if (platformID == 3 && encodingID == 0)
str = bin.readUnicode(data, soff, length / 2);
else if (encodingID == 0)
str = bin.readASCII(data, soff, length);
else if (encodingID == 1)
str = bin.readUnicode(data, soff, length / 2);
else if (encodingID == 3)
str = bin.readUnicode(data, soff, length / 2);
else if (platformID == 1) {
str = bin.readASCII(data, soff, length);
console.log("reading unknown MAC encoding " + encodingID + " as ASCII");
} else
throw "unknown encoding " + encodingID + ", platformID: " + platformID;
obj[plat][cname] = str;
obj[plat]._lang = languageID;
}
for (var p in obj)
if (obj[p].postScriptName != null && obj[p]._lang == 1033)
return obj[p];
for (var p in obj)
if (obj[p].postScriptName != null && obj[p]._lang == 3084)
return obj[p];
for (var p in obj)
if (obj[p].postScriptName != null)
return obj[p];
var tname;
for (var p in obj) {
tname = p;
break;
}
console.log("returning name table with languageID " + obj[tname]._lang);
return obj[tname];
};
Typr["OS/2"] = {};
Typr["OS/2"].parse = function(data, offset, length) {
var bin = Typr._bin;
var ver = bin.readUshort(data, offset);
offset += 2;
var obj = {};
if (ver == 0)
Typr["OS/2"].version0(data, offset, obj);
else if (ver == 1)
Typr["OS/2"].version1(data, offset, obj);
else if (ver == 2 || ver == 3 || ver == 4)
Typr["OS/2"].version2(data, offset, obj);
else if (ver == 5)
Typr["OS/2"].version5(data, offset, obj);
else
throw "unknown OS/2 table version: " + ver;
return obj;
};
Typr["OS/2"].version0 = function(data, offset, obj) {
var bin = Typr._bin;
obj.xAvgCharWidth = bin.readShort(data, offset);
offset += 2;
obj.usWeightClass = bin.readUshort(data, offset);
offset += 2;
obj.usWidthClass = bin.readUshort(data, offset);
offset += 2;
obj.fsType = bin.readUshort(data, offset);
offset += 2;
obj.ySubscriptXSize = bin.readShort(data, offset);
offset += 2;
obj.ySubscriptYSize = bin.readShort(data, offset);
offset += 2;
obj.ySubscriptXOffset = bin.readShort(data, offset);
offset += 2;
obj.ySubscriptYOffset = bin.readShort(data, offset);
offset += 2;
obj.ySuperscriptXSize = bin.readShort(data, offset);
offset += 2;
obj.ySuperscriptYSize = bin.readShort(data, offset);
offset += 2;
obj.ySuperscriptXOffset = bin.readShort(data, offset);
offset += 2;
obj.ySuperscriptYOffset = bin.readShort(data, offset);
offset += 2;
obj.yStrikeoutSize = bin.readShort(data, offset);
offset += 2;
obj.yStrikeoutPosition = bin.readShort(data, offset);
offset += 2;
obj.sFamilyClass = bin.readShort(data, offset);
offset += 2;
obj.panose = bin.readBytes(data, offset, 10);
offset += 10;
obj.ulUnicodeRange1 = bin.readUint(data, offset);
offset += 4;
obj.ulUnicodeRange2 = bin.readUint(data, offset);
offset += 4;
obj.ulUnicodeRange3 = bin.readUint(data, offset);
offset += 4;
obj.ulUnicodeRange4 = bin.readUint(data, offset);
offset += 4;
obj.achVendID = [bin.readInt8(data, offset), bin.readInt8(data, offset + 1), bin.readInt8(data, offset + 2), bin.readInt8(data, offset + 3)];
offset += 4;
obj.fsSelection = bin.readUshort(data, offset);
offset += 2;
obj.usFirstCharIndex = bin.readUshort(data, offset);
offset += 2;
obj.usLastCharIndex = bin.readUshort(data, offset);
offset += 2;
obj.sTypoAscender = bin.readShort(data, offset);
offset += 2;
obj.sTypoDescender = bin.readShort(data, offset);
offset += 2;
obj.sTypoLineGap = bin.readShort(data, offset);
offset += 2;
obj.usWinAscent = bin.readUshort(data, offset);
offset += 2;
obj.usWinDescent = bin.readUshort(data, offset);
offset += 2;
return offset;
};
Typr["OS/2"].version1 = function(data, offset, obj) {
var bin = Typr._bin;
offset = Typr["OS/2"].version0(data, offset, obj);
obj.ulCodePageRange1 = bin.readUint(data, offset);
offset += 4;
obj.ulCodePageRange2 = bin.readUint(data, offset);
offset += 4;
return offset;
};
Typr["OS/2"].version2 = function(data, offset, obj) {
var bin = Typr._bin;
offset = Typr["OS/2"].version1(data, offset, obj);
obj.sxHeight = bin.readShort(data, offset);
offset += 2;
obj.sCapHeight = bin.readShort(data, offset);
offset += 2;
obj.usDefault = bin.readUshort(data, offset);
offset += 2;
obj.usBreak = bin.readUshort(data, offset);
offset += 2;
obj.usMaxContext = bin.readUshort(data, offset);
offset += 2;
return offset;
};
Typr["OS/2"].version5 = function(data, offset, obj) {
var bin = Typr._bin;
offset = Typr["OS/2"].version2(data, offset, obj);
obj.usLowerOpticalPointSize = bin.readUshort(data, offset);
offset += 2;
obj.usUpperOpticalPointSize = bin.readUshort(data, offset);
offset += 2;
return offset;
};
Typr.post = {};
Typr.post.parse = function(data, offset, length) {
var bin = Typr._bin;
var obj = {};
obj.version = bin.readFixed(data, offset);
offset += 4;
obj.italicAngle = bin.readFixed(data, offset);
offset += 4;
obj.underlinePosition = bin.readShort(data, offset);
offset += 2;
obj.underlineThickness = bin.readShort(data, offset);
offset += 2;
return obj;
};
Typr.SVG = {};
Typr.SVG.parse = function(data, offset, length) {
var bin = Typr._bin;
var obj = { entries: [] };
var offset0 = offset;
bin.readUshort(data, offset);
offset += 2;
var svgDocIndexOffset = bin.readUint(data, offset);
offset += 4;
bin.readUint(data, offset);
offset += 4;
offset = svgDocIndexOffset + offset0;
var numEntries = bin.readUshort(data, offset);
offset += 2;
for (var i = 0; i < numEntries; i++) {
var startGlyphID = bin.readUshort(data, offset);
offset += 2;
var endGlyphID = bin.readUshort(data, offset);
offset += 2;
var svgDocOffset = bin.readUint(data, offset);
offset += 4;
var svgDocLength = bin.readUint(data, offset);
offset += 4;
var sbuf = new Uint8Array(data.buffer, offset0 + svgDocOffset + svgDocIndexOffset, svgDocLength);
var svg = bin.readUTF8(sbuf, 0, sbuf.length);
for (var f = startGlyphID; f <= endGlyphID; f++) {
obj.entries[f] = svg;
}
}
return obj;
};
Typr.SVG.toPath = function(str) {
var pth = { cmds: [], crds: [] };
if (str == null)
return pth;
var prsr = new DOMParser();
var doc = prsr["parseFromString"](str, "image/svg+xml");
var svg = doc.firstChild;
while (svg.tagName != "svg")
svg = svg.nextSibling;
var vb = svg.getAttribute("viewBox");
if (vb)
vb = vb.trim().split(" ").map(parseFloat);
else
vb = [0, 0, 1e3, 1e3];
Typr.SVG._toPath(svg.children, pth);
for (var i = 0; i < pth.crds.length; i += 2) {
var x = pth.crds[i], y = pth.crds[i + 1];
x -= vb[0];
y -= vb[1];
y = -y;
pth.crds[i] = x;
pth.crds[i + 1] = y;
}
return pth;
};
Typr.SVG._toPath = function(nds, pth, fill) {
for (var ni = 0; ni < nds.length; ni++) {
var nd = nds[ni], tn = nd.tagName;
var cfl = nd.getAttribute("fill");
if (cfl == null)
cfl = fill;
if (tn == "g")
Typr.SVG._toPath(nd.children, pth, cfl);
else if (tn == "path") {
pth.cmds.push(cfl ? cfl : "#000000");
var d = nd.getAttribute("d");
var toks = Typr.SVG._tokens(d);
Typr.SVG._toksToPath(toks, pth);
pth.cmds.push("X");
} else if (tn == "defs")
;
else
console.log(tn, nd);
}
};
Typr.SVG._tokens = function(d) {
var ts = [], off = 0, rn = false, cn = "";
while (off < d.length) {
var cc = d.charCodeAt(off), ch = d.charAt(off);
off++;
var isNum = 48 <= cc && cc <= 57 || ch == "." || ch == "-";
if (rn) {
if (ch == "-") {
ts.push(parseFloat(cn));
cn = ch;
} else if (isNum)
cn += ch;
else {
ts.push(parseFloat(cn));
if (ch != "," && ch != " ")
ts.push(ch);
rn = false;
}
} else {
if (isNum) {
cn = ch;
rn = true;
} else if (ch != "," && ch != " ")
ts.push(ch);
}
}
if (rn)
ts.push(parseFloat(cn));
return ts;
};
Typr.SVG._toksToPath = function(ts, pth) {
var i = 0, x = 0, y = 0, ox = 0, oy = 0;
var pc = { M: 2, L: 2, H: 1, V: 1, S: 4, C: 6 };
var cmds = pth.cmds, crds = pth.crds;
while (i < ts.length) {
var cmd = ts[i];
i++;
if (cmd == "z") {
cmds.push("Z");
x = ox;
y = oy;
} else {
var cmu = cmd.toUpperCase();
var ps = pc[cmu], reps = Typr.SVG._reps(ts, i, ps);
for (var j = 0; j < reps; j++) {
var xi = 0, yi = 0;
if (cmd != cmu) {
xi = x;
yi = y;
}
if (cmu == "M") {
x = xi + ts[i++];
y = yi + ts[i++];
cmds.push("M");
crds.push(x, y);
ox = x;
oy = y;
} else if (cmu == "L") {
x = xi + ts[i++];
y = yi + ts[i++];
cmds.push("L");
crds.push(x, y);
} else if (cmu == "H") {
x = xi + ts[i++];
cmds.push("L");
crds.push(x, y);
} else if (cmu == "V") {
y = yi + ts[i++];
cmds.push("L");
crds.push(x, y);
} else if (cmu == "C") {
var x1 = xi + ts[i++], y1 = yi + ts[i++], x2 = xi + ts[i++], y2 = yi + ts[i++], x3 = xi + ts[i++], y3 = yi + ts[i++];
cmds.push("C");
crds.push(x1, y1, x2, y2, x3, y3);
x = x3;
y = y3;
} else if (cmu == "S") {
var co = Math.max(crds.length - 4, 0);
var x1 = x + x - crds[co], y1 = y + y - crds[co + 1];
var x2 = xi + ts[i++], y2 = yi + ts[i++], x3 = xi + ts[i++], y3 = yi + ts[i++];
cmds.push("C");
crds.push(x1, y1, x2, y2, x3, y3);
x = x3;
y = y3;
} else
console.log("Unknown SVG command " + cmd);
}
}
}
};
Typr.SVG._reps = function(ts, off, ps) {
var i = off;
while (i < ts.length) {
if (typeof ts[i] == "string")
break;
i += ps;
}
return (i - off) / ps;
};
if (Typr == null)
Typr = {};
if (Typr.U == null)
Typr.U = {};
Typr.U.codeToGlyph = function(font, code) {
var cmap = font.cmap;
var tind = -1;
if (cmap.p0e4 != null)
tind = cmap.p0e4;
else if (cmap.p3e1 != null)
tind = cmap.p3e1;
else if (cmap.p1e0 != null)
tind = cmap.p1e0;
if (tind == -1)
throw "no familiar platform and encoding!";
var tab = cmap.tables[tind];
if (tab.format == 0) {
if (code >= tab.map.length)
return 0;
return tab.map[code];
} else if (tab.format == 4) {
var sind = -1;
for (var i = 0; i < tab.endCount.length; i++)
if (code <= tab.endCount[i]) {
sind = i;
break;
}
if (sind == -1)
return 0;
if (tab.startCount[sind] > code)
return 0;
var gli = 0;
if (tab.idRangeOffset[sind] != 0)
gli = tab.glyphIdArray[code - tab.startCount[sind] + (tab.idRangeOffset[sind] >> 1) - (tab.idRangeOffset.length - sind)];
else
gli = code + tab.idDelta[sind];
return gli & 65535;
} else if (tab.format == 12) {
if (code > tab.groups[tab.groups.length - 1][1])
return 0;
for (var i = 0; i < tab.groups.length; i++) {
var grp = tab.groups[i];
if (grp[0] <= code && code <= grp[1])
return grp[2] + (code - grp[0]);
}
return 0;
} else
throw "unknown cmap table format " + tab.format;
};
Typr.U.glyphToPath = function(font, gid) {
var path = { cmds: [], crds: [] };
if (font.SVG && font.SVG.entries[gid]) {
var p = font.SVG.entries[gid];
if (p == null)
return path;
if (typeof p == "string") {
p = Typr.SVG.toPath(p);
font.SVG.entries[gid] = p;
}
return p;
} else if (font.CFF) {
var state = { x: 0, y: 0, stack: [], nStems: 0, haveWidth: false, width: font.CFF.Private ? font.CFF.Private.defaultWidthX : 0, open: false };
Typr.U._drawCFF(font.CFF.CharStrings[gid], state, font.CFF, path);
} else if (font.glyf) {
Typr.U._drawGlyf(gid, font, path);
}
return path;
};
Typr.U._drawGlyf = function(gid, font, path) {
var gl = font.glyf[gid];
if (gl == null)
gl = font.glyf[gid] = Typr.glyf._parseGlyf(font, gid);
if (gl != null) {
if (gl.noc > -1)
Typr.U._simpleGlyph(gl, path);
else
Typr.U._compoGlyph(gl, font, path);
}
};
Typr.U._simpleGlyph = function(gl, p) {
for (var c = 0; c < gl.noc; c++) {
var i0 = c == 0 ? 0 : gl.endPts[c - 1] + 1;
var il = gl.endPts[c];
for (var i = i0; i <= il; i++) {
var pr = i == i0 ? il : i - 1;
var nx = i == il ? i0 : i + 1;
var onCurve = gl.flags[i] & 1;
var prOnCurve = gl.flags[pr] & 1;
var nxOnCurve = gl.flags[nx] & 1;
var x = gl.xs[i], y = gl.ys[i];
if (i == i0) {
if (onCurve) {
if (prOnCurve)
Typr.U.P.moveTo(p, gl.xs[pr], gl.ys[pr]);
else {
Typr.U.P.moveTo(p, x, y);
continue;
}
} else {
if (prOnCurve)
Typr.U.P.moveTo(p, gl.xs[pr], gl.ys[pr]);
else
Typr.U.P.moveTo(p, (gl.xs[pr] + x) / 2, (gl.ys[pr] + y) / 2);
}
}
if (onCurve) {
if (prOnCurve)
Typr.U.P.lineTo(p, x, y);
} else {
if (nxOnCurve)
Typr.U.P.qcurveTo(p, x, y, gl.xs[nx], gl.ys[nx]);
else
Typr.U.P.qcurveTo(p, x, y, (x + gl.xs[nx]) / 2, (y + gl.ys[nx]) / 2);
}
}
Typr.U.P.closePath(p);
}
};
Typr.U._compoGlyph = function(gl, font, p) {
for (var j = 0; j < gl.parts.length; j++) {
var path = { cmds: [], crds: [] };
var prt = gl.parts[j];
Typr.U._drawGlyf(prt.glyphIndex, font, path);
var m = prt.m;
for (var i = 0; i < path.crds.length; i += 2) {
var x = path.crds[i], y = path.crds[i + 1];
p.crds.push(x * m.a + y * m.b + m.tx);
p.crds.push(x * m.c + y * m.d + m.ty);
}
for (var i = 0; i < path.cmds.length; i++)
p.cmds.push(path.cmds[i]);
}
};
Typr.U._getGlyphClass = function(g, cd) {
var intr = Typr._lctf.getInterval(cd, g);
return intr == -1 ? 0 : cd[intr + 2];
};
Typr.U.getPairAdjustment = function(font, g1, g2) {
if (font.GPOS) {
var ltab = null;
for (var i = 0; i < font.GPOS.featureList.length; i++) {
var fl = font.GPOS.featureList[i];
if (fl.tag == "kern") {
for (var j = 0; j < fl.tab.length; j++)
if (font.GPOS.lookupList[fl.tab[j]].ltype == 2)
ltab = font.GPOS.lookupList[fl.tab[j]];
}
}
if (ltab) {
for (var i = 0; i < ltab.tabs.length; i++) {
var tab = ltab.tabs[i];
var ind = Typr._lctf.coverageIndex(tab.coverage, g1);
if (ind == -1)
continue;
var adj;
if (tab.format == 1) {
var right = tab.pairsets[ind];
for (var j = 0; j < right.length; j++)
if (right[j].gid2 == g2)
adj = right[j];
if (adj == null)
continue;
} else if (tab.format == 2) {
var c1 = Typr.U._getGlyphClass(g1, tab.classDef1);
var c2 = Typr.U._getGlyphClass(g2, tab.classDef2);
var adj = tab.matrix[c1][c2];
}
return adj.val1[2];
}
}
}
if (font.kern) {
var ind1 = font.kern.glyph1.indexOf(g1);
if (ind1 != -1) {
var ind2 = font.kern.rval[ind1].glyph2.indexOf(g2);
if (ind2 != -1)
return font.kern.rval[ind1].vals[ind2];
}
}
return 0;
};
Typr.U.stringToGlyphs = function(font, str) {
var gls = [];
for (var i = 0; i < str.length; i++) {
var cc = str.codePointAt(i);
if (cc > 65535)
i++;
gls.push(Typr.U.codeToGlyph(font, cc));
}
var gsub = font["GSUB"];
if (gsub == null)
return gls;
var llist = gsub.lookupList, flist = gsub.featureList;
var wsep = '\n " ,.:;!?() ،';
var R = "آأؤإاةدذرزوٱٲٳٵٶٷڈډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙۀۃۄۅۆۇۈۉۊۋۍۏےۓەۮۯܐܕܖܗܘܙܞܨܪܬܯݍݙݚݛݫݬݱݳݴݸݹࡀࡆࡇࡉࡔࡧࡩࡪࢪࢫࢬࢮࢱࢲࢹૅેૉૐૡ૯ஃஅஉஎஏனப";
var L = "ꡲ્";
for (var ci = 0; ci < gls.length; ci++) {
var gl = gls[ci];
var slft = ci == 0 || wsep.indexOf(str[ci - 1]) != -1;
var srgt = ci == gls.length - 1 || wsep.indexOf(str[ci + 1]) != -1;
if (!slft && R.indexOf(str[ci - 1]) != -1)
slft = true;
if (!srgt && R.indexOf(str[ci]) != -1)
srgt = true;
if (!srgt && L.indexOf(str[ci + 1]) != -1)
srgt = true;
if (!slft && L.indexOf(str[ci]) != -1)
slft = true;
var feat = null;
if (slft)
feat = srgt ? "isol" : "init";
else
feat = srgt ? "fina" : "medi";
for (var fi = 0; fi < flist.length; fi++) {
if (flist[fi].tag != feat)
continue;
for (var ti = 0; ti < flist[fi].tab.length; ti++) {
var tab = llist[flist[fi].tab[ti]];
if (tab.ltype != 1)
continue;
Typr.U._applyType1(gls, ci, tab);
}
}
}
var cligs = ["rlig", "liga", "mset"];
for (var ci = 0; ci < gls.length; ci++) {
var gl = gls[ci];
var rlim = Math.min(3, gls.length - ci - 1);
for (var fi = 0; fi < flist.length; fi++) {
var fl = flist[fi];
if (cligs.indexOf(fl.tag) == -1)
continue;
for (var ti = 0; ti < fl.tab.length; ti++) {
var tab = llist[fl.tab[ti]];
for (var j = 0; j < tab.tabs.length; j++) {
if (tab.tabs[j] == null)
continue;
var ind = Typr._lctf.coverageIndex(tab.tabs[j].coverage, gl);
if (ind == -1)
continue;
if (tab.ltype == 4) {
var vals = tab.tabs[j].vals[ind];
for (var k = 0; k < vals.length; k++) {
var lig = vals[k], rl = lig.chain.length;
if (rl > rlim)
continue;
var good = true;
for (var l = 0; l < rl; l++)
if (lig.chain[l] != gls[ci + (1 + l)])
good = false;
if (!good)
continue;
gls[ci] = lig.nglyph;
for (var l = 0; l < rl; l++)
gls[ci + l + 1] = -1;
}
} else if (tab.ltype == 5) {
var ltab = tab.tabs[j];
if (ltab.fmt != 2)
continue;
var cind = Typr._lctf.getInterval(ltab.cDef, gl);
var cls = ltab.cDef[cind + 2], scs = ltab.scset[cls];
for (var i = 0; i < scs.length; i++) {
var sc = scs[i], inp = sc.input;
if (inp.length > rlim)
continue;
var good = true;
for (var l = 0; l < inp.length; l++) {
var cind2 = Typr._lctf.getInterval(ltab.cDef, gls[ci + 1 + l]);
if (cind == -1 && ltab.cDef[cind2 + 2] != inp[l]) {
good = false;
break;
}
}
if (!good)
continue;
var lrs = sc.substLookupRecords;
for (var k = 0; k < lrs.length; k += 2) {
lrs[k];
lrs[k + 1];
}
}
}
}
}
}
}
return gls;
};
Typr.U._applyType1 = function(gls, ci, tab) {
var gl = gls[ci];
for (var j = 0; j < tab.tabs.length; j++) {
var ttab = tab.tabs[j];
var ind = Typr._lctf.coverageIndex(ttab.coverage, gl);
if (ind == -1)
continue;
if (ttab.fmt == 1)
gls[ci] = gls[ci] + ttab.delta;
else
gls[ci] = ttab.newg[ind];
}
};
Typr.U.glyphsToPath = function(font, gls, clr) {
var tpath = { cmds: [], crds: [] };
var x = 0;
for (var i = 0; i < gls.length; i++) {
var gid = gls[i];
if (gid == -1)
continue;
var gid2 = i < gls.length - 1 && gls[i + 1] != -1 ? gls[i + 1] : 0;
var path = Typr.U.glyphToPath(font, gid);
for (var j = 0; j < path.crds.length; j += 2) {
tpath.crds.push(path.crds[j] + x);
tpath.crds.push(path.crds[j + 1]);
}
if (clr)
tpath.cmds.push(clr);
for (var j = 0; j < path.cmds.length; j++)
tpath.cmds.push(path.cmds[j]);
if (clr)
tpath.cmds.push("X");
x += font.hmtx.aWidth[gid];
if (i < gls.length - 1)
x += Typr.U.getPairAdjustment(font, gid, gid2);
}
return tpath;
};
Typr.U.pathToSVG = function(path, prec) {
if (prec == null)
prec = 5;
var out = [], co = 0, lmap = { M: 2, L: 2, Q: 4, C: 6 };
for (var i = 0; i < path.cmds.length; i++) {
var cmd = path.cmds[i], cn = co + (lmap[cmd] ? lmap[cmd] : 0);
out.push(cmd);
while (co < cn) {
var c = path.crds[co++];
out.push(parseFloat(c.toFixed(prec)) + (co == cn ? "" : " "));
}
}
return out.join("");
};
Typr.U.pathToContext = function(path, ctx) {
var c = 0, crds = path.crds;
for (var j = 0; j < path.cmds.length; j++) {
var cmd = path.cmds[j];
if (cmd == "M") {
ctx.moveTo(crds[c], crds[c + 1]);
c += 2;
} else if (cmd == "L") {
ctx.lineTo(crds[c], crds[c + 1]);
c += 2;
} else if (cmd == "C") {
ctx.bezierCurveTo(crds[c], crds[c + 1], crds[c + 2], crds[c + 3], crds[c + 4], crds[c + 5]);
c += 6;
} else if (cmd == "Q") {
ctx.quadraticCurveTo(crds[c], crds[c + 1], crds[c + 2], crds[c + 3]);
c += 4;
} else if (cmd.charAt(0) == "#") {
ctx.beginPath();
ctx.fillStyle = cmd;
} else if (cmd == "Z") {
ctx.closePath();
} else if (cmd == "X") {
ctx.fill();
}
}
};
Typr.U.P = {};
Typr.U.P.moveTo = function(p, x, y) {
p.cmds.push("M");
p.crds.push(x, y);
};
Typr.U.P.lineTo = function(p, x, y) {
p.cmds.push("L");
p.crds.push(x, y);
};
Typr.U.P.curveTo = function(p, a, b, c, d, e, f) {
p.cmds.push("C");
p.crds.push(a, b, c, d, e, f);
};
Typr.U.P.qcurveTo = function(p, a, b, c, d) {
p.cmds.push("Q");
p.crds.push(a, b, c, d);
};
Typr.U.P.closePath = function(p) {
p.cmds.push("Z");
};
Typr.U._drawCFF = function(cmds, state, font, p) {
var stack = state.stack;
var nStems = state.nStems, haveWidth = state.haveWidth, width = state.width, open = state.open;
var i = 0;
var x = state.x, y = state.y, c1x = 0, c1y = 0, c2x = 0, c2y = 0, c3x = 0, c3y = 0, c4x = 0, c4y = 0, jpx = 0, jpy = 0;
var o = { val: 0, size: 0 };
while (i < cmds.length) {
Typr.CFF.getCharString(cmds, i, o);
var v = o.val;
i += o.size;
if (v == "o1" || v == "o18") {
var hasWidthArg;
hasWidthArg = stack.length % 2 !== 0;
if (hasWidthArg && !haveWidth) {
width = stack.shift() + font.Private.nominalWidthX;
}
nStems += stack.length >> 1;
stack.length = 0;
haveWidth = true;
} else if (v == "o3" || v == "o23") {
var hasWidthArg;
hasWidthArg = stack.length % 2 !== 0;
if (hasWidthArg && !haveWidth) {
width = stack.shift() + font.Private.nominalWidthX;
}
nStems += stack.length >> 1;
stack.length = 0;
haveWidth = true;
} else if (v == "o4") {
if (stack.length > 1 && !haveWidth) {
width = stack.shift() + font.Private.nominalWidthX;
haveWidth = true;
}
if (open)
Typr.U.P.closePath(p);
y += stack.pop();
Typr.U.P.moveTo(p, x, y);
open = true;
} else if (v == "o5") {
while (stack.length > 0) {
x += stack.shift();
y += stack.shift();
Typr.U.P.lineTo(p, x, y);
}
} else if (v == "o6" || v == "o7") {
var count = stack.length;
var isX = v == "o6";
for (var j = 0; j < count; j++) {
var sval = stack.shift();
if (isX)
x += sval;
else
y += sval;
isX = !isX;
Typr.U.P.lineTo(p, x, y);
}
} else if (v == "o8" || v == "o24") {
var count = stack.length;
var index = 0;
while (index + 6 <= count) {
c1x = x + stack.shift();
c1y = y + stack.shift();
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
x = c2x + stack.shift();
y = c2y + stack.shift();
Typr.U.P.curveTo(p, c1x, c1y, c2x, c2y, x, y);
index += 6;
}
if (v == "o24") {
x += stack.shift();
y += stack.shift();
Typr.U.P.lineTo(p, x, y);
}
} else if (v == "o11")
break;
else if (v == "o1234" || v == "o1235" || v == "o1236" || v == "o1237") {
if (v == "o1234") {
c1x = x + stack.shift();
c1y = y;
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
jpx = c2x + stack.shift();
jpy = c2y;
c3x = jpx + stack.shift();
c3y = c2y;
c4x = c3x + stack.shift();
c4y = y;
x = c4x + stack.shift();
Typr.U.P.curveTo(p, c1x, c1y, c2x, c2y, jpx, jpy);
Typr.U.P.curveTo(p, c3x, c3y, c4x, c4y, x, y);
}
if (v == "o1235") {
c1x = x + stack.shift();
c1y = y + stack.shift();
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
jpx = c2x + stack.shift();
jpy = c2y + stack.shift();
c3x = jpx + stack.shift();
c3y = jpy + stack.shift();
c4x = c3x + stack.shift();
c4y = c3y + stack.shift();
x = c4x + stack.shift();
y = c4y + stack.shift();
stack.shift();
Typr.U.P.curveTo(p, c1x, c1y, c2x, c2y, jpx, jpy);
Typr.U.P.curveTo(p, c3x, c3y, c4x, c4y, x, y);
}
if (v == "o1236") {
c1x = x + stack.shift();
c1y = y + stack.shift();
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
jpx = c2x + stack.shift();
jpy = c2y;
c3x = jpx + stack.shift();
c3y = c2y;
c4x = c3x + stack.shift();
c4y = c3y + stack.shift();
x = c4x + stack.shift();
Typr.U.P.curveTo(p, c1x, c1y, c2x, c2y, jpx, jpy);
Typr.U.P.curveTo(p, c3x, c3y, c4x, c4y, x, y);
}
if (v == "o1237") {
c1x = x + stack.shift();
c1y = y + stack.shift();
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
jpx = c2x + stack.shift();
jpy = c2y + stack.shift();
c3x = jpx + stack.shift();
c3y = jpy + stack.shift();
c4x = c3x + stack.shift();
c4y = c3y + stack.shift();
if (Math.abs(c4x - x) > Math.abs(c4y - y)) {
x = c4x + stack.shift();
} else {
y = c4y + stack.shift();
}
Typr.U.P.curveTo(p, c1x, c1y, c2x, c2y, jpx, jpy);
Typr.U.P.curveTo(p, c3x, c3y, c4x, c4y, x, y);
}
} else if (v == "o14") {
if (stack.length > 0 && !haveWidth) {
width = stack.shift() + font.nominalWidthX;
haveWidth = true;
}
if (stack.length == 4) {
var adx = stack.shift();
var ady = stack.shift();
var bchar = stack.shift();
var achar = stack.shift();
var bind = Typr.CFF.glyphBySE(font, bchar);
var aind = Typr.CFF.glyphBySE(font, achar);
Typr.U._drawCFF(font.CharStrings[bind], state, font, p);
state.x = adx;
state.y = ady;
Typr.U._drawCFF(font.CharStrings[aind], state, font, p);
}
if (open) {
Typr.U.P.closePath(p);
open = false;
}
} else if (v == "o19" || v == "o20") {
var hasWidthArg;
hasWidthArg = stack.length % 2 !== 0;
if (hasWidthArg && !haveWidth) {
width = stack.shift() + font.Private.nominalWidthX;
}
nStems += stack.length >> 1;
stack.length = 0;
haveWidth = true;
i += nStems + 7 >> 3;
} else if (v == "o21") {
if (stack.length > 2 && !haveWidth) {
width = stack.shift() + font.Private.nominalWidthX;
haveWidth = true;
}
y += stack.pop();
x += stack.pop();
if (open)
Typr.U.P.closePath(p);
Typr.U.P.moveTo(p, x, y);
open = true;
} else if (v == "o22") {
if (stack.length > 1 && !haveWidth) {
width = stack.shift() + font.Private.nominalWidthX;
haveWidth = true;
}
x += stack.pop();
if (open)
Typr.U.P.closePath(p);
Typr.U.P.moveTo(p, x, y);
open = true;
} else if (v == "o25") {
while (stack.length > 6) {
x += stack.shift();
y += stack.shift();
Typr.U.P.lineTo(p, x, y);
}
c1x = x + stack.shift();
c1y = y + stack.shift();
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
x = c2x + stack.shift();
y = c2y + stack.shift();
Typr.U.P.curveTo(p, c1x, c1y, c2x, c2y, x, y);
} else if (v == "o26") {
if (stack.length % 2) {
x += stack.shift();
}
while (stack.length > 0) {
c1x = x;
c1y = y + stack.shift();
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
x = c2x;
y = c2y + stack.shift();
Typr.U.P.curveTo(p, c1x, c1y, c2x, c2y, x, y);
}
} else if (v == "o27") {
if (stack.length % 2) {
y += stack.shift();
}
while (stack.length > 0) {
c1x = x + stack.shift();
c1y = y;
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
x = c2x + stack.shift();
y = c2y;
Typr.U.P.curveTo(p, c1x, c1y, c2x, c2y, x, y);
}
} else if (v == "o10" || v == "o29") {
var obj = v == "o10" ? font.Private : font;
if (stack.length == 0) {
console.log("error: empty stack");
} else {
var ind = stack.pop();
var subr = obj.Subrs[ind + obj.Bias];
state.x = x;
state.y = y;
state.nStems = nStems;
state.haveWidth = haveWidth;
state.width = width;
state.open = open;
Typr.U._drawCFF(subr, state, font, p);
x = state.x;
y = state.y;
nStems = state.nStems;
haveWidth = state.haveWidth;
width = state.width;
open = state.open;
}
} else if (v == "o30" || v == "o31") {
var count, count1 = stack.length;
var index = 0;
var alternate = v == "o31";
count = count1 & ~2;
index += count1 - count;
while (index < count) {
if (alternate) {
c1x = x + stack.shift();
c1y = y;
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
y = c2y + stack.shift();
if (count - index == 5) {
x = c2x + stack.shift();
index++;
} else
x = c2x;
alternate = false;
} else {
c1x = x;
c1y = y + stack.shift();
c2x = c1x + stack.shift();
c2y = c1y + stack.shift();
x = c2x + stack.shift();
if (count - index == 5) {
y = c2y + stack.shift();
index++;
} else
y = c2y;
alternate = true;
}
Typr.U.P.curveTo(p, c1x, c1y, c2x, c2y, x, y);
index += 4;
}
} else if ((v + "").charAt(0) == "o") {
console.log("Unknown operation: " + v, cmds);
throw v;
} else
stack.push(v);
}
state.x = x;
state.y = y;
state.nStems = nStems;
state.haveWidth = haveWidth;
state.width = width;
state.open = open;
};
var typr_js = Typr;
const Typr$1 = /* @__PURE__ */ getDefaultExportFromCjs(typr_js);
const decode = () => {
var _a;
const styleElements = _unsafeWindow.document.querySelectorAll("style");
let tipElement = null;
styleElements.forEach((styleElement) => {
var _a2;
if (((_a2 = styleElement.textContent) == null ? void 0 : _a2.indexOf("font-cxsecret")) !== -1) {
tipElement = styleElement;
}
});
if (!tipElement)
return;
const fontMatch = (_a = tipElement.textContent) == null ? void 0 : _a.match(/base64,([\w\W]+?)'/);
if (!fontMatch)
return;
const fontData = base64ToUint8Array(fontMatch[1]);
const font = Typr$1.parse(fontData);
function parseResourceText(resourceName) {
try {
return JSON.parse(_GM_getResourceText(resourceName));
} catch (e) {
return null;
}
}
let table = parseResourceText("ttf") || parseResourceText("ttf1");
if (!table) {
return false;
}
let text = {};
for (let i = 19968; i < 40870; i++) {
let t = Typr$1.U.codeToGlyph(font, i);
if (!t)
continue;
t = Typr$1.U.glyphToPath(font, t);
t = md5Exports.md5(JSON.stringify(t)).slice(24);
text[i] = table[t];
}
const fontElements = _unsafeWindow.document.querySelectorAll(".font-cxsecret");
fontElements.forEach((fontElement) => {
let html = fontElement.innerHTML;
Object.keys(text).forEach((key2) => {
const regex = new RegExp(String.fromCharCode(key2), "g");
html = html.replace(regex, String.fromCharCode(text[key2]));
});
fontElement.innerHTML = html;
fontElement.classList.remove("font-cxsecret");
});
return true;
};
const base64ToUint8Array = (base64) => {
const decodedData = atob(base64);
const array = new Uint8Array(decodedData.length);
for (let i = 0; i < decodedData.length; i++) {
array[i] = decodedData.charCodeAt(i);
}
return array;
};
const chaoxing = [
{
type: "save",
name: "学习通考试新版收录",
match: () => location.href.includes("work/view") || location.href.includes("test/reVersionPaperMarkContentNew"),
question: {
html: ".questionLi",
question: "h3.mark_name",
options: "ul.mark_letter.colorDeep > li",
type: ".colorShallow",
workType: "zj",
pageType: "cx"
},
answerHook: (item) => {
let quesType = removeHtml1($(item.html).find('span[class="colorShallow"]').html());
if (quesType === "") {
return null;
}
let matchResult = quesType.match(/^\((.+?)\)/);
if (matchResult !== null) {
item.type = matchResult[1].split(",")[0];
} else {
return null;
}
item.question = titleClean(item.question.split(quesType)[1].trim()).trim();
item.options = removeStartChar(item.options);
const userScore = $(item.html).find(".mark_score>.totalScore>i").text();
const score = quesType.match(/(\d+(\.\d+)?)/);
let isT = $(item.html).find(".marking_dui").length > 0 || userScore == ((score == null ? void 0 : score[0]) || 0);
let answer;
switch (item.type) {
case "单选题":
case "多选题":
item.type = item.type === "单选题" ? "0" : "1";
item.answer = $(item.html).find(".mark_answer>div>span.colorGreen:eq(0)").text().replace("正确答案:", "").trim().split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
item.answer = item.answer.filter((item2) => item2 !== "");
if (item.answer.length === 0 && isT) {
item.answer = $(item.html).find(".mark_answer>div>span.colorDeep:eq(0)").text().replace("我的答案:", "").trim().split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
item.answer = item.answer.filter((item2) => item2 !== "");
}
break;
case "判断题":
item.type = "3";
item.options = [];
item.answer = judgeAnswer($(item.html).find(".mark_answer>div>span.colorGreen:eq(0)").text());
if (item.answer.length === 0) {
answer = removeHtml1($(item.html).find(".mark_answer>div>span.colorDeep:eq(0)").html());
item.answer = judgeAnswer(answer);
if (item.answer.length === 0) {
return null;
}
if (!isT) {
item.answer = item.answer[0] === "正确" ? ["错误"] : ["正确"];
}
}
break;
case "简答题":
item.type = "4";
item.answer = removeHtml1($(item.html).find(".mark_answer>div>.colorGreen:eq(0)").html()).replace("正确答案:", "").trim();
if (item.answer.length < 10) {
return null;
} else {
item.answer = [item.answer];
}
break;
case "名词解释":
item.type = "5";
item.answer = removeHtml1($(item.html).find(".mark_answer>div>.colorGreen:eq(0)").html()).replace("正确答案:", "").trim();
if (item.answer.length < 10) {
return null;
} else {
item.answer = [item.answer];
}
break;
case "计算题":
item.type = "7";
item.answer = removeHtml1($(item.html).find(".mark_answer>div>.colorGreen:eq(0)").html()).replace("正确答案:", "").trim();
if (item.answer.length < 10) {
return null;
} else {
item.answer = [item.answer];
}
break;
case "论述题":
item.type = "6";
item.answer = removeHtml1($(item.html).find(".mark_answer>div>.colorGreen:eq(0)").html()).replace("正确答案:", "").trim();
if (item.answer.length < 10) {
return null;
} else {
item.answer = [item.answer];
}
break;
case "填空题":
item.type = "2";
item.answer = $(item.html).find(".mark_answer>div>.colorGreen:eq(0)>dd").map((index, element) => {
return removeHtml1($(element).html()).replace(`(${index + 1})`, "").trim();
}).get();
break;
default:
return null;
}
return item;
}
},
{
type: "hook",
name: "hook",
match: location.href.includes("work/selectWorkQuestionYiPiYue") && location.href.includes("mooc2=0"),
main: (data) => {
if (location.href.includes("mooc2=0")) {
_unsafeWindow.location.href = location.href.replace("mooc2=0", "mooc2=1");
} else {
_unsafeWindow.location.href = location.href + "&mooc2=1";
}
}
},
{
type: "save",
name: "学习通作业收录新",
match: () => location.href.includes("work/selectWorkQuestionYiPiYue") && location.href.includes("mooc2=1"),
question: {
html: ".TiMu",
question: ".Zy_TItle .clearfix",
options: "ul.Zy_ulTop li",
type: ".newZy_TItle",
workType: "zj",
pageType: "cx"
},
answerHook: (item) => {
item.type = $(item.html).find(".newZy_TItle").text().replace(/【|】/g, "").trim();
let isT = $(item.html).find(".marking_dui").length > 0;
removeHtml1($(item.html).find(".Py_addpy:eq(0)").html());
let answer;
item.question = titleClean(item.question).trim();
switch (item.type) {
case "单选题":
case "多选题":
item.type = item.type === "单选题" ? "0" : "1";
item.options = $(item.html).find("ul.Zy_ulTop li").map((index, element) => {
let inx = $(element).find("i.fl").text().trim();
let optionText = removeHtml1($(element).html());
if (inx === "") {
return optionText.trim();
}
return optionText.split(inx)[1].trim();
}).get();
item.answer = $(item.html).find(".correctAnswer >.fl.answerCon").text().trim().split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
if (item.answer.length === 0 && isT) {
item.answer = $(item.html).find(".myAnswer > .fl.answerCon").text().trim().split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
}
break;
case "判断题":
item.type = "3";
item.answer = $(item.html).find(".correctAnswer > .fl.answerCon").text().trim().split("").map((answer2) => {
if (answer2.includes("正确") || answer2.includes("对") || answer2.includes("√")) {
return "正确";
} else if (answer2.includes("错误") || answer2.includes("错") || answer2.includes("×")) {
return "错误";
} else {
return null;
}
}).filter((item2) => item2 !== null);
if (item.answer.length === 0) {
answer = removeHtml1($(item.html).find(".fl.answerCon").html());
let [marking_dui, marking_cuo] = [".marking_dui", ".marking_cuo"].map((selector) => $(item.html).find(selector).length);
if (marking_dui + marking_cuo === 0) {
return null;
}
if (answer.includes("正确") || answer.includes("对") || answer.includes("√")) {
item.answer = ["正确"];
} else if (answer.includes("错误") || answer.includes("错") || answer.includes("×")) {
item.answer = ["错误"];
} else {
return null;
}
if (marking_dui === 0 && marking_cuo !== 0) {
item.answer = item.answer[0] === "正确" ? "错误" : "正确";
}
}
break;
case "填空题":
item.type = "2";
item.answer = $(item.html).find(".correctAnswerBx>.correctAnswer>p:not(.clear)").map((index, element) => {
return removeHtml1($(element).html()).replace(`(${index + 1})`, "").trim();
}).get().filter((item2) => item2 !== "");
break;
case "分录题":
item.type = "9";
item.answer = $(item.html).find(".correctAnswerBx>.correctAnswer>p:not(.clear)").map((index, element) => {
return removeHtml1($(element).html());
}).get().filter((item2) => item2 !== "");
if (item.answer.length != $(item.html).find(".CorrectOrNot").length) {
if ($(item.html).find(".marking_cuo").length > 0) {
return null;
}
item.answer = $(item.html).find(".myAnswerBx>.myAnswer>p:not(.clear)").map((index, element) => {
return removeHtml1($(element).html());
}).get().filter((item2) => item2 !== "");
if (item.answer.length != $(item.html).find(".CorrectOrNot").length) {
return null;
}
}
log(item.answer, "warn");
break;
case "连线题":
item.type = "11";
let left = $(item.html).find("ul.firstUlList>li:not(.groupTitile)").map((index, element) => {
let $clone = $(element).clone();
$clone.find(".fl").remove();
return removeHtml1($clone.html());
}).get();
let right = $(item.html).find("ul.secondUlList>li:not(.groupTitile)").map((index, element) => {
let $clone = $(element).clone();
$clone.find(".fl").remove();
return removeHtml1($clone.html());
}).get();
answer = $(item.html).find(".correctAnswer >.fl.answerCon >.collectAnswer").map((index, element) => {
return removeHtml1($(element).text());
}).get();
item.options = [left, right];
let ans = {};
answer.forEach((item2) => {
let [l, r] = item2.split("-");
if (l.charCodeAt(0) >= 65) {
l = (l.charCodeAt(0) - 65).toString();
} else if (/^\d+$/.test(l)) {
l = (parseInt(l) - 1).toString();
}
if (r.charCodeAt(0) >= 65) {
r = (r.charCodeAt(0) - 65).toString();
} else if (/^\d+$/.test(r)) {
r = (parseInt(r) - 1).toString();
}
ans[left[l]] = right[r];
});
item.answer = ans;
log(left, right, item.answer, "warn");
break;
default:
log("暂未适配当前题型", item.type, "error");
return null;
}
return item;
}
},
{
type: "ask",
name: "学习通新版作业",
match: /\/mooc2\/work\/dowork/i.test(location.pathname),
question: {
html: ".questionLi",
question: "h3",
options: "ul:eq(0) li .after, .answer_p",
type: "input[name^=answertype]:eq(0)",
workType: "zy",
pageType: "cx"
},
questionHook: (item) => {
const type = removeHtml1($(item.html).find(".colorShallow").html());
item.question = titleClean(item.question.split(type)[1].trim()).trim();
item.$options = $(item.html).find(".answerBg");
return item;
},
setAnswerHook: (item) => {
qc(item.html);
qc1(item.html);
}
},
{
type: "ask",
name: "学习通新版考试",
match: /exam\/preview/i.test(location.pathname) || /exam\/test\/reVersionTestStartNew/i.test(location.pathname),
question: {
html: ".questionLi",
question: "h3",
options: "ul:eq(0) li .after, .answer_p",
type: "input[name^=type]:not([name=type])",
workType: "ks",
pageType: "cx"
},
questionHook: (item) => {
const type = removeHtml1($(item.html).find(".colorShallow").html());
item.question = titleClean(item.question.split(type)[1].trim()).trim();
item.$options = $(item.html).find(".answerBg");
return item;
},
setAnswerHook: (item) => {
qc(item.html);
qc1(item.html);
},
next: () => {
$('.nextDiv .jb_btn:contains("下一题")').click();
}
},
{
type: "ask",
name: "学习通旧版作业",
match: /work\/doHomeWorkNew/i.test(location.pathname) && location.href.includes("mooc2=1") == false,
init: () => {
const sf = decode();
if (!sf) {
msg("页面解密失败,无法答题,请尝试切换网络或反馈给作者吧", "error");
return false;
}
},
question: {
html: ".TiMu",
question: ".clearfix.fontLabel",
options: "ul:eq(0) li .after",
type: "input[name^=answertype]:eq(0), .answer_p",
workType: "zy",
pageType: "cx"
},
questionHook: (item) => {
item.question = titleClean(item.question).trim();
item.$options = $(item.html).find(".fl.before");
switch (item.type) {
case "3":
item.options = $(item.html).find("ul:eq(0) li").map((index, element) => {
if ($(element).find(".ri").length > 0) {
return "正确";
}
if ($(element).find(".wr").length > 0) {
return "错误";
}
if (isTrue($(element).attr("aria-label"))) {
return "正确";
}
if (isFalse($(element).attr("aria-label"))) {
return "错误";
}
}).get();
item.options = [];
item.$options = $(item.html).find("ul>li");
break;
case "11":
let left = $(item.html).find("ul.firstUlList>li:not(.groupTitile)").map((index, element) => {
let $clone = $(element).clone();
$clone.find(".fl").remove();
return removeHtml1($clone.html());
}).get();
let right = $(item.html).find("ul.secondUlList>li:not(.groupTitile)").map((index, element) => {
let $clone = $(element).clone();
$clone.find(".fl").remove();
return removeHtml1($clone.html());
}).get();
item.options = [left, right];
item.$options = $(item.html).find("ul.thirdUlList>li:not(.groupTitile)");
break;
}
return item;
},
setAnswerHook: (item) => {
qc(item.html);
qc1(item.html);
},
setAnswer: (item) => {
switch (item.type) {
case "11":
item.ques.$options.each((index, element) => {
let left = item.ques.options[0];
let right = item.ques.options[1];
let chose = item.answer[left[index]];
let index1 = right.indexOf(chose);
chose = String.fromCharCode(index1 + 65);
$(element).find("select>option").each((inx, ele) => {
log($(ele).val() == chose, "warn");
$(ele).val() == chose && $(ele).prop("selected", true);
});
});
log(item.answer, "success");
return false;
case "3":
let bold = item.answer;
item.ques.$options.each((index, element) => {
if (isTrue(bold) && isTrue(removeHtml1($(element).html()))) {
$(element).find("input").click();
}
if (isFalse(bold) && isFalse(removeHtml1($(element).html()))) {
$(element).find("input").click();
}
});
return false;
default:
return true;
}
}
},
{
type: "ask",
name: "学习通新版章节",
match: /work\/doHomeWorkNew/i.test(location.pathname) && location.href.includes("mooc2=1"),
init: () => {
const sf = decode();
if (!sf) {
msg("页面解密失败,无法答题,请尝试切换网络或反馈给作者吧", "error");
return false;
}
},
question: {
html: ".TiMu",
question: ".clearfix.fontLabel",
options: "ul:eq(0) li .after, .answer_p",
type: "input[name^=answertype]:eq(0)",
workType: "zj",
pageType: "cx"
},
questionHook: (item) => {
item.question = titleClean(item.question).trim();
switch (item.type) {
case "3":
item.options = $(item.html).find("ul:eq(0) li").map((index, element) => {
if ($(element).find(".num_option").attr("data") === "true") {
return "正确";
}
if ($(element).find(".num_option").attr("data") === "false") {
return "错误";
}
}).get();
item.options = [];
break;
case "11":
let left = $(item.html).find("ul.firstUlList>li:not(.groupTitile)").map((index, element) => {
let $clone = $(element).clone();
$clone.find(".fl").remove();
return removeHtml1($clone.html());
}).get();
let right = $(item.html).find("ul.secondUlList>li:not(.groupTitile)").map((index, element) => {
let $clone = $(element).clone();
$clone.find(".fl").remove();
return removeHtml1($clone.html());
}).get();
item.options = [left, right];
item.$options = $(item.html).find("ul.thirdUlList>li:not(.groupTitile)");
break;
default:
log("暂未适配当前题型", item.type, "error");
}
return item;
},
setAnswerHook: (item) => {
qc(item.html);
qc1(item.html);
},
setAnswer: (item) => {
log(item.ques.options, "warn");
switch (item.type) {
case "11":
item.ques.$options.each((index, element) => {
let left = item.ques.options[0];
let right = item.ques.options[1];
let chose = item.answer[left[index]];
let index1 = right.indexOf(chose);
chose = String.fromCharCode(index1 + 65);
let $chosen = _unsafeWindow.$(element).find(".dept_select");
$chosen.chosen().val(chose).trigger("chosen:updated");
});
log(item.answer, "success");
return false;
default:
return true;
}
}
}
];
const zhihuishu = [
{
type: "ask",
name: "智慧树章节",
tips: "智慧树必须开自动跳转,否则答案可能无法保存导致低分!",
match: location.href.includes("zhihuishu.com") && (!location.href.includes("checkHomework") && location.host.includes("zhihuishu") && (location.pathname === "/stuExamWeb.html" || location.href.includes("/webExamList/dohomework/") || location.href.includes("/webExamList/doexamination/"))),
question: {
html: ".examPaper_box > div:eq(1) >div:not(.examPaper_partTit)",
question: ".subject_describe.dynamic-fonts:eq(0) div:eq(0)",
options: ".subject_node .nodeLab .label.clearfix .node_detail",
type: ".subject_type span:first-child",
workType: "zhs",
pageType: "zhs"
},
init: async () => {
await waitUntil(function() {
return !$(".yidun_popup").hasClass("yidun_popup--light") && _unsafeWindow.zhsques;
});
},
next: () => {
$(".switch-btn-box button:eq(1)").click();
},
questionHook: (item, inx) => {
const ques = _unsafeWindow.zhsques.examBase.workExamParts.map((item2) => item2.questionDtos).flat();
const quesData = ques[inx];
item.type = typeChange(quesData.questionType.name);
item.question = removeHtml1(quesData.name);
item.options = quesData.questionOptions ? quesData.questionOptions.map((item2) => removeHtml1(item2.content)) : [];
return item;
}
},
{
type: "save",
name: "智慧树作业收录",
match: location.href.includes("zhihuishu.com") && (location.href.includes("checkHomework") && location.host.includes("zhihuishu") && (location.pathname === "/stuExamWeb.html" || location.href.includes("/webExamList/checkHomework/"))),
question: {
html: ".questionType",
question: ".subject_describe",
options: ".examquestions-answer",
type: ".newZy_TItle",
workType: "zhs",
pageType: "zhs"
},
init: async () => {
await waitUntil(function() {
return $(".questionType").length > 0 && _unsafeWindow.zhsques && _unsafeWindow.zhsimgAnswer;
});
},
answerHook: (item) => {
let tid = $(item.html).find(".examPaper_subject").attr("data-questionid");
const quesData = _unsafeWindow.zhsimgAnswer;
const quesList = _unsafeWindow.zhsques.examBase.workExamParts.map((item2) => item2.questionDtos).flat();
let data = quesList.find((item2) => item2.id == tid);
data.answer = quesData[data.id];
item.question = removeHtml1(data.name);
item.type = typeChange(data.questionType.name);
item.options = data.questionOptions.map((item2) => removeHtml1(item2.content));
item.answer = data.answer.split("").map((code) => {
return item.options[code.charCodeAt(0) - 65];
});
if (item.type == "3") {
item.options = [];
item.answer = isTrue(item.answer[0]) ? ["正确"] : isFalse(item.answer[0]) ? ["错误"] : [];
}
return item;
}
}
];
const xinwei = [
{
type: "hook",
name: "芯位教育hook",
match: location.host === "www.51xinwei.com",
main: (data) => {
_unsafeWindow.mainClass = $(".el-main > div:eq(0)").attr("class");
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== $(".el-main > div:eq(0)").attr("class")) {
_unsafeWindow.mainClass = $(".el-main > div:eq(0)").attr("class");
if (_unsafeWindow.mainClass === "homework-detail-container") {
await waitUntil(function() {
return $(".el-loading-mask").length === 0;
});
}
vuePageChange();
observer.disconnect();
}
for (let mutation of mutations) {
if (mutation.type === "attributes" && mutation.attributeName === "class") {
if (mutation.target.textContent && (mutation.target.textContent.includes("下一题") || mutation.target.textContent.includes("上一题"))) {
observer.disconnect();
vuePageChange();
}
}
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "芯位教育作业",
tips: "芯位教育仅支持选择判断,其他题型待适配",
match: () => location.host === "www.51xinwei.com" && /student\/#\/courseInfo\/[A-Za-z0-9]+\/homework/i.test(location.href),
question: {
html: ".content-area > div.content",
question: ".content",
options: ".el-radio-group label .label,.el-checkbox-group label .label",
type: ".question-box .tag",
workType: "xinwei",
pageType: "xinwei"
},
init: async () => {
await waitUntil(function() {
return $(".question-box").length !== 0;
});
},
next: () => {
$('.toggle-box > button:contains("下一题")').click();
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
const type = $(item.html).find(".question-box .tag").text();
switch (type) {
case "单选":
item.type = "0";
break;
case "多选":
item.type = "1";
break;
case "判断":
item.type = "3";
break;
}
return item;
}
},
// 芯位教育收录
{
type: "save",
name: "芯位教育",
match: () => location.host === "www.51xinwei.com" && location.href.includes("/homeworkDetailPage"),
question: {
html: ".question-content-body",
question: ".topic-title",
options: ".el-radio-group label .label,.el-checkbox-group label .label",
type: ".question-box .tag",
workType: "xinwei",
pageType: "xinwei"
},
init: async () => {
await waitUntil(function() {
return $(".question-content-body").length !== 0;
});
},
answerHook: (item) => {
const type = $(item.html).find(".question-box .tag").text();
let answer = $(item.html).find(".answer-area > span:eq(1)").text();
switch (type) {
case "单选":
case "多选":
answer = answer.split(",");
item.answer = answer.map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
if (item.answer.length === 0) {
return;
}
item.type = type === "单选" ? "0" : "1";
break;
case "判断":
item.type = "3";
if (answer == "T") {
item.answer = ["正确"];
}
if (answer == "F") {
item.answer = ["错误"];
}
break;
}
return item;
}
}
];
const chatglm = [
{
type: "hook",
name: "智普清言token获取",
match: /chatglm.cn\/main\//i.test(location.href),
main: (data) => {
const app = data.app;
const cookies = document.cookie.split(";");
let chatglm_refresh_token = "";
cookies.forEach((cookie) => {
if (/chatglm_refresh_token/i.test(cookie)) {
chatglm_refresh_token = cookie.split("=")[1];
}
});
if (chatglm_refresh_token) {
app.app.gpt.forEach((item) => {
if (item.name === "GLM") {
item.key = chatglm_refresh_token;
}
});
app.setConfig(app.app);
msg("智普清言token获取成功");
}
}
}
];
const typeMap$1 = {
"single_selection": "单选题",
"multiple_selection": "多选题",
"true_or_false": "判断题",
"fill_in_blank": "填空题",
"short_answer": "简答题",
"text": "文本",
"analysis": "综合题",
"matching": "匹配题",
"random": "随机题",
"cloze": "完形填空题"
};
const guokai = [
{
type: "hook",
name: "国开hook",
match: location.host.includes("ouchn.cn"),
main: (data) => {
_unsafeWindow.mainClass = getUrl();
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== getUrl()) {
_unsafeWindow.mainClass = getUrl();
if (_unsafeWindow.mainClass === "homework-detail-container") {
await waitUntil(function() {
return $(".selectDan").length !== 0;
});
}
vuePageChange();
observer.disconnect();
}
});
if ($("body").length >= 1) {
observer.observe($("body")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
// 国开答案收录
{
type: "save",
name: "国开答案收录旧",
match: /\/exam\/([0-9]+)\/subjects#\/submission\/([0-9]+)/i.test(location.href),
question: {
html: "li.subject",
question: ".summary-title .subject-description",
options: ".subject-options li .option-content",
type: ".subject-point > span:eq(0)",
workType: "guokai",
pageType: "guokai"
},
init: async () => {
await waitUntil(function() {
return $(".loading-gif").hasClass("ng-hide");
});
},
answerHook: (item) => {
const scope = _unsafeWindow.angular.element(item.html).scope();
const subject = scope.subject;
if (subject.type === "text") {
return;
}
let haveAnswer = false;
const point = parseFloat(subject.point);
const score = parseFloat(subject.score);
const isT = point !== 0 && point === score;
let ques = $(`<div>${subject.description}</div>`).clone();
ques.find("span.__blank__").remove();
item.question = removeHtml1(ques.html());
item.options = subject.options.map((item1) => {
return removeHtml1(item1.content);
});
item.type = typeChange(typeMap$1[subject.type]);
if (subject.correctOptions && subject.correctOptions.length > 0) {
item.answer = subject.correctOptions.map((item1) => {
return removeHtml1(item1.content);
});
haveAnswer = true;
}
if (subject.correct_answers && subject.correct_answers.length > 0) {
item.answer = subject.correct_answers.map((item1) => {
return item1.content;
});
haveAnswer = true;
}
if (!haveAnswer && !isT && subject.type !== "true_or_false") {
return;
}
switch (subject.type) {
case "single_selection":
case "multiple_selection":
case "true_or_false":
if (!haveAnswer) {
item.answer = subject.options.filter((item2) => item2.isChosen).map((item2) => removeHtml1(item2.content));
if (item.answer.length === 0)
return;
if (subject.type === "true_or_false") {
const answer = item.answer[0];
item.options = [];
const isCorrect = isTrue(answer) ? "正确" : isFalse(answer) ? "错误" : "";
if (isCorrect) {
item.answer = [isT ? isCorrect : isCorrect === "正确" ? "错误" : "正确"];
} else {
item.answer = [];
}
}
} else {
if (subject.type === "true_or_false") {
const answer = item.answer[0];
item.options = [];
const isCorrect = isTrue(answer) ? "正确" : isFalse(answer) ? "错误" : "";
if (isCorrect) {
item.answer = [isCorrect];
}
}
}
break;
case "analysis":
break;
case "cloze":
log(subject.sub_subjects, "error");
item.options = subject.sub_subjects.map((item1) => {
return item1.options.map((item2) => {
return removeHtml1(item2.content);
});
});
break;
case "fill_in_blank":
if (!haveAnswer) {
item.answer = subject.answers.map((item1) => {
return item1.content;
});
}
break;
}
return item;
}
},
// 广开答案收录
{
type: "save",
name: "广开答案收录",
match: /mod\/quiz\/review\.php/i.test(location.pathname) && ["moodle.syxy.ouchn.cn", "xczxzdbf.moodle.qwbx.ouchn.cn", "elearning.bjou.edu.cn", "whkpc.hnqtyq.cn:5678", "course.ougd.cn", "study.ouchn.cn"].includes(location.host),
question: {
html: ".que",
question: ".qtext",
options: ".answer > div",
type: "",
answer: ".rightanswer",
workType: "guangkai",
pageType: "guangkai"
},
init: async () => {
$(".specificfeedback").remove();
},
next: async () => {
!$(".qn_buttons > a").last().hasClass("thispage") && $(".arrow_text").click();
},
answerHook: (item) => {
const quesStatus = $(item.html).find(".info .state").text();
item.type = $(item.html).attr("class").split(" ")[1];
$(item.html).find(".qtext .accesshide").remove();
item.question = removeHtml1($(item.html).find(".qtext").html());
switch (item.type) {
case "truefalse":
item.type = "3";
item.$options = $(item.html).find("input[type=radio]");
item.options = $(item.html).find(".answer > div").map((index, element) => {
let optionText = removeHtml1($(element).html());
return optionText.trim();
}).get();
item.answer = [];
item.answer = $(item.html).find(".answer > div").map((index, element) => {
if (item.$options.eq(index).prop("checked")) {
return item.options[index];
} else {
return "";
}
}).get();
item.answer = item.answer.filter((item2) => item2 !== "");
if (item.answer.length === 0) {
item.temp = removeHtml1($(item.html).find(".rightanswer").html()).replace("正确答案是", "").trim();
item.answer = [item.temp];
} else {
if (!quesStatus.includes("正确")) {
item.answer = item.options.filter((zzz) => !zzz.includes(item.answer[0]));
}
}
isTrue(item.answer[0]) ? item.answer = ["正确"] : isFalse(item.answer[0]) ? item.answer = ["错误"] : item.answer = [];
item.options = [];
break;
case "multichoice":
case "multichoiceset":
item.type = "1";
item.$options = $(item.html).find("input[type=checkbox]");
if (item.$options.length === 0) {
item.type = "0";
item.$options = $(item.html).find("input[type=radio]");
}
item.options = $(item.html).find(".answer > div").map((index, element) => {
let inx = $(element).find(".answernumber").text().trim();
let optionText = removeHtml1($(element).html());
if (inx === "") {
return optionText.trim();
}
return optionText.split(inx)[1].trim();
}).get();
if (quesStatus.includes("正确") && !quesStatus.includes("部分正确")) {
item.answer = [];
item.answer = $(item.html).find(".answer > div").map((index, element) => {
let inx = $(element).find(".answernumber").text().trim();
let optionText = removeHtml1($(element).html());
if (item.$options.eq(index).prop("checked") && $(element).find(".text-success").length > 0) {
if (inx === "") {
return optionText.trim();
}
return optionText.split(inx)[1].trim();
} else {
return "";
}
}).get();
item.answer = item.answer.filter((item2) => item2 !== "");
} else {
item.temp = removeHtml1($(item.html).find(".rightanswer").html(), false).replace("正确答案是:", "").trim();
const optionsBase = item.options.slice(0);
optionsBase.sort((a, b) => {
return b.length - a.length;
});
item.answer = optionsBase.map((item1) => {
if (item.temp.includes(item1)) {
item.temp = item.temp.replace(item1, "");
return item1;
} else {
return "";
}
});
item.answer = item.answer.filter((item2) => item2 !== "");
if (item.answer.length > 1)
;
}
break;
case "shortanswer":
item.type = "4";
item.$options = $(item.html).find("input[type=text]");
break;
case "match":
item.type = "24";
item.match = $(".answer tr td.text").map((index, element) => {
return removeHtml1($(element).html());
}).get();
item.$options = $(".answer tr td.control select");
item.selects = $(".answer tr td.control select").map((index, element) => {
let option = $(element).find("option").map((index2, element2) => {
let value = $(element2).val();
let text = $(element2).text();
return {
value,
text
};
}).get();
return [option];
}).get();
break;
case "description":
return;
}
return item;
}
},
{
type: "ask",
name: "广开形考",
tips: "广开仅支持基础题型,特殊题型请手动完成",
match: /mod\/quiz\/attempt\.php/i.test(location.pathname) && ["moodle.syxy.ouchn.cn", "xczxzdbf.moodle.qwbx.ouchn.cn", "elearning.bjou.edu.cn", "whkpc.hnqtyq.cn:5678", "course.ougd.cn", "study.ouchn.cn"].includes(location.host),
question: {
html: ".que",
question: ".qtext",
options: ".answer > div",
type: "",
workType: "guangkai",
pageType: "guangkai"
},
ischecked: (item) => {
return Boolean(item.prop("checked"));
},
questionHook: (item) => {
item.type = $(item.html).attr("class").split(" ")[1];
$(item.html).find(".qtext .accesshide").remove();
item.question = removeHtml1($(item.html).find(".qtext").html());
switch (item.type) {
case "truefalse":
item.type = "3";
item.$options = $(item.html).find("input[type=radio]");
item.options = [];
break;
case "multichoice":
case "multichoiceset":
item.type = "1";
item.$options = $(item.html).find("input[type=checkbox]");
if (item.$options.length === 0) {
item.type = "0";
item.$options = $(item.html).find("input[type=radio]");
}
item.options = $(item.html).find(".answer > div").map((index, element) => {
let inx = $(element).find(".answernumber").text().trim();
let optionText = removeHtml1($(element).html());
if (inx === "") {
return optionText.trim();
}
return optionText.split(inx)[1].trim();
}).get();
break;
case "shortanswer":
item.type = "4";
item.$options = $(item.html).find("input[type=text]");
break;
case "match":
item.type = "24";
item.match = $(".answer tr td.text").map((index, element) => {
return removeHtml1($(element).html());
}).get();
item.$options = $(".answer tr td.control select");
item.selects = $(".answer tr td.control select").map((index, element) => {
let option = $(element).find("option").map((index2, element2) => {
let value = $(element2).val();
let text = $(element2).text();
return {
value,
text
};
}).get();
return [option];
}).get();
case "essay":
item.type = "4";
item.$options = $(item.html).find("iframe");
break;
case "description":
return;
}
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "4":
$(item.html).find("input.form-control").each(function(index, element) {
$(element).val(item.answer[index]);
});
$(item.html).find("iframe:eq(0)").contents().find("body").html(item.answer[0]);
return false;
case "3":
item.ques.$options.each((index, element) => {
const pdtext = $(element).parent().find("label").text();
if (typeof item.answer === "object") {
item.answer = item.answer[0];
}
if (isTrue(item.answer) && isTrue(pdtext)) {
$(element).click();
return false;
} else if (isFalse(item.answer) && isFalse(pdtext)) {
$(element).click();
return false;
}
return true;
});
default:
return true;
}
},
finish: (item) => {
$(".submitbtns .btn-primary").click();
}
},
{
type: "ask",
name: "国开专题测验",
match: location.host === "lms.ouchn.cn" && /\/exam\/([0-9]+)\/subjects/i.test(location.pathname) && !/\/exam\/([0-9]+)\/subjects#\/submission\/([0-9]+)/i.test(location.href),
question: {
html: "li.subject",
question: ".summary-title .subject-description",
options: ".subject-options li .option-content",
type: ".summary-sub-title span:eq(0)",
workType: "guokai",
pageType: "guokai"
},
init: async () => {
await waitUntil(function() {
return $(".loading-gif").hasClass("ng-hide") && $(".hd .examinee .submit-label").eq(0).text() === "";
});
},
ischecked: (item) => {
return Boolean(item.parent().find("input").eq(-1).prop("checked"));
},
questionHook: (item) => {
const scope = _unsafeWindow.angular.element(item.html).scope();
const subject = scope.subject;
if (subject.type === "text") {
return;
}
item.type = typeChange(typeMap$1[subject.type]);
let ques = $(`<div>${subject.description}</div>`).clone();
ques.find("span.__blank__").remove();
item.question = removeHtml1(ques.html());
subject.options = subject.options.sort((a, b) => {
return a.sort - b.sort;
});
item.options = subject.options.map((item1) => {
return removeHtml1(item1.content);
});
log(item.type, subject.type);
switch (subject.type) {
case "cloze":
item.options = subject.sub_subjects.map((item1) => {
return item1.options.map((item2) => {
return removeHtml1(item2.content);
});
});
item.$options = $(item.html).find("select");
case "true_or_false":
item.options = [];
}
item.subject = subject;
item.scope = scope;
return item;
},
setAnswer: (item) => {
log(item.ques, "success");
switch (item.type) {
case "2":
log($(item.html).find(".___answer"), "success");
$(item.html).find(".___answer").each((index, element) => {
$(element).html(item.answer[index]);
item.ques.scope.subject.answers[index].content = item.answer[index];
item.ques.scope.onChangeSubmission(item.ques.subject);
});
return false;
case "4":
$(item.html).find(".simditor-body.needsclick>p").each(function(index, element) {
$(element).html(item.answer[index]);
item.ques.subject.answered_content = item.answer[index];
});
item.ques.scope.onChangeSubmission(item.ques.subject);
return false;
case "14":
item.ques.subject.sub_subjects.forEach((sub_subject, index) => {
let an = item.answer[index];
sub_subject.options.forEach((option, index1) => {
if (option.content === an) {
sub_subject.answeredOption = String(option.id);
item.ques.scope.onChangeSubmission(sub_subject);
$(item.html).find(`input[value="${option.id}"]`).click();
$(item.html).find(`button:eq(${index})>span:eq(1)`).text(an);
}
});
});
return false;
}
return true;
}
},
{
type: "save",
name: "上海开放收录",
match: () => location.host === "l.shou.org.cn" && location.href.includes("assignment/history.aspx?homeWorkId"),
question: {
html: ".e-q-body",
question: ".ErichText",
options: "ul>li>.ErichText",
type: ".question-box .tag",
workType: "shou",
pageType: "shou"
},
init: async () => {
},
answerHook: (item) => {
item.$options = $(item.html).find("ul>li");
let an = $(item.html).find("ul>li.checked").map((index, element) => {
return removeHtml1($(element).find(".ErichText").html());
}).get();
const isT = $(item.html).find(".e-q-right").length > 0;
item.answer = an.filter((item2) => item2 !== "");
const ckAnswer = $(item.html).find(".e-ans-ref .e-ans-r").map((index, element) => {
return removeHtml1($(element).html());
}).get();
let ans = ckAnswer.map((item1) => {
let index = item1.charCodeAt() - 65;
return item.options[index];
}).filter((item1) => item1 !== "" && item1 !== void 0);
switch ($(item.html).attr("data-questiontype")) {
case "2":
item.type = "1";
break;
case "1":
item.type = "0";
break;
case "3":
item.type = "3";
item.answer = $(item.html).find("ul>li.checked").map((index, element) => {
return removeHtml1($(element).html());
}).get();
item.options = [];
isTrue(item.answer[0]) ? item.answer = ["正确"] : isFalse(item.answer[0]) ? item.answer = ["错误"] : item.answer = [];
break;
case "11":
item.type = "19";
const quesList = $(item.html).find("form").map((index, element) => {
return {
type: "0",
question: removeHtml1($(element).find(".e-q-q .ErichText").html()),
options: $(element).find("ul li .ErichText").map((index2, element2) => {
return removeHtml1($(element2).html());
}).get()
};
}).get();
ans = ans.length > 0 ? judgeAnswer(ans[0]) : [];
item.options = quesList;
default:
log("暂未适配当前题型", $(item.html).attr("data-questiontype"), "error");
return;
}
if (ans.length > 0) {
item.answer = ans;
return item;
}
if (!isT && item.type === "3" && item.answer.length > 0) {
item.answer = isTrue(item.answer[0]) ? ["错误"] : isFalse(item.answer[0]) ? ["正确"] : [];
} else if (!isT) {
return;
}
return item;
}
},
{
type: "ask",
name: "上海开放作业",
tips: "上海开放大学目前仅支持选择判断题,其他题型请手动完成",
match: () => location.host === "l.shou.org.cn" && location.href.includes("assignment/preview.aspx?homeWorkId"),
question: {
html: ".e-q-body",
question: ".ErichText",
options: "ul>li>.ErichText",
type: ".question-box .tag",
workType: "shou",
pageType: "shou"
},
init: async () => {
await waitUntil(function() {
return $(".e-q-body").length !== 0;
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
switch ($(item.html).attr("data-questiontype")) {
case "2":
item.type = "1";
break;
case "1":
item.type = "0";
break;
case "3":
item.type = "3";
item.$options = $(item.html).find("ul>li");
break;
default:
log("暂未适配当前题型", $(item.html).attr("data-questiontype"), "error");
return;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
}
];
const chengjiaoyun = [
{
type: "ask",
name: "成教云考试",
tips: "成教云仅支持选择判断,其他题型请反馈给作者",
match: () => location.href.includes("student/exam/resource/paper_card"),
question: {
html: ".ui-question",
question: ".ui-question-content-wrapper",
options: ".ui-question-options li .ui-question-content-wrapper",
type: ".ui-question-group-title",
workType: "chengjiaoyun",
pageType: "chengjiaoyun"
},
init: async () => {
await waitUntil(function() {
return isExist(".ui-question");
});
if (!_unsafeWindow.top.location.href.includes("student/exam2/doexam")) {
return false;
}
},
toquestion: (index) => {
$(`.ui-card-questions ul li:eq(${index - 1})`).click();
},
next: async () => {
$("#next-btn").click();
},
ischecked: (item) => {
return item.hasClass("ui-option-selected");
},
questionHook: (item) => {
let type = $(item.html).parent().find(".ui-question-group-title").text().split(".")[1].trim();
item.$options = $(item.html).find(".ui-question-options li>span");
switch (type) {
case "单选题":
item.type = "0";
break;
case "多选题":
item.type = "1";
break;
case "判断题":
item.type = "3";
item.options = [];
break;
}
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "3":
let bold = item.answer;
item.ques.$options.each((index, element) => {
if (isTrue(bold) && isTrue(removeHtml1($(element).parent().html()))) {
$(element).click();
}
if (isFalse(bold) && isFalse(removeHtml1($(element).parent().html()))) {
$(element).click();
}
});
return false;
default:
return true;
}
},
finish: (item) => {
}
},
{
type: "save",
name: "成教云收录",
match: () => location.href.includes("student/exam/resource/paper_card"),
question: {
html: ".ui-question",
question: ".ui-question-content-wrapper",
options: ".ui-question-options li .ui-question-content-wrapper",
type: ".ui-question-group-title",
workType: "chengjiaoyun",
pageType: "chengjiaoyun"
},
init: async () => {
await waitUntil(function() {
return isExist(".ui-question");
});
if (_unsafeWindow.top.location.href.includes("student/exam2/doexam")) {
return false;
}
},
answerHook: (item) => {
let type = $(item.html).parent().find(".ui-question-group-title").text().split(".")[1].trim();
item.$options = $(item.html).find(".ui-question-options li>span");
item.answer = $(item.html).find(".ui-question-options li.ui-correct-answer .ui-question-content-wrapper").map((_index, item2) => {
return removeHtml1($(item2).html());
}).get();
switch (type) {
case "单选题":
item.type = "0";
break;
case "多选题":
item.type = "1";
break;
case "判断题":
item.type = "3";
item.options = [];
item.answer = isTrue(item.answer[0]) ? ["正确"] : isFalse(item.answer[0]) ? ["错误"] : [];
break;
}
return item;
}
}
];
const jsou = [
{
type: "hook",
name: "hook",
match: () => location.host === "xuexi.jsou.cn" && location.href.includes("newHomework/showHomeworkByStatus") && location.href.includes("checked=true"),
main: (data) => {
_unsafeWindow.mainClass = $("#homeworkHistory").find(".active").attr("id");
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== $("#homeworkHistory").find(".active").attr("id")) {
_unsafeWindow.mainClass = $("#homeworkHistory").find(".active").attr("id");
await waitUntil(function() {
return $(".layui-layer-shade").length === 0;
});
vuePageChange();
observer.disconnect();
}
for (let mutation of mutations) {
if (mutation.type === "attributes" && mutation.attributeName === "class") {
if (mutation.target.textContent && (mutation.target.textContent.includes("下一题") || mutation.target.textContent.includes("上一题"))) {
observer.disconnect();
vuePageChange();
}
}
}
});
if ($("body").length >= 1) {
observer.observe($("body")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "江苏开放大学答题",
tips: "江开适配中,目前仅支持选择、判断题、填空题,其他题型请反馈账号给作者",
match: () => location.host === "xuexi.jsou.cn" && location.href.includes("/showHomeworkByStatus") && location.href.includes("checked=false"),
question: {
html: ".insert",
question: ".window-title",
options: ".questionId-option li > div:not(.numberCover)",
type: ".questionDiv >div:eq(0)",
workType: "jsou",
pageType: "jsou"
},
init: async () => {
document.addEventListener("copy", function(event2) {
event2.stopImmediatePropagation();
layer.msg("复制成功", { icon: 4 });
event2.clipboardData.setData("text/plain", window.getSelection().toString());
});
document.addEventListener("paste", () => {
event.stopImmediatePropagation();
let paste = (event.clipboardData || window.clipboardData).getData("text");
layer.msg("粘贴成功", { icon: 4 });
document.execCommand("insertText", false, paste);
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
item.type = $(item.html).find(".questionDiv >div:eq(1)").text().trim();
item.type = typeChange(item.type);
item.$options = $(item.html).find(".questionId-option li .numberCover");
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "2":
item.$options = $(item.html).find(".questionTitle input");
if (item.$options.length == item.answer.length) {
item.$options.each((index, element) => {
$(element).val(item.answer[index]);
});
return false;
}
}
return true;
},
finish: (item) => {
}
},
// 江开收录
{
type: "save",
name: "江苏开放大学收录",
match: () => location.host === "xuexi.jsou.cn" && location.href.includes("newHomework/showHomeworkByStatus") && location.href.includes("checked=true"),
question: {
html: ".insert",
question: ".window-title",
options: "#questionId-option li > div:not(.numberCover)",
type: ".questionDiv >div:eq(0)",
workType: "jsou",
pageType: "jsou"
},
init: async () => {
},
answerHook: (item) => {
item.type = $(item.html).find(".questionDiv >div:eq(1)").text();
let score = $(item.html).find(".questionDiv >div").text().match(/分值(\d+)分/)[1];
let score2 = $(item.html).find(".questionDiv >div").text().match(/得分:(\d+)/)[1];
item.type = typeChange(item.type);
let isT = score == score2 && score2 !== 0;
if (!isT && item.type != 3) {
return;
}
switch (item.type) {
case "0":
case "1":
case "3":
item.answer = $(item.html).find(".answer .correctAnswer").text().trim().split(";").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
item.answer = item.answer.filter((x) => x);
if (item.answer.length == 0) {
item.answer = $(item.html).find(".answer .studentAnswer").text().trim().split(";").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
}
item.answer = item.answer.filter((x) => x);
if (item.type == 3) {
item.options = [];
let answer = item.answer[0];
if (isFalse(answer))
item.answer = "错误";
else if (isTrue(answer))
item.answer = "正确";
else
return;
if (["正确", "错误"].includes(item.answer) && !isT) {
item.answer = item.answer === "正确" ? "错误" : "正确";
}
}
break;
case "2":
item.options = [];
item.answer = $(item.html).find(".answer .correctAnswer").text().trim().split(";");
item.answer = item.answer.filter((x) => x);
if (item.answer.length == 0) {
item.answer = $(item.html).find(".answer .studentAnswer").text().trim().split(";");
}
item.answer = item.answer.filter((x) => x);
break;
default:
return;
}
return item;
}
}
];
const zhijiaoyun = [
{
type: "hook",
name: "hook",
match: location.host === "spoc-exam.icve.com.cn" || location.host.includes("exam.courshare.cn") || location.host.includes("webtrn.cn"),
main: (data) => {
_unsafeWindow.mainClass = $(".q_content").first().attr("id");
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== $(".q_content").first().attr("id")) {
_unsafeWindow.mainClass = $(".q_content").first().attr("id");
if (_unsafeWindow.mainClass === "homework-detail-container") {
await waitUntil(function() {
return $(".q_content").length !== 0;
});
}
vuePageChange();
observer.disconnect();
}
for (let mutation of mutations) {
if (mutation.type === "attributes" && mutation.attributeName === "class") {
if (mutation.target.textContent && (mutation.target.textContent.includes("下一题") || mutation.target.textContent.includes("上一题"))) {
observer.disconnect();
vuePageChange();
}
}
}
});
if ($("#examPage").length >= 1) {
observer.observe($("#examPage")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "hook",
name: "hook",
match: location.host === "zjy2.icve.com.cn" || location.host === "zyk.icve.com.cn",
main: (data) => {
$(".minimized-dialog img").css({
"z-index": "999999"
});
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.name;
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== $("#app")[0].__vue__.$route.name) {
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.name;
if (_unsafeWindow.mainClass === "homework-detail-container") {
await waitUntil(function() {
return $(".q_content").length !== 0;
});
}
vuePageChange();
observer.disconnect();
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "职教云作业",
tips: "职教云只支持选择、判断题,填空、简答,其他题型请反馈给作者",
match: () => location.href.includes("examflow_index.action"),
question: {
html: ".q_content",
question: ".divQuestionTitle",
options: ".questionOptions > div",
type: ".question-box .tag",
workType: "zhijiaoyun",
pageType: "zhijiaoyun"
},
init: async () => {
await waitUntil(function() {
return $(".q_content").length !== 0;
});
},
next: () => {
},
finish: (item) => {
$('.paging_next:contains("下一页")').click();
},
ischecked: (item) => {
return item.parent().find(".checkbox_on").length !== 0;
},
questionHook: (item) => {
var _a, _b;
item.question = removeHtml1($(item.html).find(".divQuestionTitle").html());
let qid = $(item.html).find("[name='quesId']").attr("id");
let type = (_b = (_a = document.getElementById(`questionId[${qid}]`)) == null ? void 0 : _a.getAttribute("answertype")) == null ? void 0 : _b.trim();
let inx = $(item.html).find("span[name^='questionIndex']").text().trim() + "、";
let score = $(item.html).find(".q_score").text().trim();
item.question = item.question.replace(inx, "").replace(score, "").trim();
item.options = $(item.html).find(".questionOptions>div").map((_inx, item2) => {
let inx2 = $(item2).find(".option_index").text().trim();
return removeHtml1($(item2).html()).replace(inx2, "").trim();
}).get();
item.$options = $(item.html).find(".questionOptions>div input");
switch (type) {
case "单项选择题":
case "单选题":
case "singlechoice":
item.type = "0";
break;
case "多项选择题":
case "多选题":
case "multichoice":
item.type = "1";
break;
case "判断题":
case "bijudgement":
item.type = "3";
item.options = [];
break;
case "fillblank":
item.type = "2";
item.question = removeHtml1($(item.html).find("[name='fillblankTitle']").html());
break;
case "cloze":
item.type = "14";
item.options = $(item.html).find(".questionOptions>.exam_cloze_choice").map((inx2, xx) => {
return [$(xx).find(".optionContent").map((inx1, xx1) => {
return removeHtml1($(xx1).html());
}).get()];
}).get();
break;
case "textarea":
item.type = "4";
item.options = [];
break;
}
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "2":
$(item.html).find(".fillblank_input > input").each((inx, xx) => {
$(xx).val(item.answer[inx]);
});
return false;
case "3":
let bold = item.answer;
item.ques.$options.each((index, element) => {
if (isTrue(bold) && isTrue(removeHtml1($(element).parent().html()))) {
$(element).click();
}
if (isFalse(bold) && isFalse(removeHtml1($(element).parent().html()))) {
$(element).click();
}
});
return false;
case "4":
let qid = $(item.html).find("[name='quesId']").attr("id");
_unsafeWindow.UE.getEditor(`_baidu_editor_${qid}`).setContent(`<p>${item.answer}</p>`);
return false;
}
return true;
}
},
{
type: "save",
name: "职教云收录",
match: () => location.href.includes("examrecord_recordDetail.action"),
question: {
html: ".q_content",
question: ".divQuestionTitle",
options: ".questionOptions>div.q_option_readonly",
type: ".question-box .tag",
workType: "zhijiaoyun",
pageType: "zhijiaoyun"
},
init: async () => {
await waitUntil(function() {
return $(".q_content").length !== 0;
});
},
answerHook: (item) => {
const isT = $(item.html).find(".exam.icon_examright").length;
const qid = $(item.html).find("input[name='quesId']:not([id='']").attr("id");
const type = $(`input#qId${qid}`).attr("qtype");
const inx = $(item.html).find("span[name^='questionIndex']").text().trim() + "、";
const score = $(item.html).find(".q_score").text().trim();
item.question = item.question.replace(inx, "").replace(score, "").trim();
item.options = $(item.html).find(".questionOptions>div.q_option_readonly").map((_inx, xx) => {
let opInx = $(xx).find("span[name='optionIndexName']").text().trim();
return removeHtml1($(xx).html()).replace(opInx, "").trim();
}).get();
switch (type) {
case "单项选择题":
case "单选题":
case "singlechoice":
item.type = "0";
break;
case "多项选择题":
case "多选题":
case "multichoice":
item.type = "1";
break;
case "判断题":
case "bijudgement":
item.type = "3";
break;
case "fillblank":
case "填空题":
item.type = "2";
item.question = removeHtml1($(item.html).find(".answerOption>span:eq(0)").html());
break;
case "cloze":
case "完形填空":
item.type = "14";
item.options = $(item.html).find(".questionOptions>.exam_cloze_choice").map((inx2, xx) => {
return [$(xx).find(".optionContent").map((inx1, xx1) => {
return removeHtml1($(xx1).html());
}).get()];
}).get();
item.answer = $(item.html).find(".exam_rightAnswer .answer_table .one_answer>span").map((inx2, xx) => {
const da = $(xx).text().trim();
return item.options[inx2][da.charCodeAt(0) - 65];
}).get();
break;
case "textarea":
item.type = "4";
item.options = [];
item.answer = removeHtml1($(item.html).find(".exam_rightAnswer .has_standard_answer").html());
break;
}
switch (item.type) {
case "0":
case "1":
item.answer = $(item.html).find('.exam_rightAnswer .exam_answers_tit>span[name="rightAnswer"]').text().trim().split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
log(item.answer, "success");
if (item.answer.length == 0) {
if (isT == 0) {
return;
}
item.answer = $(item.html).find('.exam_stu_answer span[name="stuAnswer"]').text().trim().split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
}
break;
case "2":
if (isT == 0) {
item.answer = $(item.html).find(".exam_rightAnswer span.fillblank_answer").map((inx2, xx) => {
return removeHtml1($(xx).html());
}).get();
} else {
item.answer = $(item.html).find(".exam_stu_answer span.fillblank_answer").map((inx2, xx) => {
return removeHtml1($(xx).html());
}).get();
}
log(item.answer, "success");
break;
case "3":
item.options = [];
let answer = $(item.html).find('.exam_stu_answer span[name="stuAnswer"]').text().trim();
if (["正确", "错误"].includes(answer)) {
if (isT) {
item.answer = [answer];
} else {
item.answer = [answer === "正确" ? "错误" : "正确"];
}
}
break;
}
return item;
}
},
{
type: "save",
name: "智慧职教收录",
match: () => location.host === "zjy2.icve.com.cn" && (location.href.includes("/spocviewsJob") || location.href.includes("/viewExam")),
question: {
html: ".subjectDet",
question: ".seeTitle .htmlP.ql-editor",
options: ".optionList .htmlP.ql-editor",
type: ".question-box .tag",
workType: "zhijiaoyun",
pageType: "zhijiaoyun"
},
init: async () => {
await waitUntil(function() {
return $(".subjectDet").length !== 0;
});
},
answerHook: (item) => {
const type = $(item.html).find(".xvhao").text().trim();
item.type = typeChange(type.match(/【(.*)】/)[1].trim().replace("填空题(客观)", "填空题"));
let answer = $(item.html).find(".answer").text().trim();
item.answer = answer.split(",").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
switch (item.type) {
case "2":
item.options = [];
item.answer = $(item.html).find(".answer>span").map((inx, xx) => {
return removeHtml1($(xx).html());
}).get();
break;
case "3":
item.options = $(item.html).find(".optionList>div").map((inx, xx) => {
return removeHtml1($(xx).html());
}).get();
item.answer = answer.split(",").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
item.answer = judgeAnswer(item.answer[0]);
item.options = [];
break;
case "11":
const left = $(item.html).find(".optionList .matching>.htmlP.ql-editor").map((inx, xx) => {
return removeHtml1($(xx).html());
}).get();
const right = $(item.html).find(".optionList>.text .htmlP.ql-editor").map((inx, xx) => {
return removeHtml1($(xx).html());
}).get();
item.options = [left, right];
let ans = {};
answer = $(item.html).find(".answer>span").map((inx, xx) => {
let [l, r] = $(xx).text().trim().split(".");
if (l.charCodeAt(0) >= 65) {
l = (l.charCodeAt(0) - 65).toString();
} else if (/^\d+$/.test(l)) {
l = (parseInt(l) - 1).toString();
}
if (r.charCodeAt(0) >= 65) {
r = (r.charCodeAt(0) - 65).toString();
} else if (/^\d+$/.test(r)) {
r = (parseInt(r) - 1).toString();
}
ans[left[l]] = right[r];
});
item.answer = ans;
break;
}
return item;
}
},
{
type: "ask",
name: "智慧职教+答题",
tips: "该平台问题较多,遇到请反馈给作者",
match: () => location.href.includes("coursePreview/jobTest") || location.href.includes("spockeepTest"),
question: {
html: ".subjectDet",
question: ".ql-editor",
options: ".optionList .ql-editor",
type: ".question-box .tag",
workType: "zhijiaoyun",
pageType: "zhijiaoyun"
},
init: async () => {
await waitUntil(function() {
return $(".subjectDet").length !== 0;
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
const type = $(item.html).find(".title.titleTwo").text().trim();
item.type = typeChange(type.match(/【(.*)】/)[1].trim().replace("填空题(客观)", "填空题"));
switch (item.type) {
case "3":
item.options = [];
item.$options = $(item.html).find(".optionList>div label");
break;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "智慧职教+收录",
match: () => location.host === "zyk.icve.com.cn" && (location.href.includes("/coursePreview/viewJob1") || location.href.includes("/viewExam")),
question: {
html: ".subjectDet",
question: ".seeTitle>span:eq(1)",
options: ".optionList>div",
type: ".question-box .tag",
workType: "zhijiaoyun",
pageType: "zhijiaoyun"
},
init: async () => {
await waitUntil(function() {
return $(".subjectDet").length !== 0;
});
},
answerHook: (item) => {
item.options = removeStartChar(item.options);
const type = $(item.html).find(".xvhao").text().trim();
item.type = typeChange(type.match(/【(.*)】/)[1].trim().replace("填空题(客观)", "填空题"));
let answer = $(item.html).find(".answer").text().trim();
item.answer = answer.split(",").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
switch (item.type) {
case "2":
item.options = [];
item.answer = $(item.html).find(".answer>span").map((inx, xx) => {
return removeHtml1($(xx).html());
}).get();
break;
case "3":
item.options = $(item.html).find(".optionList>div").map((inx, xx) => {
return removeHtml1($(xx).html());
}).get();
item.answer = answer.split(",").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
item.answer = judgeAnswer(item.answer[0]);
item.options = [];
break;
}
return item;
}
}
];
const cnzx = [
{
type: "ask",
name: "川农在线答题",
tips: "川农在线仅支持选择判断题,其他题型请反馈",
match: () => (location.host === "any.cnzx.info:81" || location.host === "zice.cnzx.info") && location.href.includes("KaoShi/ShiTiYe.aspx"),
question: {
html: "li.question",
question: ".wenti >p.stem",
options: ".wenti > ol > li",
type: ".question_head > span:eq(0)",
workType: "cnzx",
pageType: "cnzx"
},
init: async () => {
},
ischecked: (item) => {
return item.find("input").prop("checked");
},
questionHook: (item) => {
item.$options = $(item.html).find(".wenti > ol > li input");
if (item.options.length !== 0) {
item.type = item.$options.eq(0).attr("type") === "radio" ? "0" : "1";
if (item.options.length === 2 && item.options.includes("正确") && item.options.includes("错误")) {
item.type = "3";
item.options = [];
}
}
return item;
},
setAnswer(item) {
switch (item.type) {
case "3":
$(item.html).find(".wenti > ol > li").each((i, element) => {
if (isTrue(item.answer) && isTrue(removeHtml1($(element).html()))) {
item.ques.$options.eq(i).click();
}
if (isFalse(item.answer) && isFalse(removeHtml1($(element).html()))) {
item.ques.$options.eq(i).click();
}
});
return false;
}
return true;
},
finish: (item) => {
$("li.paginationjs-next.J-paginationjs-next").click();
}
},
{
type: "save",
name: "收录",
match: () => location.host === "zice.cnzx.info" && location.href.includes("ZaiXianLianXi.aspx"),
question: {
html: ".ShiTi>.ShiTiMiaoShu",
question: ".ShiTiMiaoShu",
options: ".el-radio-group label .label,.el-checkbox-group label .label",
type: ".question-box .tag",
workType: "cnzx",
pageType: "cnzx"
},
init: async () => {
},
answerHook: (item) => {
log($(item.html).text());
item.question = removeHtml1(titleClean(removeHtml1($(item.html).html())));
let type = $("ul.TiXing>li.DangQianTiXing:eq(0)>a").text();
let answer = [];
let option = $(item.html).next();
item.options = removeStartChar(option.find("ul li").map((_i, e) => {
if ($(e).hasClass("DaAn1")) {
answer.push(_i);
}
return titleClean(removeHtml1($(e).html()));
}).get());
item.answer = answer.map((i) => {
return item.options[i];
});
switch (type) {
case "单选题":
case "词汇与结构":
case "交际用语":
item.type = "0";
break;
case "多选题":
item.type = "1";
break;
case "判断题":
item.type = "3";
item.options = [];
item.answer = isTrue(item.answer[0]) ? ["正确"] : isFalse(item.answer[0]) ? ["错误"] : [];
break;
}
return item;
}
}
];
const yktDecode = (table, table1, text) => {
let reg = /<span class="xuetangx-com-encrypted-font">(.+?)<\/span>/g;
let fontList = text.match(reg);
if (fontList) {
fontList.forEach((font) => {
reg = /<span class="xuetangx-com-encrypted-font">(.+?)<\/span>/;
let fontStr = reg.exec(font);
if (fontStr && fontStr.length > 1) {
let zz = fontStr[1];
let zz1 = zz.split("").map((item) => {
return table[table1[item]];
}).join("");
text = text.replace(fontStr[0], zz1);
}
});
}
return text;
};
const ttfDownload = async (url) => {
return new Promise((resolve) => {
_GM_xmlhttpRequest({
method: "GET",
url,
responseType: "arraybuffer",
onload: function(response) {
let tables = {};
const font = Typr$1.parse(response.response);
for (let i = 19968; i <= 40959 + 1; i++) {
let char = String.fromCharCode(i);
let glyphIndex = Typr$1.U.codeToGlyph(font, i);
const path = Typr$1.U.glyphToPath(font, glyphIndex);
let hash = md5Exports.md5(JSON.stringify(path));
tables[char] = hash;
}
resolve(tables);
},
onerror: function(error) {
resolve({});
}
});
});
};
const ykt = [
{
type: "hook",
name: "hook",
match: location.host.includes("yuketang.cn"),
main: (data) => {
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.name;
log(_unsafeWindow.mainClass, "success");
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== $("#app")[0].__vue__.$route.name) {
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.name;
vuePageChange();
observer.disconnect();
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "雨课堂考试",
tips: "雨课堂暂时未开发完,仅支持选择判断",
match: () => location.host.includes("yuketang.cn") && location.href.includes("/exam/"),
question: {
html: ".exercise-item",
question: ".content",
options: ".el-checkbox__label,.el-radio__label",
type: ".question-box .tag",
workType: "yuketang",
pageType: "yuketang"
},
init: async () => {
await waitUntil(function() {
return $(".exercise-item").length !== 0;
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().hasClass("is-checked");
},
questionHook: (item) => {
const ques = item.html.__vue__.item;
item.type = typeChange(ques.TypeText);
item.question = titleClean(removeHtml1(ques.Body)).trim();
const options = {};
ques.Options && ques.Options.forEach((item1) => {
options[item1.key] = removeHtml1(item1.value);
});
item.options = ques.Options.sort((a, b) => {
return a.key.charCodeAt(0) - b.key.charCodeAt(0);
}).map((item1) => {
return removeHtml1(item1.value);
});
switch (item.type) {
case "0":
case "1":
break;
case "2":
item.options = [];
break;
case "3":
item.options = [];
break;
}
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "3":
item.ques.$options.get().forEach((element) => {
isFalse(item.answer) && $(element).find(".el-icon-close").length > 0 && element.click();
isTrue(item.answer) && $(element).find(".el-icon-check").length > 0 && element.click();
});
return false;
}
return true;
},
finish: (item) => {
}
},
{
type: "ask",
name: "雨课堂作业",
tips: "雨课堂仅兼容选择判断,其他题型请反馈给作者。雨课堂作业请务必开启自动切换,否则无法自动答题或导致答题错乱",
match: () => location.host.includes("yuketang.cn") && location.href.includes("cloud/student/exercise"),
question: {
html: ".subject-item.J_order",
question: ".content",
options: ".el-radio__label",
type: ".question-box .tag",
workType: "yuketang",
pageType: "yuketang"
},
init: async () => {
await waitUntil(function() {
return $(".el-icon-loading").length == 0 && $(".container-problem").length > 0 && $(".container-problem")[0].__vue__ && $(".container-problem")[0].__vue__.exerciseList;
});
const yktQues = $(".container-problem")[0].__vue__.exerciseList;
if (!yktQues) {
msg("未找到题目");
return;
}
msg("正在下载字体包,请耐心等待");
_unsafeWindow.ttfTable = await ttfDownload(yktQues.font);
_unsafeWindow.problems = yktQues.problems;
},
// 跳转指定
toquestion: (index) => {
$(`.aside-body ul>li:eq(${index}) .subject-item`).click();
},
// 下一题
next: () => {
$('.el-button.el-button--text:contains("下一题")').click();
},
ischecked: (item) => {
return item.hasClass("is-checked");
},
questionHook: (item, index) => {
if ($(".el-button.el-button--info.is-disabled.is-plain").length > 0) {
return;
}
const problem = _unsafeWindow.problems[index];
const ttfTable = _unsafeWindow.ttfTable;
const content = problem.content;
problem.user;
const table = JSON.parse(_GM_getResourceText("ttf2"));
item.question = titleClean(removeHtml1(yktDecode(table, ttfTable, content.Body))).trim();
item.type = typeChange(content.TypeText);
item.$options = () => {
return $(".item-body ul>li>label");
};
const options = {};
if (content.Options) {
content.Options.map((item1) => {
options[item1.key] = removeHtml1(yktDecode(table, ttfTable, item1.value));
});
item.options = content.Options.sort(
(a, b) => {
return a.key.charCodeAt(0) - b.key.charCodeAt(0);
}
).map((item1) => {
return removeHtml1(yktDecode(table, ttfTable, item1.value));
});
}
switch (item.type) {
case "0":
case "1":
break;
case "2":
item.question = removeHtml1(item.question.replace(/\[填空\d\]/g, ""));
break;
case "3":
item.options = [];
break;
default:
log("未知题型", item.type, "error");
break;
}
return item;
},
setAnswerHook: (item) => {
},
setAnswer: (item) => {
switch (item.type) {
case "3":
$(".item-body ul>li").get().forEach((element) => {
isFalse(item.answer) && $(element).find('use[*|href="#icon--tiankongticuowu"]').length > 0 && $(element).find("label").click();
isTrue(item.answer) && $(element).find('use[*|href="#icon--tiankongtizhengque"]').length > 0 && $(element).find("label").click();
});
return false;
}
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "考试收录",
match: () => location.host.includes("yuketang.cn") && location.href.includes("/result/"),
question: {
html: ".subject-item > .result_item",
question: "h4.clearfix.exam-font",
options: "ul.list-unstyled li",
type: ".item-type",
workType: "yuketang",
pageType: "yuketang"
},
init: async () => {
await waitUntil(function() {
return $(".subject-item").length;
});
},
answerHook: (item, index) => {
const ques = item.html.__vue__.item;
item.type = typeChange(ques.TypeText);
const options = {};
if (ques.Options) {
ques.Options.forEach((item1) => {
options[item1.key] = removeHtml1(item1.value);
});
item.options = ques.Options.sort((a, b) => {
return a.key.charCodeAt(0) - b.key.charCodeAt(0);
}).map((item1) => {
return removeHtml1(item1.value);
});
}
item.question = titleClean(removeHtml1(ques.Body)).trim();
switch (item.type) {
case "0":
case "1":
if (typeof ques.Answer === "string") {
item.answer = ques.Answer.split("").map((item2) => {
return options[item2];
});
} else if (typeof ques.Answer === "object") {
item.answer = ques.Answer.map((item2) => {
return options[item2];
});
}
break;
case "2":
log(ques.Blanks, "error");
item.answer = ques.Blanks.map((aa) => {
return removeHtml1(aa.Answers[0]);
});
break;
case "3":
item.options = [];
isTrue(ques.Answer[0]) ? item.answer = ["正确"] : isFalse(ques.Answer[0]) ? item.answer = ["错误"] : item.answer = [];
break;
}
return item;
}
},
{
type: "save",
name: "作业收录",
match: () => location.host.includes("yuketang.cn") && location.href.includes("cloud/student/exercise"),
question: {
html: ".dot",
question: "h4.clearfix.exam-font",
options: "ul.list-unstyled li",
type: ".item-type",
workType: "yuketang",
pageType: "yuketang"
},
init: async () => {
await waitUntil(function() {
return $(".el-icon-loading").length == 0 && $(".container-problem").length > 0 && $(".container-problem")[0].__vue__ && $(".container-problem")[0].__vue__.exerciseList;
});
await waitUntil(function() {
return $(".el-button.el-button--info.is-disabled.is-plain").length != 0;
});
const yktQues = $(".container-problem")[0].__vue__.exerciseList;
if (!yktQues) {
msg("未找到题目");
return;
}
msg("正在下载字体包,请耐心等待");
_unsafeWindow.ttfTable = await ttfDownload(yktQues.font);
_unsafeWindow.problems = yktQues.problems;
log($(".container-problem")[0].__vue__.exerciseList, "success");
},
answerHook: (item, index) => {
const problem = _unsafeWindow.problems[index];
const ttfTable = _unsafeWindow.ttfTable;
const content = problem.content;
const user = problem.user;
const table = JSON.parse(_GM_getResourceText("ttf2"));
item.question = titleClean(removeHtml1(yktDecode(table, ttfTable, content.Body))).trim();
item.type = typeChange(content.TypeText);
const options = {};
if (content.Options) {
content.Options.map((item1) => {
options[item1.key] = removeHtml1(yktDecode(table, ttfTable, item1.value));
});
item.options = content.Options.sort(
(a, b) => {
return a.key.charCodeAt(0) - b.key.charCodeAt(0);
}
).map((item1) => {
return removeHtml1(yktDecode(table, ttfTable, item1.value));
});
}
switch (item.type) {
case "0":
case "1":
if (typeof user.answer === "string") {
item.answer = user.answer.split("").map((item2) => {
return options[item2];
});
} else if (typeof user.answer === "object") {
item.answer = user.answer.map((item2) => {
return options[item2];
});
}
break;
case "2":
item.question = removeHtml1(item.question.replace(/\[填空\d\]/g, ""));
item.answer = content.Blanks.map((xx) => {
return removeHtml1(xx[0]);
});
item.answer = item.answer.filter((item2) => {
return item2 !== "undefined";
});
if (item.answer.length != content.blank_count) {
log("填空题数量不对", item.answer, "error");
item.answer = [];
log(user.answers, "error");
item.answer = Object.values(user.answers).map((xx) => {
return removeHtml1(xx[0]);
});
}
break;
case "3":
item.options = [];
isTrue(user.answer[0]) ? item.answer = ["正确"] : isFalse(user.answer[0]) ? item.answer = ["错误"] : item.answer = [];
break;
}
return item;
}
}
];
const ahjxjy = [
{
type: "ask",
name: "安徽继续教育答题",
tips: "该平台仅支持单选、多选、判断题型,其他题型暂不支持",
match: () => location.host === "main.ahjxjy.cn" && (location.href.includes("study/html/content/studying/?courseOpenId=") || location.href.includes("study/html/content/sxsk/?courseOpenId=") || location.href.includes("study/html/content/tkOnline/?courseOpenId=")),
question: {
html: ".e-q-body>.e-q",
question: ".ErichText",
options: "ul>li>.ErichText",
type: ".question-box .tag",
workType: "ahjxjy",
pageType: "ahjxjy"
},
init: async () => {
await waitUntil(function() {
return isExist(".e-q-body>.e-q") && isExist(".e-item");
});
if (!isExist(".photo-time") && !isExist(".btn_save")) {
return false;
}
},
ischecked: (item) => {
return item.parent().hasClass("checked");
},
questionHook: (item) => {
item.type = $(item.html).parent().parent().attr("id").trim();
switch (item.type) {
case "2":
item.type = "1";
break;
case "1":
item.type = "0";
break;
case "3":
item.type = "3";
item.$options = $(item.html).find("ul>li");
break;
case "5":
item.type = "4";
break;
default:
log("暂未适配当前题型", item.type, "error");
item.type = "8";
}
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "4":
$(item.html).find(".answer-input").val(item.answer[0]);
return false;
}
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "安徽继续教育收录",
tips: "该平台仅支持单选、多选、判断题型,其他题型暂不支持",
match: () => location.host === "main.ahjxjy.cn" && (location.href.includes("study/html/content/studying/?courseOpenId=") || location.href.includes("study/html/content/sxsk/?courseOpenId=") || location.href.includes("study/html/content/tkOnline/?courseOpenId=")),
question: {
html: ".e-q-body>.e-q",
question: ".ErichText",
options: "ul>li>.ErichText",
type: ".question-box .tag",
workType: "ahjxjy",
pageType: "ahjxjy"
},
init: async () => {
await waitUntil(function() {
log(isExist(".e-save"));
return isExist(".e-q-body>.e-q") && isExist(".w_e-q-panel");
});
if (!isExist(".e-quest-review")) {
return false;
}
},
answerHook: (item) => {
item.type = $(item.html).parent().parent().attr("id").trim();
item.$options = $(item.html).find("ul>li");
let an = $(item.html).find("ul>li.checked").map((index, element) => {
return removeHtml1($(element).find(".ErichText").html());
}).get();
const isT = $(item.html).find(".e-q-right").length > 0;
item.answer = an.filter((item2) => item2 !== "");
let ckAnswer = $(item.html).find(".e-ans-ref .e-ans-r").map((index, element) => {
return removeHtml1($(element).html());
}).get();
if (ckAnswer.length === 1 && ckAnswer[0].length > 1) {
ckAnswer = ckAnswer[0].split("、");
}
let ans = ckAnswer.map((item1) => {
let index = item1.charCodeAt() - 65;
return item.options[index];
}).filter((item1) => item1 !== "" && item1 !== void 0);
switch (item.type) {
case "2":
item.type = "1";
break;
case "1":
item.type = "0";
break;
case "3":
item.type = "3";
item.answer = $(item.html).find("ul>li.checked").map((index, element) => {
return removeHtml1($(element).html());
}).get();
item.options = [];
isTrue(item.answer[0]) ? item.answer = ["正确"] : isFalse(item.answer[0]) ? item.answer = ["错误"] : item.answer = [];
break;
case "5":
item.type = "4";
ans = [removeHtml1($(item.html).find(".e-ans-ref>.e-ans-r").html())];
item.options = [];
break;
case "11":
item.type = "19";
const quesList = $(item.html).find("form").map((index, element) => {
return {
type: "0",
question: removeHtml1($(element).find(".e-q-q .ErichText").html()),
options: $(element).find("ul li .ErichText").map((index2, element2) => {
return removeHtml1($(element2).html());
}).get()
};
}).get();
ans = ans.length > 0 ? judgeAnswer(ans[0]) : [];
item.options = quesList;
default:
log("暂未适配当前题型", item.type, "error");
return;
}
if (ans.length > 0) {
item.answer = ans;
return item;
}
if (!isT && item.type === "3" && item.answer.length > 0) {
item.answer = isTrue(item.answer[0]) ? ["错误"] : isFalse(item.answer[0]) ? ["正确"] : [];
} else if (!isT) {
return;
}
return item;
}
}
];
const qingshu = [
{
type: "save",
name: "青书作业答题收录",
match: () => location.host === "degree.qingshuxuetang.com" && (location.href.includes("Student/ExercisePaper?courseId=") || location.href.includes("Student/ViewQuiz?quizId=")),
question: {
html: ".paper-container > .question-detail-container",
question: ".question-detail-description",
options: ".question-detail-options .question-detail-option .option-description-preview",
type: ".question-detail-type-desc",
workType: "qingshu",
pageType: "qingshu"
},
init: async () => {
await waitUntil(function() {
return isExist(".question-detail-container") && _unsafeWindow.qsques;
});
},
answerHook: (item, index) => {
const ques = _unsafeWindow.qsques[index];
item.question = removeHtml1(ques.description);
item.options = ques.options ? ques.options.map((v) => {
return removeHtml1(v.description);
}) : [];
item.type = typeChange(ques.typeDesc);
item.answer = ques.solution.split("").map((v) => {
return item.options[v.charCodeAt(0) - 65];
});
switch (item.type) {
case "3":
item.options = [];
item.answer = isTrue(item.answer[0]) ? ["正确"] : isFalse(item.answer[0]) ? ["错误"] : [""];
break;
case "15":
item.options = [];
item.answer = [];
ques.subQuestions.forEach((v) => {
let options = v.options ? v.options.map((v2) => {
return removeHtml1(v2.description);
}) : [];
let answer = v.solution.split("").map((v2) => {
return options[v2.charCodeAt(0) - 65];
});
item.answer.push(answer);
item.options.push(options);
});
}
return item;
}
},
{
type: "ask",
name: "青书学堂作业答题",
tips: "青书学堂仅支持选择、判断等题型,其他题型请反馈给作者",
match: () => location.host === "degree.qingshuxuetang.com" && (location.href.includes("/Student/ExercisePaper") || location.href.includes("Student/ExamPaper") || location.href.includes("Student/ViewQuiz")),
question: {
html: ".paper-container > .question-detail-container",
question: ".question-detail-description",
options: ".question-detail-options .question-detail-option .option-description",
type: ".question-detail-type-desc",
workType: "qingshu",
pageType: "qingshu"
},
init: async () => {
await waitUntil(function() {
return isExist(".question-detail-container") && _unsafeWindow.qsques;
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().find("input").prop("checked");
},
toquestion: (index) => {
log($(`.group_item:eq(${index})`));
$(`.group_item:eq(${index})`).click();
},
questionHook: (item, index) => {
const ques = _unsafeWindow.qsques[index];
item.question = removeHtml1(ques.description);
item.options = ques.options ? ques.options.map((v) => {
return removeHtml1(v.description);
}) : [];
item.type = typeChange(ques.typeDesc);
switch (item.type) {
case "3":
item.options = [];
break;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
}
];
const uooc = [
{
type: "save",
name: "优课在线收录",
match: () => location.host === "cce.org.uooconline.com" && (location.href.includes("/exam/paper") || location.href.includes("/exam/")),
question: {
html: ".queContainer",
question: ".topic-title",
options: ".el-radio-group label .label,.el-checkbox-group label .label",
type: ".question-box .tag",
workType: "uooc",
pageType: "uooc"
},
init: async () => {
await waitUntil(function() {
return $(".queContainer").length !== 0;
});
},
answerHook: (item) => {
const ques = _unsafeWindow.angular.element(item.html).scope().question;
item.type = typeChange(ques.type_text);
item.question = ques.question;
item.options = ques.options_app.map((item2) => item2.value);
item.answer = ques.answer.map((ans) => {
return ques.options[ans];
});
switch (item.type) {
case "3":
item.options = [];
item.answer = judgeAnswer(item.answer[0]);
break;
}
return item;
}
}
];
const cjedu = [
{
type: "ask",
name: "京人平台答题",
tips: "京人平台仅支持选择判断,其他题型请反馈给作者",
match: () => location.host.includes("cj-edu.com") && (location.href.includes("/Examination") || location.href.includes("/ExamInfo")),
question: {
html: ".el-main>.all_subject>div.el-row",
question: "div.stem",
options: "ul li > label > span.el-radio__label > div:nth-child(2),ul li > label > span.el-checkbox__label > div:nth-child(2)",
type: ".question-box .tag",
workType: "cjedu",
pageType: "cjedu"
},
init: async () => {
await waitUntil(function() {
return $(".el-main>.all_subject>div.el-row").length !== 0;
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
let type = $(item.html).prevAll("h1").first().text().trim();
switch (type) {
case "单选题":
item.type = "0";
break;
case "多选题":
item.type = "1";
break;
case "判断题":
item.$options = $(item.html).find("ul li>label");
item.options = [];
item.type = "3";
break;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
// 芯位教育收录
{
type: "save",
name: "京人平台作业收录",
match: () => location.host.includes("cj-edu.com") && location.href.includes("/ViewAnswerSheet"),
question: {
html: ".el-main>.all_subject>div.el-row",
question: "p.stem",
options: "ul li > label > span.el-radio__label > div:nth-child(2),ul li > label > span.el-checkbox__label > div:nth-child(2)",
type: ".question-box .tag",
workType: "cjedu",
pageType: "cjedu"
},
init: async () => {
await waitUntil(function() {
return $(".el-main>.all_subject>div.el-row").length !== 0;
});
},
answerHook: (item) => {
let answer = $(item.html).find(".seeStudentAnswer>p.answer").text().replace("参考答案:", "").trim();
let type = $(item.html).prevAll("h1").first().text().trim();
if (item.options.length > 0) {
item.answer = answer.split(",").map((i) => {
return item.options[i.charCodeAt(0) - 65];
});
}
switch (type) {
case "单选题":
item.type = "0";
break;
case "多选题":
item.type = "1";
break;
case "判断题":
item.options = [];
item.answer = judgeAnswer(answer);
item.type = "3";
break;
}
return item;
}
}
];
const ytccr = [
{
type: "hook",
name: "hook",
match: location.host.includes("ytccr.com"),
main: (data) => {
const getHash = () => {
return getUrl();
};
_unsafeWindow.mainClass = getHash();
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== getHash()) {
_unsafeWindow.mainClass = getHash();
vuePageChange();
observer.disconnect();
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "绎通继教云答题",
tips: "绎通继教云仅支持选择判断",
match: () => location.host.includes("ytccr.com") && location.href.includes("learning-work") && location.href.includes("type=3"),
question: {
html: ".border-item",
question: ".title.qa-title",
options: ".opts-list .opt-title-cnt",
type: ".question-box .tag",
workType: "ytccr",
pageType: "ytccr"
},
init: async () => {
await waitUntil(function() {
return $(".border-item").length !== 0;
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
item.type = typeChange($(item.html).find(".qtype").text().trim());
switch (item.type) {
case "3":
item.options = [];
break;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "绎通继教云收录",
match: () => location.host.includes("ytccr.com") && location.href.includes("learning-work") && location.href.includes("type=5"),
question: {
html: ".border-item",
question: ".title.qa-title",
options: ".opts-list .opt-title-cnt",
type: ".question-box .tag",
workType: "ytccr",
pageType: "ytccr"
},
init: async () => {
await waitUntil(function() {
return $(".border-item").length !== 0;
});
},
answerHook: (item) => {
item.type = typeChange($(item.html).find(".qtype").text().trim());
let answer = $(item.html).find(".u-text-success,.u-text-danger").text().split(",")[0].trim();
answer = answer.match(/[A-Z]+$/)[0].trim();
item.answer = answer.split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
if (item.answer.length === 0) {
return item;
}
switch (item.type) {
case "3":
item.options = [];
item.answer = judgeAnswer(item.answer[0]);
}
return item;
}
}
];
const xueqi = [
{
type: "ask",
name: "学起考试",
tips: "学起仅支持选择判断,其他题型请反馈给作者",
match: () => location.host === "exam.chinaedu.net" && location.href.includes("oxer/page/ots/examIndex.html"),
question: {
html: ".queItemClass",
question: "dt > div.din:eq(1)",
options: "dd > div",
type: ".question-box .tag",
workType: "xueqi",
pageType: "xueqi"
},
init: async () => {
await waitUntil(function() {
return isExist(".queItemClass");
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().hasClass("cur");
},
questionHook: (item) => {
let type = $(item.html).parent().find("div .fb:eq(0)").text().split("、")[1];
if (type.includes("判断")) {
type = "判断题";
}
item.type = typeChange(type);
switch (item.type) {
case "3":
item.options = [];
item.$options = $(item.html).find("input");
break;
}
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "3":
let bold = item.answer;
item.ques.$options.each((index, element) => {
if (isTrue(bold) && isTrue(removeHtml1($(element).val()))) {
$(element).click();
}
if (isFalse(bold) && isFalse(removeHtml1($(element).val()))) {
$(element).click();
}
});
return false;
}
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "学期考试收录",
match: () => location.host === "exam.chinaedu.net" && location.href.includes("OTS-UniverDetail.html"),
question: {
html: ".dl_list",
question: "dt > div.fl:eq(1)",
options: "dd > var",
type: ".question-box .tag",
workType: "xueqi",
pageType: "xueqi"
},
init: async () => {
await waitUntil(function() {
return isExist(".dl_list");
});
},
answerHook: (item) => {
var _a, _b, _c, _d, _e;
const queid = $(item.html).attr("queid");
const data = item.html._ms_context_.el;
const ques = data.questions.find((i) => i.id === queid);
if (ques.questionTypeName.includes("判断")) {
ques.questionTypeName = "判断题";
}
item.type = typeChange(ques.questionTypeName);
item.question = removeHtml1(ques.stem);
console.log(ques);
item.options = ((_b = (_a = ques.answerArea) == null ? void 0 : _a.optionList) == null ? void 0 : _b.sort((a, b) => a.sequence - b.sequence).map((i) => removeHtml1(i.content))) || [];
let answer = ques.answer.ans || ((_c = ques.answer.ansL) == null ? void 0 : _c.join("")) || null;
if (!answer) {
const userAnswer = ((_e = (_d = ques.answerArea) == null ? void 0 : _d.optionList) == null ? void 0 : _e.filter((i) => i.isTrue).map((i) => removeHtml1(i.content))) || [];
if (ques.answerScore === 0) {
return;
}
item.answer = userAnswer;
} else {
item.answer = answer.split("").map((xx) => item.options[xx.charCodeAt(0) - 65]);
}
if (item.type === "3") {
item.options = [];
item.answer = judgeAnswer(answer);
}
return item;
}
}
];
const gkks = [
{
type: "hook",
name: "hook",
match: location.host === "gdrtvu.exam-cloud.cn",
main: (data) => {
unsafeWindow.mainClass = getUrl();
let observer = new MutationObserver(async (mutations) => {
if (unsafeWindow.mainClass !== getUrl()) {
unsafeWindow.mainClass = getUrl();
vuePageChange();
observer.disconnect();
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "答题",
tips: "公告",
match: () => location.host.includes("exam-cloud.cn") && location.href.includes("oe-web/online-exam/exam"),
question: {
html: ".question-container",
question: ".question-body:first",
options: ".option .question-options",
type: ".question-header .container",
workType: "guangkai",
pageType: "guangkai"
},
init: async () => {
await waitUntil(function() {
return isExist(".question-container");
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
let type = $(".list .current-question").parent().parent().find(".title").text();
console.log(type);
type = type.split("、")[1];
type = type.replace(/\(.*\)/, "").trim();
console.log(type);
item.type = typeChange(type);
item.type == "8" ? item.type = typeMatch(type) : item.type;
switch (item.type) {
case "3":
item.options = [];
break;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
$(".next .qm-primary-button").length && $(".next .qm-primary-button")[0].click();
}
}
];
const openha = [
{
type: "hook",
name: "hook",
match: location.host.includes("open.ha.cn"),
main: (data) => {
const getHash = () => {
return $(".stuHomeworkVersionId.active").attr("id");
};
_unsafeWindow.mainClass = getHash();
let observer = new MutationObserver(async (mutations) => {
log(getHash());
if (_unsafeWindow.mainClass !== getHash()) {
_unsafeWindow.mainClass = getHash();
vuePageChange();
observer.disconnect();
}
});
if ($(".homeworkBody").length >= 1) {
observer.observe($(".homeworkBody")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "云上河开答题",
tips: "云上河开仅支持选择题,其他题型请反馈给作者",
match: () => location.host.includes("open.ha.cn") && location.href.includes("/homework/showHomeworkByStatus") && location.href.includes("checked=false"),
question: {
html: ".layui-colla-content > .insert",
question: ".window-title",
options: ".option-title",
type: ".question-box .tag",
workType: "openha",
pageType: "openha"
},
init: async () => {
await waitUntil(function() {
return isExist(".layui-colla-content > .insert");
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
item.options = item.$options.map((index, element) => {
let xx = $(element).find(".numberCover").text().trim();
let xxtext = removeHtml1(item.$options.eq(index).html()).replace(xx, "").trim();
return xxtext;
}).get();
item.type = typeChange($(item.html).find(".questionDiv>.float-l:eq(1)").text().trim());
item.$options = $(item.html).find(".option-title .numberCover");
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "云上河开收录",
match: () => location.host.includes("open.ha.cn") && location.href.includes("/homework/showHomeworkByStatus") && location.href.includes("checked=true"),
question: {
html: ".layui-colla-content > .insert",
question: ".window-title",
options: ".option-title",
type: ".question-box .tag",
workType: "openha",
pageType: "openha"
},
init: async () => {
await waitUntil(function() {
return isExist(".layui-colla-content > .insert");
});
},
answerHook: (item) => {
let answer = [];
const isT = $(item.html).find(".option-title.error2").length == 0;
item.options = item.$options.map((index, element) => {
let xx = $(element).find(".numberCover").text().trim();
let xxtext = removeHtml1(item.$options.eq(index).html()).replace(xx, "").trim();
if ($(element).hasClass("answer-title")) {
answer.push(xxtext);
}
return xxtext;
}).get();
item.type = typeChange($(item.html).find(".questionDiv>.float-l:eq(1)").text().trim());
if (!isT) {
return;
}
item.answer = answer;
log(item, answer, $(item.html).find(".option-title.error2"));
return item;
}
}
];
const cloudwis = [
{
type: "hook",
name: "hook",
match: location.host === "lhycjy.cloudwis.tech" || location.host === "hnlg.crjxjy.net",
main: (data) => {
const getHash = () => {
log($(".item.changeless-box.active").attr("data-id"));
return $(".item.changeless-box.active").attr("data-id");
};
_unsafeWindow.mainClass = getHash();
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== getHash()) {
_unsafeWindow.mainClass = getHash();
if (_unsafeWindow.mainClass === "homework-detail-container") {
await waitUntil(function() {
return $(".el-loading-mask").length === 0;
});
}
vuePageChange();
observer.disconnect();
}
});
if ($(".exam-content").length >= 1) {
observer.observe($(".exam-content")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "河南继续教育答题",
tips: "该平台仅支持选择题,其他题型请反馈",
match: () => location.href.includes("uc/task/startTask"),
question: {
html: ".carousel-inner>.item.changeless-box.active",
question: ".exam-tg-txt__wrap.e-tg-box",
options: ".ic-options-list address",
type: ".question-box .tag",
workType: "cloudwis",
pageType: "cloudwis"
},
init: async () => {
await waitUntil(function() {
return isExist(".carousel-inner>.item.changeless-box");
});
if (!isExist("#finish")) {
return false;
}
},
next: () => {
$(".next-slide").click();
},
ischecked: (item) => {
return item.find(".checked").length > 0;
},
questionHook: (item) => {
item.type = typeChange($(item.html).attr("data-name"));
item.$options = $(item.html).find(".ic-options__wrap label");
item.question = item.question.replace(/^\(\d+\)/, "").trim();
item.question = item.question.replace(/\(\d+分\)$/, "").trim();
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
{
type: "ask",
name: "河南继续教育考试答题",
tips: "该平台仅支持选择题,其他题型请反馈",
match: () => location.href.includes("uc/exam/record/startExamination"),
question: {
html: ".trunk-box",
question: ".exam-tg-txt__wrap.e-tg-box",
options: ".ic-options-list address",
type: ".question-box .tag",
workType: "cloudwis",
pageType: "cloudwis"
},
init: async () => {
await waitUntil(function() {
return isExist(".trunk-box") && isExist(".ic-ac-checkbox-ol");
});
await waitUntil(function() {
window.scrollTo(0, document.body.scrollHeight);
return $(".ic-ac-checkbox-ol li").length == $(".trunk-box").length;
});
if (!isExist("#submit-btn")) {
return false;
}
},
next: () => {
$(".next-slide").click();
},
ischecked: (item) => {
return item.find(".checked").length > 0;
},
questionHook: (item) => {
const type = $(item.html).attr("data-type");
console.log(type);
switch (type) {
case "1":
item.type = "0";
break;
case "2":
item.type = "1";
break;
case "3":
item.type = "3";
item.options = [];
break;
}
item.question = item.question.replace(/^\d+、/, "").trim();
item.question = item.question.replace(/\(\d+分\)$/, "").trim();
item.question = item.question.replace(/\[\S+\]$/, "").trim();
item.$options = $(item.html).find(".ic-options__wrap label");
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "河南继续教育收录",
match: () => location.host === "lhycjy.cloudwis.tech" && location.href.includes("uc/task/startTask"),
question: {
html: ".carousel-inner>.item.changeless-box",
question: ".exam-tg-txt__wrap.e-tg-box",
options: ".ic-options-list address",
type: ".question-box .tag",
workType: "cloudwis",
pageType: "cloudwis"
},
init: async () => {
await waitUntil(function() {
return isExist(".carousel-inner>.item.changeless-box") && isExist(".slide-tihao");
});
await waitUntil(function() {
log($(".slide-tihao").length, $(".carousel-inner>.item.changeless-box").length, $(".slide-tihao").eq(-1));
$(".slide-tihao").eq(-1)[0].click();
return $(".slide-tihao").length == $(".carousel-inner>.item.changeless-box").length;
});
if (isExist("#finish")) {
return false;
}
},
next: () => {
},
answerHook: (item) => {
const answer = $(item.html).find(".analysis-box .fs20.c-primary.vam").text().trim().split("");
item.type = typeChange($(item.html).attr("data-name"));
item.answer = answer.map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
item.question = item.question.replace(/^\(\d+\)/, "").trim();
item.question = item.question.replace(/\(\d+分\)$/, "").trim();
return item;
}
},
{
type: "save",
name: "河南继续教育考试收录",
match: () => location.href.includes("uc/exam/record/startExamination"),
question: {
html: ".trunk-box.answer-question",
question: ".exam-tg-txt__wrap.e-tg-box",
options: ".ic-options-list address",
type: ".question-box .tag",
workType: "cloudwis",
pageType: "cloudwis"
},
init: async () => {
await waitUntil(function() {
return isExist(".trunk-box") && isExist(".ic-ac-correct");
});
await waitUntil(function() {
window.scrollTo(0, document.body.scrollHeight);
return $(".ic-ac-correct,.ic-ac-error").length == $(".trunk-box").length;
});
if (isExist("#submit-btn")) {
return false;
}
},
next: () => {
$(".next-slide").click();
},
answerHook: (item) => {
const type = $(item.html).attr("data-type");
console.log(type);
const answer = $(item.html).find(".ic-options__wrap label").filter((i, e) => {
return $(e).find(".checked").length > 0;
}).map((i, e) => {
return removeHtml1($(e).html());
}).get();
item.answer = answer.map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
item.question = item.question.replace(/^\d+、/, "").trim();
item.question = item.question.replace(/\(\d+分\)$/, "").trim();
item.question = item.question.replace(/\[\S+\]$/, "").trim();
switch (type) {
case "1":
item.type = "0";
break;
case "2":
item.type = "1";
break;
case "3":
item.type = "3";
item.options = [];
item.answer = judgeAnswer(item.answer[0]);
break;
}
return item;
}
}
];
const sclecb = [
{
type: "hook",
name: "hook",
match: location.host.includes("sclecb.cn"),
main: (data) => {
const getHash = () => {
return getUrl();
};
_unsafeWindow.mainClass = getHash();
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== getHash()) {
_unsafeWindow.mainClass = getHash();
vuePageChange();
observer.disconnect();
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "四川开放大学答题",
tips: "仅支持选择判断,其他题型请反馈给作者",
match: () => location.host === "study.sclecb.cn" && /testpaper\/[0-9]+\/show/i.test(location.href),
question: {
html: ".testpaper-question.js-testpaper-question",
question: ".testpaper-question-stem",
options: ".testpaper-question-choices li",
type: ".question-box .tag",
workType: "sclecb",
pageType: "sclecb"
},
init: async () => {
await waitUntil(function() {
return isExist(".testpaper-question.js-testpaper-question");
});
},
next: () => {
},
ischecked: (item) => {
return item.hasClass("checked");
},
questionHook: (item) => {
item.options = removeStartChar(item.options);
item.$options = $(item.html).find(".testpaper-question-choice-inputs > label > input");
item.type = typeChange($(item.html).parent().parent().find(".panel-heading>strong").text().trim());
log(item.type);
switch (item.type) {
case "0":
break;
case "1":
break;
case "3":
item.$options = $(item.html).find(".radio-inline");
break;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
// 正则student/course/study/40282a837db9566a01802bfc2d8e6cd1/test/redo
{
type: "ask",
name: "四川开放大学答题旧",
tips: "仅支持选择判断,其他题型请反馈给作者",
match: () => location.host.includes("sclecb.cn") && /student\/course\/study\/[0-9a-zA-Z]+\/test\/redo/i.test(location.href),
question: {
html: ".questiono-item",
question: ".clearfix.questiono-header h6",
options: ".common_test_option .processing_img",
type: ".question-box .tag",
workType: "sclecb",
pageType: "sclecb"
},
init: async () => {
await waitUntil(function() {
return isExist(".questiono-item");
});
},
next: () => {
},
ischecked: (item) => {
return item.hasClass("checked");
},
questionHook: (item) => {
const type = $(item.html).parent().parent().find("div:eq(0)").text().trim();
switch (true) {
case type.includes("单选题"):
item.type = "0";
break;
case type.includes("多选题"):
item.type = "1";
break;
case type.includes("判断题"):
item.type = "3";
item.options = [];
item.$options = $(item.html).find(".common_test_option > label");
break;
default:
return;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "四川开放大学收录",
match: () => location.host === "study.sclecb.cn" && (/task\/[0-9]+\/activity_show/i.test(location.href) || /result\/[0-9]+\/show/i.test(location.href)),
question: {
html: ".testpaper-question.js-testpaper-question",
question: ".testpaper-question-stem",
options: ".testpaper-question-choices li",
type: ".question-box .tag",
workType: "sclecb",
pageType: "sclecb"
},
init: async () => {
await waitUntil(function() {
return isExist(".testpaper-question.js-testpaper-question");
});
},
answerHook: (item, index) => {
let answer = [];
item.options = item.$options.map((i, e) => {
const $e = $(e).clone();
const xx = removeHtml($e.find(".testpaper-question-choice-index").remove().end().html());
if ($(e).hasClass("testpaper-question-choice-right")) {
answer.push(xx);
}
return xx;
}).get();
item.answer = answer;
item.type = typeChange($(".js-panel-card>span").eq(index).prevAll("p").first().text().trim());
const isT = $(".js-panel-card>span").eq(index).hasClass("bg-success");
switch (item.type) {
case "0":
break;
case "1":
break;
case "3":
let ans = "";
ans = $(item.html).find(".testpaper-question-result").text().replace("你的答案是", "").trim();
item.answer = judgeAnswer(ans);
break;
}
if (!isT && item.answer.length > 0 && item.type == "3") {
item.answer = item.answer[0] == "正确" ? ["错误"] : item.answer[0] == "错误" ? ["正确"] : [];
} else if (!isT) {
return;
}
return item;
}
}
];
const chutou = [
{
type: "hook",
name: "hook",
match: location.host.includes("superchutou.com"),
main: (data) => {
const getHash = () => {
return getUrl();
};
_unsafeWindow.mainClass = getHash();
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== getHash()) {
_unsafeWindow.mainClass = getHash();
vuePageChange();
observer.disconnect();
}
});
if ($("#root").length >= 1) {
observer.observe($("#root")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "出头系统答题",
tips: "本考试仅适配选择题,其他题型请反馈给作者",
match: () => location.host.includes("superchutou.com") && location.href.includes("onlineclass/exam/"),
question: {
html: "[class^='single_excer_item']",
question: "[class^='title_content'] > [class^='title_content_text']:eq(1)",
options: "[class^='options_content'] label",
type: ".question-box .tag",
workType: "chutou",
pageType: "chutou"
},
init: async () => {
await waitUntil(function() {
return isExist("[class^='single_excer_item']");
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
let type = $(item.html).find("[class^='title_content'] > span:eq(1)").text();
type = type.replace(/【|】/g, "").trim();
item.type = typeChange(type);
item.options = removeStartChar(item.options);
switch (item.type) {
case "3":
item.options = [];
break;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
}
];
const ls365 = [
{
type: "ask",
name: "良师在线答题",
tips: "该平台仅适配选择题,其他题型请反馈给作者",
match: () => location.host.includes("ls365.net") && (location.href.includes("student/examing.aspx") || location.href.includes("Student/myhomework.aspx")),
question: {
html: ".exam_question",
question: ".exam_question_title",
options: ".question_select .select_detail",
type: ".exam_question_title strong",
workType: "ls365",
pageType: "ls365"
},
init: async () => {
await waitUntil(function() {
return isExist(".exam_question");
});
},
next: () => {
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
let ques = $(item.html).find(".exam_question_title").clone();
ques.find(".question_number").remove();
ques.find("strong").remove();
ques.find(".exam_feed_back").remove();
item.question = removeHtml1(ques.html());
let type = $(item.html).find(".exam_question_title strong").text();
type = type.replace(/\[|\]/g, "").trim();
item.type = typeChange(type);
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "良师在线考试收录",
match: () => location.host.includes("ls365.net") && location.href.includes("User/Student/ViewPaper.aspx"),
question: {
html: "[name^='anchor_']",
question: ".title-img-ctr",
options: ".pold .phtml",
type: ".QuestionsType",
workType: "ls365",
pageType: "ls365"
},
init: async () => {
await waitUntil(function() {
return isExist("[name^='anchor_']");
});
},
answerHook: (item) => {
let type = $(item.html).find(".QuestionsType").text();
type = type.replace(/\[|\]/g, "").trim();
item.type = typeChange(type);
let answer = $(item.html).find(".my-work-answer>p").filter((index, element) => {
return element.innerText.includes("参考答案");
}).map((index, element) => {
return $(element).find(".two").text();
}).get();
if (answer.length === 0) {
return;
}
item.answer = answer[0].split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
return item;
}
},
{
type: "save",
name: "良师在线作业收录",
match: () => location.host.includes("ls365.net") && location.href.includes("Student/myhomework_after.aspx"),
question: {
html: "[name^='anchor_']",
question: ".my-work-nav>.col-md-10",
options: ".pold .phtml",
type: ".QuestionsType",
workType: "ls365",
pageType: "ls365"
},
init: async () => {
await waitUntil(function() {
return isExist("[name^='anchor_']");
});
},
answerHook: (item) => {
let type = $(item.html).find(".my-work-nav>div:eq(0)>span:eq(0)").text();
type = type.replace(/\[|\]/g, "").trim();
item.type = typeChange(type);
let answer = $(item.html).find(".my-work-answer>p").filter((index, element) => {
return element.innerText.includes("参考答案");
}).map((index, element) => {
return $(element).find(".two").text();
}).get();
if (answer.length === 0) {
return;
}
item.answer = answer[0].split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
return item;
}
}
];
const jijiaox = [
{
type: "hook",
name: "hook",
match: location.host.includes("jijiaox.com"),
main: (data) => {
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.path;
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== $("#app")[0].__vue__.$route.path) {
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.path;
vuePageChange();
observer.disconnect();
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "继教云考试答题",
tips: "仅支持选择、判断、简答题,其他题型请反馈给作者",
match: () => location.host.includes("jijiaox.com") && (location.href.includes("/mg/studentindexexam/") || !location.href.includes("examrec")),
question: {
html: ".question>div",
question: ".topic-title",
options: ".ml_2 label",
type: ".question-box .tag",
workType: "jijiaox",
pageType: "jijiaox"
},
init: async () => {
await waitUntil(function() {
return isExist(".question>div");
});
},
next: () => {
},
ischecked: (item) => {
return item.hasClass("is-checked");
},
questionHook: (item, index) => {
const ques = $(".page")[0].__vue__.$data.testInfo.studentPraxisList[index];
item.options = ques.options ? ques.options : [];
if (typeof item.options === "string") {
item.options = [];
}
item.question = removeHtml1(ques.title);
switch (ques.type) {
case "single":
item.type = "0";
break;
case "muti":
item.type = "1";
break;
case "charge":
item.type = "3";
break;
case "text":
item.type = "4";
break;
default:
console.log(ques.type, "未知类型");
}
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "4":
$(item.html).find(".editor")[0].__vue__.editor.txt.html(item.answer[0]);
return false;
}
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "继教云考试收录",
match: () => location.host.includes("jijiaox.com") && location.href.includes("/mg/studentindexexam/examrec/"),
question: {
html: ".question>div",
question: ".topic-title",
options: ".el-radio-group label .label,.el-checkbox-group label .label",
type: ".question-box .tag",
workType: "jijiaox",
pageType: "jijiaox"
},
init: async () => {
await waitUntil(function() {
return isExist(".question>div");
});
},
answerHook: (item, index) => {
const ques = $(".page")[0].__vue__.$data.testInfo.studentPraxisList[index];
const answer = ques.answer;
item.options = ques.options ? ques.options : [];
if (typeof item.options === "string") {
item.options = [];
}
item.question = removeHtml1(ques.title);
switch (ques.type) {
case "single":
item.type = "0";
break;
case "muti":
item.type = "1";
break;
case "charge":
item.type = "3";
item.answer = answer == "1" ? ["正确"] : answer == "-1" ? ["错误"] : [];
break;
case "text":
item.type = "4";
item.answer = [removeHtml1(answer)];
break;
default:
console.log(ques.type, "未知类型");
}
switch (item.type) {
case "0":
case "1":
console.log("________", answer);
if (typeof answer === "string") {
item.answer = answer.split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
} else {
item.answer = answer.map((xx) => {
console.log(xx);
return item.options[xx.charCodeAt(0) - 65];
});
}
break;
}
console.log(item);
return item;
}
}
];
const wencai = [
{
type: "hook",
name: "hook",
match: location.host.includes("wencaischool.net"),
main: (data) => {
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.path;
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== $("#app")[0].__vue__.$route.path) {
_unsafeWindow.mainClass = $("#app")[0].__vue__.$route.path;
vuePageChange();
observer.disconnect();
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
const style = document.createElement("style");
style.type = "text/css";
style.innerHTML = `* {
font-size: 13px !important;
}`;
document.head.appendChild(style);
}
},
{
type: "save",
name: "柠檬文才学堂考试收录",
match: () => location.host.includes("wencaischool.net") && location.href.includes("/separation/exam/index.html"),
question: {
html: ".tmList",
question: ".tmTitleTxt",
options: ".perRad .opCont",
type: ".question-box .tag",
workType: "wencai",
pageType: "wencai"
},
init: async () => {
await waitUntil(function() {
return isExist(".tmList") && $("#onlineExamArea")[0].__vue__._data.itemsList.length > 0;
});
},
answerHook: (item, index) => {
const ques = $("#onlineExamArea")[0].__vue__._data.itemsList[index];
item.question = removeHtml1(ques.itemName);
item.options = ques.optionNodes.map((item2) => removeHtml1(item2.optionContent));
const typeMap2 = {
"1": "填空题",
"2": "简答题",
"3": "单选题",
"4": "多选题",
"5": "阅读理解",
"12": "完形填空"
};
item.type = typeChange(typeMap2[ques.itemType]);
let answer = ques.itemAnswer[0].optionContent;
switch (item.type) {
case "0":
case "1":
item.answer = answer.split("").map((xx) => {
return item.options[xx.charCodeAt(0) - 65];
});
break;
case "4":
item.answer = removeHtml1(answer);
break;
case "2":
item.answer = ques.itemAnswer.map((item2) => removeHtml1(item2.optionContent));
break;
}
return item;
}
},
{
type: "ask",
name: "柠檬文才学堂考试答题",
tips: "此平台答题间隔尽量3s左右,否则可能选不上答案,不支持的题型请联系作者适配",
match: () => location.host.includes("wencaischool.net") && location.href.includes("/separation/exam/index.html"),
question: {
html: ".tmList",
question: ".tmTitleTxt",
options: ".perRad .opCont",
type: ".question-box .tag",
workType: "wencai",
pageType: "wencai"
},
init: async () => {
await waitUntil(function() {
return isExist(".tmList") && $("#onlineExamArea")[0].__vue__._data.itemsList.length > 0;
});
},
next: () => {
},
ischecked: (item) => {
return item[0].checked;
},
questionHook: (item) => {
const typeMap2 = {
"1": "填空题",
"2": "简答题",
"3": "单选题",
"4": "多选题",
"5": "阅读理解",
"12": "完形填空"
};
let type = $(item.html).find(".tmc.tm").attr("ttype");
item.type = typeChange(typeMap2[type]);
item.$options = $(item.html).find(".perRad input");
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "4":
const textarea = $(item.html).find("textarea");
textarea.focus();
document.execCommand("selectAll");
document.execCommand("insertText", false, item.answer[0]);
return false;
case "2":
$(item.html).find(".ansbox.inputAnswer input").each(async (index, ele) => {
ele.focus();
document.execCommand("selectAll");
let answer = item.answer[index];
document.execCommand("insertText", false, answer);
await sleep(1e3);
});
break;
}
return true;
},
finish: (item) => {
}
}
];
const yxlearning = [
{
type: "hook",
name: "hook",
match: location.host === "www.xxxx.com",
main: (data) => {
const getHash = () => {
return $(".el-main > div:eq(0)").attr("class");
};
_unsafeWindow.mainClass = getHash();
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== getHash()) {
_unsafeWindow.mainClass = getHash();
if (_unsafeWindow.mainClass === "homework-detail-container") {
await waitUntil(function() {
return $(".el-loading-mask").length === 0;
});
}
vuePageChange();
observer.disconnect();
}
for (let mutation of mutations) {
if (mutation.type === "attributes" && mutation.attributeName === "class") {
if (mutation.target.textContent && (mutation.target.textContent.includes("下一题") || mutation.target.textContent.includes("上一题"))) {
observer.disconnect();
vuePageChange();
}
}
}
});
if ($("#app").length >= 1) {
observer.observe($("#app")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "save",
name: "收录",
match: () => location.host.includes("yxlearning.com") && location.href.includes("exam/start?myExamRecordId"),
question: {
html: ".subject>.mb20.sub",
question: ".ls1.lh30.text-f666",
options: "ul.options>li.cursor-p",
type: ".question-box .tag",
workType: "yxlearning",
pageType: "yxlearning"
},
init: async () => {
await waitUntil(function() {
return isExist(".mb20.sub");
});
if (!_unsafeWindow.yxques) {
return false;
}
},
answerHook: (item, index) => {
const ques = [];
_unsafeWindow.yxques.questionStemRPS.forEach((val, index2) => {
val.listPaperQuestionRP.forEach((val1, index1) => {
ques.push(val1);
});
});
const ques1 = ques[index];
item.question = titleClean(removeHtml1(ques1.questionName));
const type = ques1.type;
const answer = [];
item.options = removeStartChar(ques1.paperOptionRPS.map((val) => {
return removeHtml1(val.context);
}));
ques1.paperOptionRPS.forEach((val, inx) => {
if (val.standardAnswer == 1) {
answer.push(item.options[inx]);
}
});
item.answer = answer;
switch (type) {
case 1:
item.type = "3";
item.options = [];
item.answer = judgeAnswer(item.answer[0]);
break;
case 2:
item.type = "0";
break;
case 3:
item.type = "1";
break;
}
return item;
}
},
{
type: "ask",
name: "日照专业技术人员答题",
tips: "本平台仅支持选择判断,其他题型请反馈",
match: () => location.host.includes("yxlearning.com") && location.href.includes("exam/start?myExamRecordId"),
question: {
html: ".mb20.sub",
question: ".ls1.lh30.text-f666",
options: ".cursor-p",
type: ".question-box .tag",
workType: "yxlearning",
pageType: "yxlearning"
},
init: async () => {
await waitUntil(function() {
return isExist(".mb20.sub");
});
},
next: () => {
},
ischecked: (item) => {
return item.hasClass("active");
},
questionHook: (item) => {
item.options = removeStartChar($(item.html).find("ul>li").map((index, val) => {
return removeHtml1($(val).html());
}).get());
item.$options = $(item.html).find("ul>li");
item.type = typeChange($(item.html).parent().prevAll(".title").first().find("[du-html='questionStemName']").text().trim());
switch (item.type) {
case "3":
item.options = [];
item.$options = $(item.html).find("ul>li");
break;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
}
];
const cjnep = [
{
type: "ask",
name: "麦能网答题",
tips: "该平台仅兼容选择判断,其他题型可能存在bug,请自行检查",
match: () => location.href.includes("lms/web/onlineexam/exambegin"),
question: {
html: ".ptypediv>.sdiv",
question: ".namediv",
options: ".itemdiv > .optiondiv",
type: ".question-box .tag",
workType: "cjnep",
pageType: "cjnep"
},
init: async () => {
await waitUntil(function() {
return isExist(".sdiv");
});
},
next: () => {
$('.btndiv > span:contains("下一题")').click();
},
toquestion: (index) => {
log($(`.controldiv > a:eq(${index})`), "warn");
$(`.controldiv > a:eq(61)`).click();
$(`.controldiv > a:eq(${index})`)[0].click();
},
ischecked: (item) => {
return item.parent().parent().hasClass("is-checked");
},
questionHook: (item) => {
item.question = item.question.replace(/^第\d+\s题[::]?/, "").trim();
item.options = removeStartChar(item.options);
let type = $(item.html).parent().find(".pnamediv").text();
item.type = typeMatch(type);
item.$options = $(item.html).find(".ansdiv input");
switch (item.type) {
case "3":
item.options = [];
break;
}
return item;
},
setAnswer: (item) => {
switch (item.type) {
case "3":
let bold = item.answer;
$(item.html).find(".ansdiv input").each((index, element) => {
if (isTrue(bold) && $(element).val() == "1") {
$(element).click();
}
if (isFalse(bold) && $(element).val() == "0") {
$(element).click();
}
});
return false;
case "2":
case "4":
$(item.html).find(".ansdiv textarea").val(item.answer.join(";"));
$(item.html).find(".ansdiv textarea").trigger("input");
$(item.html).find(".ansdiv textarea").trigger("keydown");
return false;
}
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "麦能网答题收录",
match: () => location.href.includes("lms/web/exam/examshow"),
question: {
html: ".ptypediv>.sdiv",
question: ".namediv",
options: ".itemdiv > .optiondiv",
type: ".question-box .tag",
workType: "cjnep",
pageType: "cjnep"
},
init: async () => {
await waitUntil(function() {
return isExist(".sdiv");
});
},
answerHook: (item) => {
item.question = item.question.replace(/^第\d+\s题[::]?/, "").trim();
item.options = removeStartChar(item.options);
let correctAnswer = $(item.html).find(".ansdiv input[name^='aquestion']:checked").closest(".item-span").text();
correctAnswer = correctAnswer.replace(/\s|\./g, "").trim();
item.answer = correctAnswer.split("").map((v) => {
return item.options[v.charCodeAt() - 65];
});
let type = $(item.html).parent().find(".pnamediv").text();
item.type = typeMatch(type);
let answerText = "";
try {
answerText = $(item.html).find(".ansdiv").contents().filter(function() {
return this.nodeType === 3 && this.nodeValue.trim().startsWith("答案:");
}).get(0).nodeValue.trim().substring(3).trim();
answerText = removeHtml1(answerText);
} catch (e) {
}
switch (item.type) {
case "2":
item.answer = answerText.split(";");
break;
case "3":
answerText = $($(item.html).find(".ansdiv").html().split("正确答案:")[1]).find("input[name^='aquestion']:checked").closest("span").text();
item.answer = judgeAnswer(answerText);
break;
case "4":
if (answerText.length > 0) {
item.answer = [answerText];
}
item.options = [];
break;
}
return item;
}
}
];
const huayi = [
{
type: "hook",
name: "hook",
match: location.host.includes("91huayi.com"),
main: (data) => {
const getHash = () => {
return $(".dd_01").attr("questionid");
};
_unsafeWindow.mainClass = getHash();
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== getHash()) {
_unsafeWindow.mainClass = getHash();
if (_unsafeWindow.mainClass === "homework-detail-container") {
await waitUntil(function() {
return $(".el-loading-mask").length === 0;
});
}
vuePageChange();
observer.disconnect();
}
});
if ($(".box").length >= 1) {
observer.observe($(".box")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "华医网答题",
tips: "目前仅支持选项题,其他题型请反馈给作者",
match: () => location.host.includes("91huayi.com") && location.href.includes("/ExamInterface/ComputerExamIndex"),
question: {
html: "#exampage",
question: ".dd_01",
options: ".dd_02",
type: ".big_type",
workType: "huayi",
pageType: "huayi"
},
init: async () => {
},
next: () => {
var _a;
(_a = $("#btnNext")) == null ? void 0 : _a.click();
},
ischecked: (item) => {
return item.prop("checked");
},
questionHook: (item) => {
const question = $(item.html).find(".dd_01").clone();
question.find(".dd_01_red").remove();
item.question = removeHtml1(question.html());
item.options = removeStartChar(item.options);
item.type = typeMatch($(item.html).find(".big_type").text());
item.$options = $(item.html).find("dd.q-content input");
return item;
},
setAnswer: (item) => {
console.log(item);
switch (item.type) {
case "0":
case "1":
item.ques.$options.each((i, ele) => {
if (item.answer.includes(i)) {
if (item.rule.ischecked && item.rule.ischecked($(ele))) {
return;
}
ele.click();
} else if (item.rule.ischecked && item.rule.ischecked($(ele))) {
ele.click();
}
});
return false;
}
return true;
},
finish: (item) => {
}
}
];
const ynou = [
{
type: "ask",
name: "云南开放大学答题",
tips: "云开仅支持选择判断题,其他题型请反馈给作者",
match: () => location.href.includes("hw/student/studentStartHomework.action") && location.host.includes("teach.ynou.edu.cn"),
question: {
html: ".e_juan02biaoti",
question: ".qcontent > p:first",
options: ".signDefault>.label",
type: ".question-box .tag",
workType: "ynou",
pageType: "ynou"
},
init: async () => {
await waitUntil(function() {
return $(".e_juan02biaoti").length !== 0;
});
$("body").css("text-align", "left");
},
next: () => {
},
ischecked: (item) => {
log(item.find("input").is(":checked"));
return item.find("input").is(":checked");
},
questionHook: (item) => {
item.options = [];
const dv = $(item.html).find(".e_juan02daan").clone();
dv.find(".clear").nextAll().remove();
const text = removeHtml1(dv.html());
const question = text.split(/[A][、\..]/)[0].trim();
if (question !== null) {
item.question = question;
}
item.question = question;
item.question = question;
const options = text.match(/(?:[A-G](?:[、.]|\s)?\s?.*?)(?=\s*[A-G](?:[、.]|\s)?|\s*$)/gs);
if (options !== null) {
const options1 = removeOptionsStartChar(options.map((option) => option.trim()));
if (options1 !== false) {
item.options = options1;
}
}
const temp = $(item.html).find(".signDefault").attr("answer_control");
if (temp === "radio" && item.options.length > 1) {
item.type = "0";
}
if (temp === "checkbox" && item.options.length > 1) {
item.type = "1";
}
if (temp === "radio" && item.options.length === 0) {
item.type = "3";
}
return item;
},
setAnswer: (item) => {
console.log(item);
switch (item.type) {
case "3":
let bold = item.answer;
item.ques.$options.each((index, element) => {
if (isTrue(bold) && isTrue(removeHtml1($(element).html()))) {
$(element).click();
}
if (isFalse(bold) && isFalse(removeHtml1($(element).html()))) {
$(element).click();
}
});
return false;
default:
return true;
}
},
finish: (item) => {
}
},
{
type: "save",
name: "收录",
match: () => location.href.includes("/hw/student/studentViewHomework.action") && location.host.includes("teach.ynou.edu.cn"),
question: {
html: ".e_juan02biaoti",
question: ".qcontent > p:first",
options: ".signDefault>.label",
type: ".question-box .tag",
workType: "ynou",
pageType: "ynou"
},
init: async () => {
await waitUntil(function() {
return $(".e_juan02biaoti").length !== 0;
});
$("body").css("text-align", "left");
},
answerHook: (item) => {
item.options = [];
const dv = $(item.html).find(".e_juan02daan").clone();
dv.find(".clear").nextAll().remove();
const text = removeHtml1(dv.html());
const question = text.split(/[A][、\..]/)[0].trim();
if (question === null) {
return null;
}
item.question = question;
const options = text.match(/(?:[A-G](?:[、.]|\s)?\s?.*?)(?=\s*[A-G](?:[、.]|\s)?|\s*$)/gs);
if (options !== null) {
const options1 = removeOptionsStartChar(options.map((option) => option.trim()));
if (options1 == false) {
return null;
}
item.options = options1;
}
const temp = $(item.html).find(".signDefault").attr("answer_control");
if (temp === "radio" && item.options.length > 1) {
item.type = "0";
}
if (temp === "checkbox" && item.options.length > 1) {
item.type = "1";
}
if (temp === "radio" && item.options.length === 0) {
item.type = "3";
}
const answer = $(item.html).find(".right_answer>font").text();
switch (item.type) {
case "0":
case "1":
item.answer = answer.split("").map((char) => item.options[char.charCodeAt(0) - 65]);
break;
case "3":
item.answer = isTrue(answer) ? "正确" : isFalse(answer) ? "错误" : "";
break;
}
return item;
}
}
];
const a21tb = [
{
type: "hook",
name: "hook",
match: location.host.includes("21tb.com"),
main: (data) => {
const getHash = () => {
return $("#examIngEmsRightPanel").attr("class");
};
_unsafeWindow.mainClass = getHash();
let observer = new MutationObserver(async (mutations) => {
if (_unsafeWindow.mainClass !== getHash()) {
_unsafeWindow.mainClass = getHash();
vuePageChange();
observer.disconnect();
}
});
if ($("#examIngEmsRightPanel").length >= 1) {
observer.observe($("#examIngEmsRightPanel")[0], {
subtree: true,
attributes: true,
childList: true
});
}
}
},
{
type: "ask",
name: "21tb答题",
tips: "21tb平台答题,目前仅支持选择、判断题",
match: () => location.host.includes("21tb.com") && location.href.includes("exercise/newExercise.fullExerciseTemp.do"),
question: {
html: ".paper-content > .question-panel-middle",
question: ".question-stem>.name",
options: "ul.question-options>li>label",
type: ".question-box .tag",
workType: "21tb",
pageType: "21tb"
},
init: async () => {
if ($(".view-paper-content").length > 0) {
return false;
}
},
next: () => {
},
ischecked: (item) => {
return item.parent().find("input").prop("checked");
},
questionHook: (item) => {
item.question = titleClean(item.question);
item.question = item.question.replace(/\(\d+分\)$/, "").trim();
item.options = item.options.map((option) => {
return option.replace(/^[A-Z]\s*\.\s*/, "");
});
item.options = removeStartChar(item.options);
const itemClass = $(item.html).attr("class");
console.log(itemClass);
switch (true) {
case itemClass.includes("SINGLE"):
item.type = "0";
break;
case itemClass.includes("MULTIPLE"):
item.type = "1";
break;
case itemClass.includes("JUDGMENT"):
item.type = "3";
item.options = [];
break;
}
return item;
},
setAnswer: (item) => {
return true;
},
finish: (item) => {
}
},
{
type: "save",
name: "21tb收录",
match: () => location.host.includes("21tb.com") && location.href.includes("exercise/newExercise.fullExerciseTemp.do"),
question: {
html: "form > .question-panel-middle",
question: ".question-stem>.name",
options: "ul.question-options>li>label",
type: ".question-box .tag",
workType: "21tb",
pageType: "21tb"
},
init: async () => {
console.log($(".view-paper-content").length);
if ($(".view-paper-content").length == 0) {
return false;
}
},
answerHook: (item) => {
item.question = titleClean(item.question);
item.question = item.question.replace(/\(\d+分\)$/, "").trim();
item.options = item.options.map((option) => {
return option.replace(/^[A-Z]\s*\.\s*/, "");
});
item.options = removeStartChar(item.options);
const itemClass = $(item.html).attr("questtype");
const answer = $(item.html).find(".true-answer").text().split(":")[1].trim();
switch (true) {
case itemClass.includes("SINGLE"):
item.type = "0";
item.answer = answer.split(", ").map((i) => {
return item.options[i.charCodeAt(0) - 65];
});
break;
case itemClass.includes("MULTIPLE"):
item.type = "1";
item.answer = answer.split(", ").map((i) => {
return item.options[i.charCodeAt(0) - 65];
});
break;
case itemClass.includes("JUDGMENT"):
item.type = "3";
item.options = [];
item.answer = judgeAnswer(answer);
break;
}
console.log(item);
return item;
}
}
];
const _ruleList = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
__proto__: null,
a21tb,
ahjxjy,
chaoxing,
chatglm,
chengjiaoyun,
chutou,
cjedu,
cjnep,
cloudwis,
cnzx,
gkks,
guokai,
huayi,
jijiaox,
jsou,
ls365,
openha,
qingshu,
sclecb,
uooc,
wencai,
xinwei,
xueqi,
ykt,
ynou,
ytccr,
yunmuxueyuan,
yxlearning,
zhihuishu,
zhijiaoyun
}, Symbol.toStringTag, { value: "Module" }));
const rule = [];
for (const key2 in _ruleList) {
rule.push(..._ruleList[key2]);
}
const parseRuleHook = (rule2) => {
rule2.filter((item) => item.match && item.hook).forEach((item) => {
item.hook();
});
};
const parseRuleNoExec = (rule2) => {
return rule2.some((item) => {
if (typeof item.match === "function") {
return item.match();
}
return item.match;
});
};
const parseRule = async (rule2) => {
await waitUntil(() => _unsafeWindow[key] !== void 0);
const matchedRule = rule2.filter((item) => {
if (typeof item.match === "function") {
return item.match();
}
return item.match;
});
const data = wapp();
if (!matchedRule.length) {
data.app.app.alert = "当前没有任务";
console.log("没有匹配到规则", "error");
return;
}
for (const item of matchedRule) {
console.log(`匹配到规则:${item.name}`, "success");
if (item.init) {
let init = await item.init();
if (typeof init == "boolean" && init === false) {
continue;
}
}
data.app.alert = `当前任务:${item.name}`;
if (item.type === "hook")
item.main(data);
if (item.type === "ask")
askParser(item, data);
if (item.type === "save")
saveParser(item, data);
}
};
const saveParser = (rule2, data) => {
const app = data.app;
const ask = data.ask;
ask.rule = rule2;
rule2.tips && (ask.tips = rule2.tips);
const quesList = questionSaveParser(rule2.question, rule2.answerHook || null).filter((item) => {
if (item == null || item.answer.length === 0 || item.answer === "" || item.type == "8") {
return false;
}
return true;
});
ask.saveQuestionData = quesList;
quesList.forEach((item) => {
if (item.answer.length !== 0) {
Answer.cacheAnswer(item);
}
});
const postData = {
"questionList": quesList,
"pageType": rule2.question.pageType
};
app.setPage("question");
quesList.length && Answer.syncQuestionList(postData);
app.app.alert = `题库收录完成,共缓存${quesList.length}道题目`;
msg(`题库收录完成,共缓存${quesList.length}道题目`, "success");
rule2.next && rule2.next();
};
const askParser = (rule2, data) => {
const app = data.app;
const ask = data.ask;
ask.rule = rule2;
rule2.tips && (ask.tips = rule2.tips);
app.app.showFloat = !app.app.hideFloat;
app.setPage("ask");
ask.clearQuestion();
const quesList = questionParser(rule2.question, rule2.questionHook || null);
quesList.forEach((item) => {
ask.addQuestion(item);
});
ask.autoAnswer && ask.toggleStart();
};
const questionSaveParser = (item, hook) => {
if (typeof item.html === "function") {
item.html = item.html();
}
const quesLIst = $(item.html).map((index, element) => {
const questionText = removeHtml1($(element).find(item.question).html());
const options = $(element).find(item.options).map((index2, element2) => {
return removeHtml1($(element2).html());
}).get();
const questionTypeId = $(element).find(item.type).val();
const html = $(element)[0];
let questionData = {
question: titleClean(questionText ?? ""),
options,
$options: $(element).find(item.options),
$answer: $(element).find(item.answer),
answer: [],
type: questionTypeId,
html
};
try {
hook && (questionData = hook(questionData, index));
} catch (e) {
console.log("收录hook报错", e);
}
if (questionData == void 0 || questionData == null) {
return null;
}
return {
question: questionData.question,
options: questionData.options,
answer: questionData.answer,
type: questionData.type
};
});
return quesLIst.get();
};
const questionParser = (item, hook) => {
if (typeof item.html === "function") {
item.html = item.html();
}
const quesLIst = $(item.html).map((index, element) => {
const questionText = removeHtml1($(element).find(item.question).html());
const options = $(element).find(item.options).map((index2, element2) => {
return removeHtml1($(element2).html());
}).get();
const questionTypeId = $(element).find(item.type).val();
const workType = item.workType;
const html = $(element)[0];
let questionData = {
question: titleClean(questionText ?? ""),
options,
$options: $(element).find(item.options),
type: questionTypeId,
html,
workType,
pageType: item.pageType
};
hook && (questionData = hook(questionData, index));
return questionData;
});
return quesLIst.get();
};
const defaultSetAnswer = async (type, answer, ques, rule2) => {
var _a;
switch (type) {
case "xx":
for (let i = 0; i < ques.$options.length; i++) {
if (answer.includes(i)) {
if (rule2.ischecked && rule2.ischecked(ques.$options.eq(i))) {
continue;
}
ques.$options.eq(i).click();
await sleep(Math.floor(Math.random() * 300 + 200));
} else if (rule2.ischecked && rule2.ischecked(ques.$options.eq(i))) {
ques.$options.eq(i).click();
await sleep(Math.floor(Math.random() * 300 + 200));
}
}
break;
case "pd":
let bold = answer;
if (ques.options.length == 0) {
ques.$options.each((index, element) => {
if (isTrue(bold) && isTrue(removeHtml1($(element).html()))) {
$(element).click();
}
if (isFalse(bold) && isFalse(removeHtml1($(element).html()))) {
$(element).click();
}
});
} else {
ques.$options.each((index, element) => {
if (isTrue(bold) && isTrue(ques.options[index])) {
$(element).click();
}
if (isFalse(bold) && isFalse(ques.options[index])) {
$(element).click();
}
});
}
break;
case "jd":
$(ques.html).find("textarea").each(function(index) {
_unsafeWindow.UE.getEditor($(this).attr("name")).ready(function() {
this.setContent(answer[index].replace(/第.空:/g, ""));
});
});
(_a = $(ques.html).find(".savebtndiv>a")) == null ? void 0 : _a.click();
break;
}
};
const ApiAnswerMatch = (res, ques) => {
const data = wapp();
const ask = data.ask;
let blankNum = 0;
let answer;
let setHook = true;
let type = ques.type, html = ques.html;
let matchArr = [];
let answerData = [
"",
matchArr,
ques,
ask.rule
];
if (ques.$options && typeof ques.$options === "function") {
ques.$options = ques.$options();
}
switch (type) {
case "0":
case "1":
for (let i = 0; i < res.length; i++) {
let answer2 = res[i].answer;
let matchArr2 = matchAnswer(answer2, ques.options);
res[i].match = matchArr2;
}
matchArr = res.filter((item) => item.match.length > 0);
if (matchArr.length === 0) {
return {
res,
haveAnswer: false
};
}
if (matchArr.length > 1) {
let isSame = matchArr.every((item) => item.match.length === matchArr[0].match.length);
if (!isSame) {
let max = matchArr[0];
for (let i = 1; i < matchArr.length; i++) {
if (matchArr[i].match.length > max.match.length) {
max = matchArr[i];
}
}
matchArr = [max];
}
}
let selectM = matchArr[0].match;
answerData[0] = "xx";
answerData[1] = selectM;
break;
case "3":
matchArr = res.map((item) => {
let answer2 = item.answer;
if (typeof answer2 === "object") {
answer2 = answer2[0];
}
if (isTrue(answer2)) {
item.answer = "正确";
} else if (isFalse(answer2)) {
item.answer = "错误";
} else {
item.answer = "";
}
return item;
});
matchArr = res.filter((item) => item.answer !== "");
if (matchArr.length === 0) {
return {
res,
haveAnswer: false
};
}
answerData[0] = "pd";
answerData[1] = matchArr[0].answer;
break;
case "2":
case "9":
case "4":
case "5":
case "6":
case "7":
blankNum = $(html).find("textarea").length;
if (blankNum === 0) {
blankNum = ques.$options.length;
}
matchArr = res.filter((item) => item.answer.length > 0);
if (matchArr.length === 0) {
return {
res,
haveAnswer: false
};
}
answer = matchArr[0].answer;
if (typeof answer === "string") {
answer = [answer];
}
if (blankNum !== 0) {
matchArr = matchArr.filter((item) => (typeof item.answer === "string" ? 1 : item.answer.length) === blankNum);
if (matchArr.length === 0) {
return {
res,
haveAnswer: false
};
}
}
answerData[0] = "jd";
answerData[1] = answer;
break;
case "14":
blankNum = ques.$options.length;
matchArr = res.filter((item) => item.answer.length > 0 && item.answer.length === blankNum);
if (matchArr.length === 0) {
return {
res,
haveAnswer: false
};
}
answer = matchArr[0].answer;
matchArr = matchArr.filter((item) => (typeof item.answer === "string" ? 1 : item.answer.length) === blankNum);
if (matchArr.length === 0) {
return {
res,
haveAnswer: false
};
}
answerData[0] = "wxtk";
answerData[1] = answer;
break;
case "11":
matchArr = res.filter((item) => {
return typeof item.answer === "object";
});
if (matchArr.length === 0) {
return {
res,
haveAnswer: false
};
}
answer = matchArr[0].answer;
answerData[0] = "lx";
answerData[1] = answer;
break;
default:
return {
res,
haveAnswer: false
};
}
if (ask.rule.setAnswerHook && typeof ask.rule.setAnswerHook === "function") {
ask.rule.setAnswerHook({
type,
answer: answerData[1],
html: ques.html,
ques
});
}
if (ask.rule.setAnswer && typeof ask.rule.setAnswer === "function") {
setHook = ask.rule.setAnswer({
type,
answer: answerData[1],
html,
ques,
rule: ask.rule
});
}
if (setHook) {
defaultSetAnswer(answerData[0], answerData[1], ques, ask.rule);
}
return {
res,
// 采用答案
form: matchArr ? matchArr[0] : [],
haveAnswer: true
};
};
const randomAnswerMatch = (res, ques) => {
const data = wapp();
const ask = data.ask;
let setHook = true;
let type = ques.type, html = ques.html;
let answerData = [
"",
[],
ques,
ask.rule
];
switch (type) {
case "0":
case "1":
let selectM = [Math.floor(Math.random() * ques.options.length)];
answerData[0] = "xx";
answerData[1] = selectM;
break;
case "3":
let bold = Math.random() > 0.5 ? "正确" : "错误";
answerData[0] = "pd";
answerData[1] = bold;
break;
default:
return;
}
if (ask.rule.setAnswerHook && typeof ask.rule.setAnswerHook === "function") {
ask.rule.setAnswerHook({
type,
answer: answerData[1],
html: ques.html,
ques
});
}
if (ask.rule.setAnswer && typeof ask.rule.setAnswer === "function") {
setHook = ask.rule.setAnswer({
type,
answer: answerData[1],
html,
ques,
rule: ask.rule
});
}
if (setHook) {
defaultSetAnswer(answerData[0], answerData[1], ques, ask.rule);
}
return;
};
const vuePageChange = async () => {
if (_unsafeWindow.vuePageChangeLock)
return;
_unsafeWindow.vuePageChangeLock = true;
const data = wapp();
const app = data.app;
const ask = data.ask;
ask.questionInx = 0;
app.app.showFloat = false;
app.setPage("home");
ask.clearQuestion();
await parseRule(rule);
_unsafeWindow.vuePageChangeLock = false;
};
const zhsimgList = {
"ef16b0304b00ce71fd40a6ec2ee77005": "ACDFGHIJ",
"735b46e223cfc7bad9b86c9937c75234": "BDEFG",
"24ec8818a8cc7ef047261e702dac5815": "ABCDEFGHIJ",
"196888b3dcb1e1bfff5881cb653ba923": "BDEFGH",
"b935cd024690d61b8fba0484a66108f0": "ABCDEGH",
"2015082c8ae5776bfd6939c5b987bde8": "BEF",
"95018628ad8e26805393ebbb913f5655": "AF",
"9cbff65dc6a768716f51443d6086a1c3": "BDG",
"b8f6dedb0bf830a10b66369b1c602088": "CFG",
"1ad38a724dc5bac06ce6d1c63b0184cf": "ACDEFGI",
"6ba30ef9d51b4c81a126ff6d17ee4fb2": "AEFHIJ",
"78a0d910c07fde12bafafda0f23c8b31": "CEH",
"9ae999623635bc09942f1d0eb59e6837": "BH",
"7d6006b8e10d9dffbe1fa0570757caa7": "DH",
"86eba22e064f8fe7223621469d91c696": "ACDF",
"4e585ee0c6ac7c985615389285c830ef": "BCF",
"5ff23de904db9fb6485cddb667995cd7": "ABCDEFGHI",
"fc402dcdbd1751096532c45785acbbbe": "DF",
"ece41fab3f00663e05f8f58eb73d24dd": "ABCDEFGH",
"784388b61ba6bc8106194478e383908a": "CDFIJ",
"e735470377881c422d187ce9bb7f4f24": "ACDEG",
"6a721d0773b4945fbe8f550da3850005": "ABCDEFI",
"cfcabe2eeaeef886169447086ac23b96": "AEG",
"c38f5ab64c8b82df3bb66f8f9831097b": "AEF",
"b684fb365965c6b3488eeedcae114384": "ADEF",
"1c402ceeda5ea92b80fe8b5b5bcbdc4d": "ACF",
"ce75bbb9a8b72f97de5a8bb03ee95df7": "J",
"e21ba3c8d7f8bbb66e4af7a9182d87a5": "ACGI",
"445adaca0de2f938fe7bacf8140eef36": "ABF",
"4f14c1e0a1eccde02ee4f0a77eaa78cd": "BCEF",
"e78e28ee7040cdf3894293cd2eeade9b": "H",
"ee5a026e9664d3d75f0471b9bc826c98": "EF",
"904d82937a49e762ec1fa7c53574bb39": "ADF",
"2ee96820a6a35990bff61a607953274c": "BDDF",
"dc13afaff7b568f31d96c0ff8b5998b8": "ABEF",
"13c11253a2bb72c3726d318163662263": "ABCF",
"ca8b276d3213cfda5e6406c0930dfdb5": "CDF",
"0d38524f7ca472260864ef7b79b11591": "ABCDG",
"0e9bfd8011be1eddfcf97102f9e21ab6": "DEF",
"ca88100d2fd190136cdcb3ffe1648820": "DG",
"2d8c02e62a414df727f2bd36d4231c68": "ABCFG",
"099b9f86638886c7ca57401d4360165c": "ABCDEFG",
"7a0a8f7222c07c8c24c4a6d201105ecc": "ACEF",
"181f54c34d485b426b900e2c777a831c": "AEFHI",
"993215603eb31c60f31aa261267790e8": "ABCEF",
"fcae686eac9b3de629da73618ea6cdc0": "ABCDF",
"8b6271d28906b0a6a765ea1c37c31ff9": "ABDF",
"5dfd875662f18654b374acd37e6c3790": "CF",
"e8b47f587340890e698ccb14ef1f39c4": "CDEF",
"de2c87983e695e599c1a2f6836277a4f": "ABDEF",
"14189c3fbb519be795b7fbe6e182debf": "A",
"94f5aa9777f0f1fb7d53e669691d8bde": "AB",
"3be90a70f03362711cf62e97751dfabe": "ABC",
"b9691b2259745815096c074d5cc27514": "ABCD",
"16374490395999a162f0652a32d13b8b": "ABCDE",
"8b2a7f5a361969be6a905da99af21b44": "ABCDEF",
"e12185b3db81b9ec20d0402632e83f74": "ACDEF",
"83bd97c6c3ac69318ad965f7776a51b4": "ABCE",
"80e9325ef9406e82b8202de25fd80cbb": "ABD",
"7d2f8e1fc8dabca4d9baca38bf413732": "ABDE",
"e329dd6e7aecd220d271ba06a87c1d4f": "ABE",
"8d234f3f7209a68f21d4e2b8f367d0b3": "AC",
"6ecb31b10f3e3a751f8d2caacbdc850d": "ACD",
"034b452c93b9be10f437a385608d8c0f": "ACDE",
"79b887d55f7fbe5f8f1e29537c4099b7": "ACE",
"d23fcd2143ca2071fc33f912cf1c28e4": "AD",
"32e93bed7ac49065a1af9639795f4b47": "ADE",
"81e4110d9047c39ea1444a178b7cd33d": "AE",
"fc9eb0edae6ae531956f368178f287e1": "B",
"998251adc1952f413e9b2b8d2b3cad37": "BC",
"47e6f17113fb5d7fa896270917aafb99": "BCD",
"26fee236555e7629f11308452c47b032": "BCDE",
"d22d3cc146b96cf9d049da3decb8060e": "BCDEF",
"a90e4a238e95a9ef750a1e0844b6730b": "BCDG",
"a4bfbd439f12870ac2294ac4f59c2ade": "BCE",
"d7e98cd9fa6c9fc480ebcba65bbd5ed7": "BD",
"859f062ed997fc06bebde9c00669d29d": "BDE",
"1ad8f209d08633c3cee74a4f48862c4f": "BDEF",
"8d34b7e5f05d2d9188a6d40a0f882cb0": "BDF",
"fe4bf0dc5ee6f3e858034bacfbd8c657": "BE",
"73223444a1f6ae044cc12664cfed422a": "C",
"e5abe969bb50ce2495a7591f32d67cc3": "CD",
"a897c5097bbbf5f66ad491c083a897f2": "CDE",
"b01f11bd3ef4311b47cef1a032dde5c2": "CE",
"ed3febdc9d4c5ca73f1066f3b6040d5a": "D",
"6a1137dfc861563b83e2579024ce929f": "DE",
"2e256e5ceb7a86e50fe2c93f622d30ac": "E",
"ddeacacae3b5f3ceb9ae1638d1585271": "EG",
"19be069faa48362663d092896fa7d4d4": "F",
"52113efae9e75eacdb3529fefb168982": "G"
};
const comHook = () => {
Function.prototype.temp_constructor = Function.prototype.constructor;
Function.prototype.constructor = function() {
if (arguments && typeof arguments[0] === "string") {
if (arguments[0] === "debugger")
return () => {
};
}
return Function.prototype.temp_constructor.apply(this, arguments);
};
const get_href = () => {
return location.href;
};
let baseSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function() {
this.addEventListener("readystatechange", function() {
switch (true) {
case /onlineexamh5new.zhihuishu.com/i.test(get_href()):
if (this.readyState === 4 && (this.response.includes("workExamParts") || this.response.includes("lookHomework"))) {
const data = JSON.parse(this.response);
_unsafeWindow.zhsques = data.rt;
}
if (this.readyState === 4 && this.responseURL.includes("getAnswerImgInfo")) {
let ques = {};
const data = JSON.parse(this.response).rt;
for (let key2 in JSON.parse(this.response).rt) {
ques[key2] = zhsimgList[md5Exports.md5(data[key2])];
}
_unsafeWindow.zhsimgAnswer = ques;
}
break;
case /icve.com.cn/i.test(location.host):
if (this.readyState === 4 && this.responseURL && this.responseURL.includes("examRecordPaperList")) {
log(JSON.parse(this.response), "success");
}
break;
case /degree.qingshuxuetang.com/i.test(get_href()):
if (this.readyState === 4 && this.responseURL.includes("Student/DetailData")) {
const data = JSON.parse(this.response);
_unsafeWindow.qsques = data.data.paperDetail.questions;
log(data.data.paperDetail.questions, "success");
}
break;
case /cce.org.uooconline.com/i.test(get_href()):
if (this.readyState === 4 && this.responseURL.includes("/exam/view?cid=")) {
const data = JSON.parse(this.response);
_unsafeWindow.cceques = data.data.questions;
log(data.data.questions, "success");
}
break;
case /cj-edu.com/i.test(get_href()):
if (this.readyState === 4 && this.responseURL.includes("api/student/getHomeworkStudentInfo.do")) {
const data = JSON.parse(this.response);
_unsafeWindow.cjques = data.data;
log(data.data, "success");
}
break;
case /gxk.yxlearning.com/i.test(get_href()):
if (this.readyState === 4 && this.responseURL.includes("cms/paper/start-do-paper-or-test.gson")) {
const data = JSON.parse(this.response);
_unsafeWindow.yxques = data.attribute.data;
log(data.data, "success");
}
break;
}
}, false);
return baseSend.apply(this, arguments);
};
if (/onlineexamh5new.zhihuishu.com/i.test(get_href())) {
const baseyxyz = _unsafeWindow.yxyz;
_unsafeWindow.yxyz = function(a, b) {
!_unsafeWindow.yxyzpush && (_unsafeWindow.yxyzpush = []);
let data = baseyxyz(a, b);
_unsafeWindow.yxyzpush.push({ ...a, data });
return data;
};
}
if (/icve.com.cn/i.test(get_href()) || /courshare.cn/i.test(get_href()) || /webtrn.cn/i.test(get_href())) {
const baseOpen = _unsafeWindow.open;
_unsafeWindow.open = function() {
arguments[2] = "";
return baseOpen.apply(this, arguments);
};
}
if (/ytccr.com/i.test(get_href())) {
const originalGetItem = localStorage.getItem;
localStorage.getItem = function(key2) {
if (key2 === "_debugger") {
return true;
}
const result = originalGetItem.apply(this, arguments);
return result;
};
}
if (/91huayi.com/i.test(get_href())) {
const originalCookie = _unsafeWindow.$.cookie;
_unsafeWindow.$.cookie = function(name, value, options) {
console.log("Cookie操作:", name, value, options);
if (name.startsWith("switchTime") && value !== void 0) {
value = void 0;
return originalCookie.apply(this, [name, value, options]);
}
return originalCookie.apply(this, arguments);
};
}
};
const update_cache = async () => {
const oldQuestion = Cache.matchGet("ques_");
if (oldQuestion.length > 0) {
oldQuestion.forEach((item) => {
Answer.cacheAnswer(item);
Cache.remove(item.key);
log("删除旧缓存", item.key);
});
msg("缓存更新成功!共计" + oldQuestion.length + "道题目", "success");
}
};
const appConfig = {
debug: true,
// 第三方接口
searchApi: [],
// 默认显示悬浮窗
defaultShowFloat: false,
showFloat: false,
// 右下角看板
showBoard: true,
// 检测更新
checkUpdate: true,
// 强制隐藏悬浮窗
hideFloat: false,
// 弹窗消息
alert: "点我有惊喜",
// 右下角气泡提示开关
alertBubble: true,
// key
key: "",
gpt: [
{
"name": "GLM",
"desc": "智普清言4.0",
"api": "http://82.157.105.20:8002/v1/chat/completions",
"key": ""
}
]
};
const appCache = Cache.get("app") || appConfig;
Object.keys(appConfig).forEach((key2) => {
if (appCache[key2] === void 0) {
appCache[key2] = appConfig[key2];
}
setApp(appCache);
});
function getApp() {
return Cache.get("app") || appConfig;
}
function setApp(config) {
Cache.set("app", config);
}
const scriptInfo = _GM_info.script;
const ConfigInput = {
"base": [
{
"type": "switch",
"label": "默认显示悬浮",
"name": "defaultShowFloat",
"value": appCache.defaultShowFloat,
"desc": "打开页面时是否显示悬浮窗",
"options": []
},
// {
// "type": "switch",
// "label":"看板小图标",
// "name":"showBoard",
// "value": appCache.showBoard,
// "desc":"打开页面时是否显示右下角看板",
// "options":[
// ]
// },
{
"type": "switch",
"label": "检测更新",
"name": "checkUpdate",
"value": appCache.checkUpdate,
"desc": "打开页面时是否检测更新",
"options": []
},
// 强制隐藏悬浮窗
{
"type": "switch",
"label": "强制隐藏",
"name": "hideFloat",
"value": appCache.hideFloat,
"desc": "仅热键或点击右下角图片才显示悬浮窗",
"options": []
},
// 右下角气泡提示
{
"type": "switch",
"label": "气泡提示",
"name": "alertBubble",
"value": appCache.alertBubble,
"desc": "右下角气泡提示是否开启",
"options": []
}
]
};
const useAppStore = defineStore("app", {
state: () => ({
app: appCache,
script: scriptInfo,
page: "home",
ConfigInput
}),
actions: {
setConfig(config) {
this.app = config;
Cache.set("app", config);
},
// 修改页面
setPage(page) {
this.page = page;
}
}
});
const useAskStore = defineStore("ask", {
state: () => ({
questionList: [],
questionInx: 0,
// 当前索引
inx: 0,
// 定时器
Interval: 0,
// 开启答题
start: false,
// 跳过已答题
skipFinish: Cache.get("skipFinish", false),
// 自动跳转
autoNext: Cache.get("autoNext", false),
// 默认开启自动答题
autoAnswer: Cache.get("autoAnswer", true),
// 免费题库优先
freeFirst: Cache.get("freeFirst", true),
// 无答案随机答题
randomAnswer: Cache.get("randomAnswer", false),
// 运行锁
lock: false,
// 统计题库
formMap: {},
// 问答类型
type: "cx",
// 加载状态
loading: false,
// 默认msg
tips: "本脚本仅供学习研究,请勿用于非法用途",
// 答题延迟
delay: Cache.get("delay", 1e3),
saveQuestionData: []
}),
actions: {
addQuestion(questionData) {
this.questionList.push({
...questionData,
answer: [],
status: 0,
aiMsg: ""
});
},
// 清空问题列表
clearQuestion() {
this.questionList = [];
},
getQuestion() {
return this.questionList[this.questionInx];
},
nextQuestion() {
if (this.questionInx === this.questionList.length - 1) {
clearInterval(this.Interval);
this.start = false;
return;
}
this.questionInx++;
},
prevQuestion() {
if (this.questionInx === 0) {
return;
}
this.questionInx--;
},
// 切换到指定问题
toQuestion(inx) {
this.questionInx = inx;
let ques = this.questionList[inx];
this.rule.toquestion && this.rule.toquestion(inx);
ques.html.scrollIntoView({ block: "center" });
if (_unsafeWindow.self !== _unsafeWindow.top) {
let el = document.querySelector(".el-dialog");
if (el) {
el.style.transform = "none";
let rect = ques.html.getBoundingClientRect();
el.style.top = `${rect.top - 700}px`;
if (inx === 0) {
el.style.top = "0px";
}
if (inx === this.questionList.length - 1) {
if (document.documentElement.scrollHeight > 2e3) {
el.style.top = `${rect.top - 900}px`;
}
}
}
}
ques.html.style.boxShadow = "0 0 10px rgba(0, 0, 0, 0.15)";
setTimeout(() => {
ques.html.style.boxShadow = "";
}, 500);
},
// 修改题目状态
setQuestionStatus(inx, status) {
if (this.questionList[inx] && this.questionList[inx].status != void 0) {
this.questionList[inx].status = status;
}
},
// 切换答题状态
async toggleStart() {
const data = wapp();
const app = data.app;
if (this.lock)
return;
this.start = !this.start;
if (!this.start)
return;
this.lock = true;
for (let i = this.questionInx; i < this.questionList.length && this.start; i++) {
if (this.skipFinish && this.questionList[i].status === 1) {
continue;
}
this.questionInx = i;
let ques = this.questionList[i];
if (ques.type === "8") {
this.setQuestionStatus(i, 2);
continue;
}
await this.reAnswer(i);
app.app.alert = `当前进度:${i + 1}/${this.questionList.length}`;
await sleep(this.delay + Math.random() * 1e3);
this.rule.toquestion && this.rule.toquestion(this.questionInx + 1);
this.autoNext && this.rule.next && this.rule.next();
}
this.autoNext && this.rule.finish && this.rule.finish({
"question": this.questionList
});
this.start = false;
this.lock = false;
this.formMap = {};
this.questionList.forEach((item) => {
var _a;
if ((_a = item.form) == null ? void 0 : _a.form) {
let key2 = item.form.form;
if (key2) {
this.formMap[key2] = this.formMap[key2] ? this.formMap[key2] + 1 : 1;
}
} else {
this.formMap["无答案"] = this.formMap["无答案"] ? this.formMap["无答案"] + 1 : 1;
}
app.app.alert = `答题完成~`;
});
},
// 重答指定题
async reAnswer(inx) {
let ques = this.questionList[inx];
this.loading = true;
let res = await Answer.getCacheAnswer(ques);
let m = ApiAnswerMatch([res], ques);
if (!m.haveAnswer) {
if (this.freeFirst) {
res = await Answer.getAnswersFree(ques);
m = ApiAnswerMatch(res, ques);
if (!m.haveAnswer) {
let res1 = await Answer.getAnswers(ques);
res1 = res.concat(res1);
m = ApiAnswerMatch(res1, ques);
}
} else {
res = await Answer.getAllAnswers(ques);
m = ApiAnswerMatch(res, ques);
}
}
ques.answer = m.res;
ques.form = m.form;
if (!m.haveAnswer) {
this.randomAnswer && randomAnswerMatch(res, ques);
this.setQuestionStatus(inx, 2);
} else {
this.setQuestionStatus(inx, 1);
}
this.loading = false;
},
// ai答题
aiAnswer(inx) {
const errorMsg = `AI响应异常,可能是没有获取KEY,请按下方步骤操作
1. 打开[智普清言](https://chatglm.cn/main/alltoolsdetail)
2. 登录后随便发一条消息即可
3. 返回答题页刷新页面 `;
let ques = this.questionList[inx];
this.loading = true;
let text = `[${typeChange2(ques.type)}]${ques.question}
`;
ques.aiMsg = "";
ques.options.forEach((item) => {
text += `${item}
`;
});
if (ques.type === "24") {
ques.match.forEach((item, index) => {
text += `第一列${item}
`;
});
ques.selects[0].forEach((item, index) => {
text += `第二列${item.text}
`;
});
}
aiAsk(
text,
(msg2) => {
ques.aiMsg += msg2;
this.loading = false;
},
() => {
this.loading = false;
if (ques.aiMsg.length <= 0) {
ques.aiMsg = errorMsg;
}
}
);
},
pause() {
this.start = false;
},
restart() {
this.questionInx = 0;
this.start = true;
this.toggleStart();
}
},
getters: {
// 当前问题
current() {
return this.questionList[this.questionInx];
},
currentAiMd() {
const md = markdownit({
highlight: function(str, lang) {
if (lang && hljs.getLanguage(lang)) {
try {
return '<pre><code class="hljs">' + hljs.highlight(str, { language: lang, ignoreIllegals: true }).value + "</code></pre>";
} catch (__) {
}
}
return '<pre><code class="hljs">' + md.utils.escapeHtml(str) + "</code></pre>";
}
});
return md.render(this.questionList[this.questionInx].aiMsg);
}
}
});
const ApiCache = Cache.get("apiList", []);
const DefApi = {
name: "",
url: "",
method: "GET",
params: [],
response: [],
request: [],
headers: []
};
const DefParam = {
name: "",
value: "",
type: "sys"
};
const testQuestionData = {
"question": "急性吗啡中毒的拮抗剂是:",
"options": ["纳酪酮", "曲马朵", "尼莫地平", "阿托品", "肾上腺素"],
"type": "0",
"questionData": "",
"workType": "ks"
};
const useApiStore = defineStore("api", {
state: () => ({
apiList: ApiCache,
// 当前编辑的接口
currentApi: DefApi,
currentParam: DefParam
}),
actions: {
// 删除接口
deleteApi(index) {
this.apiList.splice(index, 1);
Cache.set("apiList", this.apiList);
},
// 添加接口
addApi() {
this.apiList.push(this.currentApi);
Cache.set("apiList", this.apiList);
},
// 更新接口
updateApi(index, api) {
this.apiList[index] = api;
Cache.set("apiList", this.apiList);
},
// 添加参数
addParam() {
this.currentApi.params.push({
name: this.currentParam.name,
value: this.currentParam.value,
type: this.currentParam.type
});
this.currentParam = DefParam;
},
// 删除参数
deleteParam(index) {
this.currentApi.params.splice(index, 1);
},
// 恢复默认
reset() {
this.currentApi = DefApi;
this.currentParam = DefParam;
},
// 编辑接口
editApi(index) {
this.currentApi = this.apiList[index];
},
// 编辑参数
editParam(index) {
this.currentParam = this.currentApi.params[index];
},
// 测试API
testApi(index) {
let api = this.apiList[index];
let data = {};
api.params.forEach((item) => {
switch (item.value) {
case "$question":
data[item.name] = testQuestionData.question;
break;
case "$options":
data[item.name] = testQuestionData.options;
break;
case "$typeid":
data[item.name] = testQuestionData.type;
break;
case "$questionData":
data[item.name] = testQuestionData.questionData;
break;
case "$workType":
data[item.name] = testQuestionData.workType;
break;
case "$timestamp":
data[item.name] = (/* @__PURE__ */ new Date()).getTime();
break;
case "$random":
data[item.name] = Math.random();
break;
default:
data[item.name] = item.value;
}
});
return requestFetch(api.url, api.method, data, {});
}
},
getters: {}
});
const mini = "data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1702363595473'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='9984'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M253.360825%201024l-115.279176-58.836014v-53.205773c-64.888522-68.266667-62.917938-94.728797%2014.075602-153.424055-23.506254-17.594502-63.762474%202.674364-77.275052-36.315051%2047.434777-42.930584%2070.378007-101.062818%2087.972509-162.010172a326.694708%20326.694708%200%200%201%20208.037388-226.617182c4.644948-89.380069%2086.84646-143.430378%20178.478626-112.604811l-35.611272%2090.36536c105.144742%207.319313%20192.413471%2045.041924%20256.316701%20123.302268%2040.537732%2015.483162%2038.84866-34.766735%2069.251959-40.819244l11.964261%2058.27299%2050.390653-27.306667c28.151203%2018.72055-5.207973%2031.951615-10.415945%2052.220482%2014.779381%2020.12811%2028.995739%2040.537732%2044.4789%2060.243573a142.867354%20142.867354%200%200%201%2028.995739%20114.153128c-12.527285%2077.838076-30.262543%20154.831615-41.100756%20233.091958a1276.938557%201276.938557%200%200%200-5.207972%20139.48921h-21.113402l-89.239313-70.378007%209.993677-10.415945-17.735258%2036.878076L731.931271%20959.956014l-39.411683%2023.787766-42.226804-21.113402c-28.151203%2014.075601-52.501993%2036.03354-86.564949%2027.306667l-9.008385-37.863368H332.747216l-26.602886%2071.926323z%20m-9.993677-380.041237l-0.844536%200.985292%20126.680412%2019.705842%2010.838213%2010.978969c-29.277251%2032.373883-19.846598%2074.178419-29.699519%20110.493471L384.404674%20816.38488l-35.189004%2094.869553a412.274364%20412.274364%200%200%200%20233.514227%202.11134l9.712165-26.602886%2012.808797%2015.905429-11.823505%2050.672165%205.348728%204.644949c16.749966-11.682749%2033.218419-24.210034%2050.812921-34.62598a84.453608%2084.453608%200%200%201%2026.039863-5.348728l7.460069%2033.922199L731.931271%20928.145155l52.924262%2014.075601c-1.829828-43.212096-2.955876-80.934708-5.911753-118.516564%200-4.92646-9.852921-9.289897-15.060893-14.075601l-5.630241-23.224742%2014.075601-100.922062h18.72055l3.237389-1.266804c-11.964261%20106.411546%208.023093%20202.266392%2087.127972%20281.512027%208.726873-48.842337%2016.60921-93.321237%2024.632302-137.659381%207.460069-40.96%2015.060893-81.92%2022.520963-122.88%2010.556701-48.420069%2025.476838-97.262405-10.978969-140.756014L886.762887%20602.435739c0-16.468454%201.126048-33.077663%201.126048-49.546117%200-70.378007-53.205773-104.722474-115.982956-76.289759a232.951203%20232.951203%200%200%201-32.936907%209.430652c16.046186-32.373883-3.5189-52.924261-25.476838-70.378006a292.209485%20292.209485%200%200%200-209.304193-70.378007c-11.401237%200.70378-22.802474%200-40.25622%200l45.182681-104.581718c-40.396976%2010.978969-74.037663%2014.779381-94.728798%2045.464192s14.920137%2045.88646%2020.831891%2069.674227C325.005636%20360.194639%20232.528935%20436.343643%20198.606735%20548.948454l-70.378006%20172.707628%2049.123848%203.518901%205.630241%2054.191065c32.514639-26.039863%2026.039863-61.08811%2030.262543-92.898969h17.876014v58.413746l30.966323%206.33402c1.40756-6.615533%202.392852-11.682749%203.659656-16.468453%209.149141-34.625979-19.705842-59.117526-22.380206-91.491409zM205.50378%20822.859656l-6.474777%2020.83189-25.336082%2084.453609c1.548316%208.867629%200%2023.224742%205.067216%2025.476838%2032.373883%2016.046186%2065.733058%2029.277251%20104.159451%2045.745705%2021.113402-65.451546%2063.621718-114.434639%2069.53347-180.871478C315.152715%20802.309278%20281.512027%20786.966873%20247.730584%20774.158076c-17.031478-6.756289-36.315052-10.978969-35.048247%2019.002061z%20m121.753952-38.848659l10.556701-90.224605-48.138557-6.193265v78.964124z%20m-168.907217%2096.980893l23.083987-73.474639c-28.151203-10.415945-47.575533-9.289897-56.302406%2015.483161s2.674364%2042.789828%2032.936907%2057.991478z'%20fill='%23353947'%20p-id='9985'%3e%3c/path%3e%3cpath%20d='M198.606735%20548.948454c33.922199-112.604811%20126.680412-188.472302%20235.907079-192.272715-5.911753-23.787766-41.100756-39.55244-20.83189-69.674227s54.331821-34.485223%2094.728798-45.464192l-45.182681%20104.581718h40.25622a292.209485%20292.209485%200%200%201%20209.304193%2070.378007c21.957938%2017.735258%2042.226804%2038.285636%2025.476838%2070.378007l0.985292-0.985293c-30.966323%2026.743643-32.796151%2059.399038-19.846598%2095.151066l25.195327%2040.96-40.819244-6.193265-103.174158-14.075601-62.214158-93.039725-31.670104%2050.672165c-19.42433-5.630241-26.602887%200.844536-20.691134%2020.691134L464.494845%20579.210997a165.669828%20165.669828%200%200%200-100.077525-17.172234l-10.415945-86.564949L316.560275%20506.721649l-44.338144%2042.226805z%20m255.190653-62.917939l-10.556701-10.556701c-17.172234-17.031478-35.048247-15.060893-47.29402%203.378145s-4.785704%2036.73732%2012.105017%2050.249897c20.12811%2016.046186%2034.907491%209.712165%2045.745704-11.541993%2014.216357-10.838213%2015.201649-21.394914%200-31.81086z'%20fill='%23F5F5F6'%20p-id='9986'%20data-spm-anchor-id='a313x.search_index.0.i5.dc0f3a810XA6r8'%20class='selected'%3e%3c/path%3e%3cpath%20d='M592.442062%20886.762887l-9.712165%2026.602886a412.274364%20412.274364%200%200%201-233.514227-2.11134l35.189004-94.869553-34.062956-30.544055c9.852921-36.315052%200-78.119588%2029.699519-110.493471a198.184467%20198.184467%200%200%200%20105.426254-94.869553c16.327698%202.392852%2026.039863-1.689072%2020.691134-20.691134l31.670104-4.926461L600.887423%20633.402062c0%207.882337-1.970584%2018.01677%201.970584%2023.083986%2030.966323%2038.707904%2023.787766%2080.934708%2014.075601%20123.865292-8.586117%2036.03354-16.468454%2071.363299-24.491546%20106.411547zM442.818419%20663.523849c0%2014.075601-2.81512%2023.64701%200%2026.884398%2020.268866%2020.691134%2020.83189%2045.604948%2019.565086%2071.926323a96.840137%2096.840137%200%200%200%203.237388%2031.107079c5.911753%2020.409622%2012.668041%2041.382268%2038.426392%2044.056633A48.560825%2048.560825%200%200%200%20557.393814%20802.309278a696.601512%20696.601512%200%200%200%2018.579794-80.371683c6.052509-6.474777%2035.470515-2.533608%2018.157526-36.596564z'%20fill='%23F5F5F6'%20p-id='9987'%3e%3c/path%3e%3cpath%20d='M600.605911%20602.013471l103.174158%2014.075601%2040.819244%205.348729c37.863368%209.993677%2022.94323%2041.241512%2026.46213%2065.170034l-14.075601%20100.922062-49.827629%2078.119588-21.394914%2031.529347-10.134433%2021.394914a84.453608%2084.453608%200%200%200-26.039863%205.348728c-17.594502%2010.415945-34.062955%2022.94323-50.812921%2034.62598v-5.207973h-5.067216l11.823505-50.672165c16.046186-61.932646%2032.936907-123.724536%2047.716289-185.938694%205.348729-22.661718-25.476838-68.266667-51.938969-82.62378zM927.300619%20706.735945c-7.460069%2040.96-15.060893%2081.92-22.520963%20122.88-8.023093%2044.338144-15.90543%2088.817045-24.632302%20137.659381-79.10488-79.386392-98.52921-175.241237-87.127973-281.512027z'%20fill='%23B3DCF8'%20p-id='9988'%3e%3c/path%3e%3cpath%20d='M199.029003%20843.691546l6.474777-20.83189h45.604949c2.11134-39.270928-20.972646-30.262543-38.426392-30.121787-1.548316-29.981031%2018.01677-25.758351%2035.048247-18.579793%2034.062955%2013.231065%2067.422131%2028.151203%20104.722474%2044.4789-5.911753%2066.436838-48.420069%20115.419931-69.53347%20180.871478-38.426392-16.186942-71.926323-29.418007-104.159451-45.182681-4.785704-2.252096-3.5189-16.60921-5.067216-25.476838h33.499931l26.321375-70.378007z'%20fill='%2387BC85'%20p-id='9989'%3e%3c/path%3e%3cpath%20d='M738.265292%20486.030515a232.951203%20232.951203%200%200%200%2032.936907-9.430652c62.777182-28.151203%20116.405223%206.615533%20115.982956%2076.289759%200%2016.468454-0.70378%2033.077663-1.126048%2049.546117l1.126048-0.985292-12.105018-2.674365-21.53567%2016.749966-29.981031%208.304605A86.564948%2086.564948%200%200%201%20731.931271%20564.572371c2.392852-26.462131%204.644948-52.924261%207.037801-79.527148z%20m113.730859%2061.79189l-61.369622-52.501993c-3.941168%2035.752027-6.615533%2059.821306-10.275189%2093.180481z'%20fill='%23F5F5F6'%20p-id='9990'%20data-spm-anchor-id='a313x.search_index.0.i3.dc0f3a810XA6r8'%20class=''%3e%3c/path%3e%3cpath%20d='M198.606735%20548.948454h73.615396c-28.151203%2042.226804-74.178419%2076.852784-59.117526%20137.659381-4.22268%2031.810859%202.252096%2066.859107-30.262543%2092.898969l-6.052509-54.472577-49.123849-3.518901z'%20fill='%23AED4EF'%20p-id='9991'%3e%3c/path%3e%3cpath%20d='M927.300619%20706.735945l-134.281238-21.113402-3.237388%201.266804%206.897045-37.863368%2027.025154-7.74158%2031.247835-8.867629%2029.840275-20.691134%202.392853-10.275189-0.422268%200.985292%2030.262543-36.73732c35.752027%2043.77512%2020.83189%2092.617457%2010.275189%20141.037526zM369.625292%20663.946117l-126.680412-19.705842a171.300069%20171.300069%200%200%201%2016.749965-41.100756c21.817182-29.277251%2046.167973-56.302405%2069.533471-84.453608%203.237388%209.149141%206.756289%2018.157526%209.571409%2027.306666q15.623918%2049.123849%2030.966323%2098.52921z'%20fill='%23F5F5F6'%20p-id='9992'%3e%3c/path%3e%3cpath%20d='M763.179107%20810.473127c5.207973%204.644948%2014.075601%209.008385%2015.060893%2014.075602%202.955876%2037.581856%204.081924%2075.304467%205.911753%20118.516563l-52.924262-14.075601-47.9978%2023.787766-7.600825-34.766735c14.075601-1.970584%2020.550378-7.882337%2010.978969-21.817182%2021.394914%2011.682749%2023.787766-9.993677%2033.359175-19.002062z'%20fill='%23AED4EF'%20p-id='9993'%3e%3c/path%3e%3cpath%20d='M601.168935%20634.105842c26.462131%2014.075601%2057.287698%2059.962062%2051.938969%2082.62378-14.075601%2062.214158-31.670103%20124.006048-47.716289%20185.938694L592.442062%20886.762887c8.023093-35.329759%2015.90543-70.378007%2024.35079-105.989279%2010.134433-42.930584%2017.31299-85.157388-14.075601-123.865292-3.5189-4.785704-0.985292-14.920137-1.548316-22.802474zM328.806048%20518.404399c-23.365498%2028.151203-47.716289%2055.457869-69.533471%2084.453608a171.300069%20171.300069%200%200%200-16.749965%2041.100756l0.844536-0.985292-12.386529%2043.07134h-17.876014C198.043711%20625.660481%20243.507904%20591.175258%20272.222131%20548.948454l44.338144-42.226805z'%20fill='%23484F5E'%20p-id='9994'%3e%3c/path%3e%3cpath%20d='M327.257732%20784.010997l-37.581856-17.453746v-78.964124l48.138557%206.193265z'%20fill='%23D55375'%20p-id='9995'%3e%3c/path%3e%3cpath%20d='M823.704192%20641.284399l-27.025154%207.74158-6.897045%2037.863368h-18.72055c-3.5189-23.928522%2011.401237-55.176357-26.46213-65.170034l-25.195327-40.96%2012.527285-16.186942a86.564948%2086.564948%200%200%200%2091.350653%2059.258282zM369.625292%20663.946117v-19.846598l12.245773-12.949553c8.445361%201.266804%2020.409622%206.897045%2024.773059%203.237388%2020.550378-17.031478%2038.989416-36.455808%2058.132233-55.176357l20.972646%201.548316A198.184467%20198.184467%200%200%201%20380.041237%20675.628866z'%20fill='%23484F5E'%20p-id='9996'%3e%3c/path%3e%3cpath%20d='M199.029003%20843.691546l34.485224%2014.075602-26.321375%2070.378007h-33.499931z'%20fill='%23CAE7AF'%20p-id='9997'%3e%3c/path%3e%3cpath%20d='M230.980619%20686.326323l12.386529-43.07134c2.674364%2031.670103%2031.529347%2056.302405%2022.23945%2091.350653-1.266804%204.785704-2.252096%209.852921-3.659656%2016.468453l-30.966323-6.33402z'%20fill='%23F5F5F6'%20p-id='9998'%3e%3c/path%3e%3cpath%20d='M763.179107%20810.473127l-44.056633%2067.703643-11.964261-12.527285%2050.390653-78.4011z'%20fill='%23484F5E'%20p-id='9999'%3e%3c/path%3e%3cpath%20d='M212.682337%20792.737869c17.453746%200%2040.537732-9.149141%2038.426392%2030.121787H205.50378z'%20fill='%23CDEAB1'%20p-id='10000'%3e%3c/path%3e%3cpath%20d='M598.916838%20957.98543l-5.348728-4.644949h5.067216z'%20fill='%23484F5E'%20p-id='10001'%3e%3c/path%3e%3cpath%20d='M464.494845%20579.210997c-19.142818%2018.72055-37.581856%2038.14488-58.132233%2055.176357-4.363436%203.659656-16.327698-1.970584-24.773059-3.237388l-17.172233-69.111203A165.669828%20165.669828%200%200%201%20464.494845%20579.210997z'%20fill='%23AED4EF'%20p-id='10002'%3e%3c/path%3e%3cpath%20d='M364.41732%20562.038763l17.172233%2069.111203-12.245773%2012.949553q-15.342405-49.123849-30.966323-98.52921c-2.81512-9.149141-6.334021-18.157526-9.571409-27.306666l-12.245773-11.541994%2037.4411-30.966323z'%20fill='%23353947'%20p-id='10003'%3e%3c/path%3e%3cpath%20d='M600.605911%20602.013471v31.670103l-62.214158-79.245636-31.670104%204.926461%2031.388592-50.390653z'%20fill='%23484F5E'%20p-id='10004'%3e%3c/path%3e%3cpath%20d='M453.797388%20517.278351c-10.838213%2021.254158-25.617595%2028.151203-45.745704%2011.541993-16.890722-14.075601-24.632302-31.529347-12.105017-50.249897s30.121787-20.409622%2047.29402-3.378145c-23.506254%200.985292-34.766735%2011.541993-29.136495%2039.411684l39.693196%203.096633z'%20fill='%23AED4EF'%20p-id='10005'%3e%3c/path%3e%3cpath%20d='M731.931271%20564.572371l-12.808797%2015.623918c-12.949553-35.752027-11.119725-68.407423%2019.846598-95.151066-2.11134%2026.602887-4.363436%2053.065017-7.037801%2079.527148z'%20fill='%23353947'%20p-id='10006'%3e%3c/path%3e%3cpath%20d='M506.721649%20559.786667c5.348729%2019.002062-4.363436%2023.083986-20.691134%2020.691134-6.193265-19.846598%200.985292-26.321375%2020.691134-20.691134z'%20fill='%23484F5E'%20p-id='10007'%3e%3c/path%3e%3cpath%20d='M453.797388%20485.749003c15.201649%2010.415945%2014.075601%2020.972646%200%2031.529348v-31.81086zM443.240687%20475.192302l10.556701%2010.556701-10.556701-10.556701z'%20fill='%23AED4EF'%20p-id='10008'%3e%3c/path%3e%3cpath%20d='M442.818419%20663.523849l151.312715%2022.098694c17.31299%2034.062955-12.105017%2030.121787-18.157526%2036.596564A696.601512%20696.601512%200%200%201%20557.393814%20802.309278a48.560825%2048.560825%200%200%201-52.783505%2034.907492c-25.758351-2.674364-32.514639-23.64701-38.426391-44.056633a96.840137%2096.840137%200%200%201-3.237389-31.107079c1.266804-26.321375%200-51.235189-19.565086-71.926323-3.378144-2.955876-0.563024-12.386529-0.563024-26.602886z%20m66.296083%20153.987079c41.523024-26.462131%2042.226804-60.38433%2034.766735-98.52921l-55.317113-10.275189c-0.422268%2038.707904-15.201649%2075.163711%2020.550378%20108.804399zM707.158213%20865.649485l11.964261%2012.527285c-9.571409%209.008385-11.964261%2030.684811-33.359175%2019.002062z'%20fill='%23353947'%20p-id='10009'%3e%3c/path%3e%3cpath%20d='M686.185567%20896.756564c9.571409%2014.075601%202.955876%2019.846598-10.978969%2021.817182zM851.996151%20547.822405l-71.644811%2040.678488c3.659656-33.359175%206.334021-57.428454%2010.275189-93.180481z'%20fill='%23353947'%20p-id='10010'%3e%3c/path%3e%3cpath%20d='M884.792302%20611.725636l-29.840275%2020.691134-1.40756-16.890722%2021.53567-16.749966z'%20fill='%23484F5E'%20p-id='10011'%20data-spm-anchor-id='a313x.search_index.0.i4.dc0f3a810XA6r8'%20class='selected'%3e%3c/path%3e%3cpath%20d='M853.544467%20615.526048l1.40756%2016.890722-31.247835%208.867629v-17.453746zM884.792302%20611.725636l-9.712165-12.949554%2012.105018%202.674365z'%20fill='%23353947'%20p-id='10012'%3e%3c/path%3e%3cpath%20d='M443.522199%20474.91079l10.556701%2010.556701v31.951616l-39.693196-3.096633c-6.193265-27.869691%205.630241-38.426392%2029.136495-39.411684z'%20fill='%23F5F5F6'%20p-id='10013'%3e%3c/path%3e%3cpath%20d='M509.114502%20817.510928c-35.752027-33.640687-20.972646-70.378007-20.550378-108.804399l55.317113%2010.275189c7.882337%2038.14488%206.756289%2072.067079-34.766735%2098.52921z'%20fill='%23E25679'%20p-id='10014'%3e%3c/path%3e%3c/svg%3e";
const _withScopeId = (n) => (vue.pushScopeId("data-v-e34c2e2a"), n = n(), vue.popScopeId(), n);
const _hoisted_1$8 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", null, "本脚本仅供学习交流,请勿用作任何非法用途。", -1));
const _hoisted_2$5 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode("p", null, "如果有其他平台需要答题功能,请反馈给作者,会根据需求量酌情增加", -1));
const _hoisted_3$5 = { class: "aah_plat" };
const _hoisted_4$5 = { key: 0 };
const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
__name: "Home",
setup(__props) {
const appStore = useAppStore();
scriptInfo$1.script.downloadURL ?? "#";
const debug = vue.ref(true);
const msg1 = (msg2) => {
ElementPlus.ElMessage({
message: msg2,
type: "success",
duration: 2e3
});
};
return (_ctx, _cache) => {
const _component_el_alert = vue.resolveComponent("el-alert");
const _component_el_divider = vue.resolveComponent("el-divider");
const _component_el_tag = vue.resolveComponent("el-tag");
const _component_el_button = vue.resolveComponent("el-button");
const _component_el_text = vue.resolveComponent("el-text");
const _component_el_col = vue.resolveComponent("el-col");
const _component_el_row = vue.resolveComponent("el-row");
return vue.openBlock(), vue.createBlock(_component_el_row, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_col, { span: 24 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_alert, {
type: "info",
closable: false
}, {
title: vue.withCtx(() => [
_hoisted_1$8,
_hoisted_2$5
]),
_: 1
}),
vue.createVNode(_component_el_divider, null, {
default: vue.withCtx(() => [
vue.createTextVNode("功能列表")
]),
_: 1
}),
vue.createElementVNode("div", _hoisted_3$5, [
vue.createVNode(_component_el_tag, null, {
default: vue.withCtx(() => [
vue.createTextVNode("多平台答案检索")
]),
_: 1
}),
vue.createVNode(_component_el_tag, null, {
default: vue.withCtx(() => [
vue.createTextVNode("AI辅助答题")
]),
_: 1
}),
vue.createVNode(_component_el_tag, null, {
default: vue.withCtx(() => [
vue.createTextVNode("解除复制限制")
]),
_: 1
}),
vue.createVNode(_component_el_tag, null, {
default: vue.withCtx(() => [
vue.createTextVNode("Ctrl+Shift+P 显隐悬浮窗")
]),
_: 1
}),
vue.createVNode(_component_el_tag, null, {
default: vue.withCtx(() => [
vue.createTextVNode("更多功能待添加..")
]),
_: 1
})
]),
debug.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$5, [
vue.createVNode(_component_el_button, {
type: "primary",
plain: "",
onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(appStore).setPage("Base"))
}, {
default: vue.withCtx(() => [
vue.createTextVNode("基础配置")
]),
_: 1
}),
vue.createVNode(_component_el_button, {
type: "primary",
plain: "",
onClick: _cache[1] || (_cache[1] = ($event) => vue.unref(appStore).setPage("ask"))
}, {
default: vue.withCtx(() => [
vue.createTextVNode("答题页")
]),
_: 1
}),
vue.createVNode(_component_el_button, {
type: "primary",
plain: "",
onClick: _cache[2] || (_cache[2] = ($event) => vue.unref(appStore).setPage("preview"))
}, {
default: vue.withCtx(() => [
vue.createTextVNode("本地题库")
]),
_: 1
}),
vue.createVNode(_component_el_button, {
type: "primary",
plain: "",
onClick: _cache[3] || (_cache[3] = ($event) => vue.unref(appStore).setPage("question"))
}, {
default: vue.withCtx(() => [
vue.createTextVNode("题库缓存")
]),
_: 1
}),
vue.createVNode(_component_el_button, {
type: "primary",
plain: "",
onClick: _cache[4] || (_cache[4] = ($event) => vue.unref(appStore).setPage("questionTool"))
}, {
default: vue.withCtx(() => [
vue.createTextVNode("题库导入")
]),
_: 1
}),
vue.createVNode(_component_el_button, {
type: "primary",
plain: "",
onClick: _cache[5] || (_cache[5] = ($event) => vue.unref(appStore).setPage("ai"))
}, {
default: vue.withCtx(() => [
vue.createTextVNode("AI")
]),
_: 1
})
])) : vue.createCommentVNode("", true),
vue.createVNode(_component_el_divider, { onClick: msg1 }, {
default: vue.withCtx(() => [
vue.createTextVNode("版本信息")
]),
_: 1
}),
vue.createElementVNode("div", null, [
vue.createElementVNode("p", null, [
vue.createTextVNode("当前版本号: "),
vue.createVNode(_component_el_tag, { type: "primary" }, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(vue.unref(scriptInfo$1).script.version), 1)
]),
_: 1
}),
vue.createVNode(_component_el_button, {
size: "small",
type: "primary",
onClick: vue.unref(updateCheck1)
}, {
default: vue.withCtx(() => [
vue.createTextVNode("检测更新")
]),
_: 1
}, 8, ["onClick"])
]),
vue.createElementVNode("p", null, [
vue.createVNode(_component_el_text, {
class: "mx-1",
type: "info"
}, {
default: vue.withCtx(() => [
vue.createTextVNode("PS:保持最新版本可以减少BUG的出现哦~")
]),
_: 1
})
])
])
]),
_: 1
})
]),
_: 1
});
};
}
});
const _export_sfc = (sfc, props) => {
const target = sfc.__vccOpts || sfc;
for (const [key2, val] of props) {
target[key2] = val;
}
return target;
};
const Home = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-e34c2e2a"]]);
const _sfc_main$9 = {};
function _sfc_render$1(_ctx, _cache) {
return vue.openBlock(), vue.createElementBlock("h1", null, "这是一个公告");
}
const Note = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$1]]);
const _hoisted_1$7 = { style: { "margin": "10px" } };
const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
__name: "Base",
setup(__props) {
const appStore = useAppStore();
vue.watch(appStore.app, (newVal) => {
appStore.setConfig(newVal);
});
vue.watch(appStore.ConfigInput, (newVal) => {
for (let key2 in newVal) {
for (let key1 in newVal[key2]) {
let item = newVal[key2][key1];
appStore.app[item.name] = item.value;
}
}
msg("配置修改成功", "success");
appStore.setConfig(appStore.app);
});
const ConfigInput2 = appStore.ConfigInput;
return (_ctx, _cache) => {
const _component_el_alert = vue.resolveComponent("el-alert");
const _component_el_col = vue.resolveComponent("el-col");
const _component_el_switch = vue.resolveComponent("el-switch");
const _component_el_input = vue.resolveComponent("el-input");
const _component_el_input_number = vue.resolveComponent("el-input-number");
const _component_el_option = vue.resolveComponent("el-option");
const _component_el_select = vue.resolveComponent("el-select");
const _component_el_checkbox = vue.resolveComponent("el-checkbox");
const _component_el_checkbox_group = vue.resolveComponent("el-checkbox-group");
const _component_el_tooltip = vue.resolveComponent("el-tooltip");
const _component_el_row = vue.resolveComponent("el-row");
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createVNode(_component_el_alert, {
title: "配置修改后会自动保存,直接刷新页面即可",
type: "info",
closable: false,
"show-icon": ""
}),
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ConfigInput2).base, (item1) => {
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
vue.createVNode(_component_el_row, {
class: "row-bg",
justify: "space-between",
align: "middle"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_col, { span: 6 }, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(item1.label), 1)
]),
_: 2
}, 1024),
vue.createVNode(_component_el_col, {
span: 18,
style: { "text-align": "right" }
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_tooltip, {
class: "grid-content ep-bg-purple-light",
effect: "dark",
content: item1.desc || "",
placement: "top"
}, {
default: vue.withCtx(() => [
item1.type === "switch" ? (vue.openBlock(), vue.createBlock(_component_el_switch, {
key: 0,
modelValue: item1.value,
"onUpdate:modelValue": ($event) => item1.value = $event
}, null, 8, ["modelValue", "onUpdate:modelValue"])) : item1.type === "input" ? (vue.openBlock(), vue.createBlock(_component_el_input, {
key: 1,
modelValue: item1.value,
"onUpdate:modelValue": ($event) => item1.value = $event
}, null, 8, ["modelValue", "onUpdate:modelValue"])) : item1.type === "number" ? (vue.openBlock(), vue.createBlock(_component_el_input_number, {
key: 2,
modelValue: item1.value,
"onUpdate:modelValue": ($event) => item1.value = $event
}, null, 8, ["modelValue", "onUpdate:modelValue"])) : item1.type === "select" ? (vue.openBlock(), vue.createBlock(_component_el_select, {
key: 3,
modelValue: item1.value,
"onUpdate:modelValue": ($event) => item1.value = $event,
placeholder: "请选择"
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item1.options, (item2) => {
return vue.openBlock(), vue.createBlock(_component_el_option, {
key: item2.value,
label: item2.label,
value: item2.value
}, null, 8, ["label", "value"]);
}), 128))
]),
_: 2
}, 1032, ["modelValue", "onUpdate:modelValue"])) : item1.type === "checkbox" ? (vue.openBlock(), vue.createBlock(_component_el_checkbox_group, {
key: 4,
modelValue: item1.value,
"onUpdate:modelValue": ($event) => item1.value = $event
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item1.options, (item2) => {
return vue.openBlock(), vue.createBlock(_component_el_checkbox, {
key: item2.value,
label: item2.value,
name: item2.value
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(item2.label), 1)
]),
_: 2
}, 1032, ["label", "name"]);
}), 128))
]),
_: 2
}, 1032, ["modelValue", "onUpdate:modelValue"])) : vue.createCommentVNode("", true)
]),
_: 2
}, 1032, ["content"])
]),
_: 2
}, 1024)
]),
_: 2
}, 1024)
]);
}), 256))
], 64);
};
}
});
function makeShadow(el, option) {
return makeShadowRaw(el, el.childNodes, option);
}
function makeShadowRaw(rootEl, childNodes, { mode = "open", delegatesFocus = false } = { mode: "open" }) {
try {
const oldroot = rootEl.shadowRoot;
if (oldroot != null) {
console.error("[shadow] Attach shadow multiple times", rootEl, childNodes, oldroot);
return;
} else {
const shadow_root = rootEl.attachShadow({ mode, delegatesFocus });
if (childNodes)
putDomIntoShadow(shadow_root, childNodes);
return shadow_root;
}
} catch (e) {
console.error("[shadow] make shadow-root failed", rootEl, childNodes);
console.error(e);
}
}
function putDomIntoShadow(shadow_root, childNodes) {
const fragment = document.createDocumentFragment();
for (const node of childNodes) {
fragment.appendChild(node);
}
shadow_root.appendChild(fragment);
}
const virtual_root = document.createDocumentFragment();
const ShadowStyle = vue.defineComponent({
props: {
media: String,
nonce: String
},
setup(props, { slots }) {
return () => {
var _a;
return vue.h("style", { media: props.media, nonce: props.nonce }, (_a = slots.default) == null ? void 0 : _a.call(slots));
};
}
});
const ShadowRoot = withType()(vue.defineComponent({
props: {
mode: {
type: String,
default: "open"
},
delegatesFocus: {
type: Boolean,
default: false
},
abstract: {
type: Boolean,
default: false
},
tag: {
type: String,
default: "div"
},
adoptedStyleSheets: {
type: Array
}
},
emits: ["error"],
setup(props, { slots, expose, emit }) {
const abstract = vue.ref(false);
const el = vue.ref();
const teleport_el = vue.ref();
const shadow_root = vue.ref();
const teleport_target = vue.computed(() => shadow_root.value ?? virtual_root);
const ex = vue.reactive({
shadow_root
});
expose(ex);
vue.onBeforeMount(() => {
abstract.value = props.abstract;
});
vue.onMounted(() => {
var _a;
try {
if (abstract.value) {
if (teleport_el.value.parentElement.shadowRoot) {
shadow_root.value = teleport_el.value.parentElement.shadowRoot;
} else {
shadow_root.value = makeShadowRaw(teleport_el.value.parentElement, void 0, {
mode: props.mode,
delegatesFocus: props.delegatesFocus
});
}
} else {
shadow_root.value = makeShadowRaw(el.value, void 0, { mode: props.mode, delegatesFocus: props.delegatesFocus });
}
(_a = shadow_root.value) == null ? void 0 : _a.styleSheets;
} catch (e) {
console.error(e);
emit("error", e);
}
});
vue.watch([shadow_root, () => props.adoptedStyleSheets], ([shadow_root2, adoptedStyleSheets]) => {
if (!shadow_root2 || !adoptedStyleSheets)
return;
try {
;
shadow_root2.adoptedStyleSheets = adoptedStyleSheets;
} catch (e) {
console.error(e);
emit("error", e);
}
});
return () => {
var _a;
const child_part = vue.h(vue.Teleport, { ref: teleport_el, to: teleport_target.value }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
if (abstract.value)
return child_part;
return vue.h(props.tag, { ref: el }, child_part);
};
},
install,
Style: ShadowStyle
}));
function withType() {
return (obj) => obj;
}
function install(app) {
app.component("shadow-root", ShadowRoot);
app.directive("shadow", {
beforeMount(el) {
console.warn("[VueShadowDom] Deprecated v-shadow directive, use <shadow-root> component");
makeShadow(el);
}
});
}
var shadow = { ShadowRoot, ShadowStyle, shadow_root: ShadowRoot, shadow_style: ShadowStyle, install };
const _hoisted_1$6 = /* @__PURE__ */ vue.createElementVNode("div", { class: "aah_bomHet50" }, [
/* @__PURE__ */ vue.createElementVNode("span", { class: "dq" }, [
/* @__PURE__ */ vue.createElementVNode("i"),
/* @__PURE__ */ vue.createTextVNode("当前题目")
]),
/* @__PURE__ */ vue.createElementVNode("span", { class: "yp" }, [
/* @__PURE__ */ vue.createElementVNode("i"),
/* @__PURE__ */ vue.createTextVNode("已作答")
]),
/* @__PURE__ */ vue.createElementVNode("span", { class: "wp" }, [
/* @__PURE__ */ vue.createElementVNode("i"),
/* @__PURE__ */ vue.createTextVNode("无答案")
]),
/* @__PURE__ */ vue.createElementVNode("span", { class: "zp" }, [
/* @__PURE__ */ vue.createElementVNode("i"),
/* @__PURE__ */ vue.createTextVNode("未作答")
])
], -1);
const _hoisted_2$4 = ["innerHTML"];
const _hoisted_3$4 = ["innerHTML"];
const _hoisted_4$4 = { key: 0 };
const _hoisted_5$4 = { style: { "width": "100%" } };
const _hoisted_6$4 = ["innerHTML"];
const _hoisted_7$2 = ["value"];
const _hoisted_8$1 = {
key: 1,
style: { "color": "green" }
};
const _hoisted_9$1 = {
key: 2,
style: { "color": "red" }
};
const _hoisted_10$1 = { key: 0 };
const _hoisted_11$1 = { key: 1 };
const _hoisted_12$1 = ["innerHTML"];
const _hoisted_13$1 = { key: 0 };
const _hoisted_14$1 = ["innerHTML"];
const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
__name: "Ask",
setup(__props) {
const ask = useAskStore();
const app = useAppStore();
const getOptionIndex = (inx) => {
return String.fromCharCode(65 + inx);
};
const formatTooltip = (val) => {
return `答题间隔:${val}ms`;
};
vue.watch(app.app, (newVal) => {
app.setConfig(newVal);
});
const watchAutoNext = () => {
Cache.set("autoNext", ask.autoNext);
};
const watchSkipFinish = () => {
Cache.set("skipFinish", ask.skipFinish);
};
const watchAutoAnswer = () => {
Cache.set("autoAnswer", ask.autoAnswer);
};
const watchFreeFirst = () => {
Cache.set("freeFirst", ask.freeFirst);
};
const watchRandomAnswer = () => {
Cache.set("randomAnswer", ask.randomAnswer);
};
const watchDelay = () => {
Cache.set("delay", ask.delay);
};
return (_ctx, _cache) => {
const _component_el_alert = vue.resolveComponent("el-alert");
const _component_el_button = vue.resolveComponent("el-button");
const _component_el_col = vue.resolveComponent("el-col");
const _component_el_checkbox = vue.resolveComponent("el-checkbox");
const _component_el_input = vue.resolveComponent("el-input");
const _component_el_form_item = vue.resolveComponent("el-form-item");
const _component_el_slider = vue.resolveComponent("el-slider");
const _component_el_form = vue.resolveComponent("el-form");
const _component_el_tag = vue.resolveComponent("el-tag");
const _component_el_divider = vue.resolveComponent("el-divider");
const _component_el_row = vue.resolveComponent("el-row");
const _component_el_empty = vue.resolveComponent("el-empty");
const _directive_loading = vue.resolveDirective("loading");
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createVNode(_component_el_alert, {
style: { "margin-bottom": "10px" },
title: vue.unref(ask).tips,
type: "info",
closable: false
}, null, 8, ["title"]),
vue.unref(ask).current ? (vue.openBlock(), vue.createBlock(_component_el_row, { key: 0 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_col, { span: 12 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_button, {
onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(ask).start ? vue.unref(ask).pause() : vue.unref(ask).toggleStart()),
size: "small",
class: "aah_btn",
type: "primary",
plain: ""
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(vue.unref(ask).start ? "暂停答题" : "开始答题"), 1)
]),
_: 1
})
]),
_: 1
}),
vue.createVNode(_component_el_col, { span: 12 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_button, {
onClick: _cache[1] || (_cache[1] = ($event) => vue.unref(ask).restart()),
size: "small",
class: "aah_btn",
type: "primary",
plain: ""
}, {
default: vue.withCtx(() => [
vue.createTextVNode("重新答题")
]),
_: 1
})
]),
_: 1
}),
vue.createVNode(_component_el_col, { span: 24 }, {
default: vue.withCtx(() => [
_hoisted_1$6
]),
_: 1
}),
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).questionList, (val, inx) => {
return vue.openBlock(), vue.createBlock(_component_el_col, { span: 3 }, {
default: vue.withCtx(() => [
(vue.openBlock(), vue.createBlock(_component_el_button, {
class: vue.normalizeClass(inx == vue.unref(ask).questionInx ? "aah_active" : ""),
style: { "width": "30px", "margin-bottom": "4px" },
key: inx,
onClick: ($event) => vue.unref(ask).toQuestion(inx),
size: "small",
type: val.status == 1 ? "primary" : val.status == 2 ? "danger" : "",
plain: ""
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(inx + 1), 1)
]),
_: 2
}, 1032, ["class", "onClick", "type"]))
]),
_: 2
}, 1024);
}), 256)),
vue.createVNode(_component_el_col, { span: 24 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_form, { "label-width": "auto" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_checkbox, {
onChange: watchSkipFinish,
modelValue: vue.unref(ask).skipFinish,
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => vue.unref(ask).skipFinish = $event),
label: "跳过已作答"
}, null, 8, ["modelValue"]),
vue.createVNode(_component_el_checkbox, {
onChange: watchAutoAnswer,
modelValue: vue.unref(ask).autoAnswer,
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => vue.unref(ask).autoAnswer = $event),
label: "自动答题"
}, null, 8, ["modelValue"]),
vue.createVNode(_component_el_checkbox, {
onChange: watchAutoNext,
modelValue: vue.unref(ask).autoNext,
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => vue.unref(ask).autoNext = $event),
label: "自动跳转"
}, null, 8, ["modelValue"]),
vue.createVNode(_component_el_checkbox, {
onChange: watchFreeFirst,
modelValue: vue.unref(ask).freeFirst,
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => vue.unref(ask).freeFirst = $event),
label: "免费题库优先"
}, null, 8, ["modelValue"]),
vue.createVNode(_component_el_checkbox, {
onChange: watchRandomAnswer,
modelValue: vue.unref(ask).randomAnswer,
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => vue.unref(ask).randomAnswer = $event),
label: "无答案随机答题"
}, null, 8, ["modelValue"]),
vue.createVNode(_component_el_form_item, { label: "秘钥" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_input, {
class: "aah_password",
placeholder: "请输入你购买的秘钥(非必填)",
modelValue: vue.unref(app).app.key,
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => vue.unref(app).app.key = $event),
"show-password": ""
}, null, 8, ["modelValue"])
]),
_: 1
}),
vue.createVNode(_component_el_form_item, { label: "间隔" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_slider, {
onChange: watchDelay,
modelValue: vue.unref(ask).delay,
"onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => vue.unref(ask).delay = $event),
max: 5e3,
"format-tooltip": formatTooltip
}, null, 8, ["modelValue"])
]),
_: 1
})
]),
_: 1
})
]),
_: 1
}),
vue.unref(ask).formMap ? (vue.openBlock(), vue.createBlock(_component_el_col, {
key: 0,
span: 24
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).formMap, (val, key2) => {
return vue.openBlock(), vue.createBlock(_component_el_tag, {
key: key2,
style: { "margin-right": "10px" }
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(key2) + ":" + vue.toDisplayString(val) + " 次", 1)
]),
_: 2
}, 1024);
}), 128))
]),
_: 1
})) : vue.createCommentVNode("", true),
vue.createVNode(_component_el_divider, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_button, {
onClick: _cache[9] || (_cache[9] = ($event) => vue.unref(ask).reAnswer(vue.unref(ask).questionInx)),
style: { "color": "red", "font-size": "10px" },
link: ""
}, {
default: vue.withCtx(() => [
vue.createTextVNode("重答")
]),
_: 1
}),
vue.createVNode(_component_el_divider, { direction: "vertical" }),
vue.createVNode(_component_el_button, {
onClick: _cache[10] || (_cache[10] = ($event) => vue.unref(ask).aiAnswer(vue.unref(ask).questionInx)),
style: { "color": "red", "font-size": "10px" },
link: ""
}, {
default: vue.withCtx(() => [
vue.createTextVNode("AI答题")
]),
_: 1
})
]),
_: 1
}),
vue.createVNode(_component_el_col, { span: 24 }, {
default: vue.withCtx(() => [
vue.createElementVNode("div", {
class: "aah_title",
innerHTML: "[" + vue.unref(typeChange2)(vue.unref(ask).current.type ?? "") + "]" + vue.unref(ask).current.question
}, null, 8, _hoisted_2$4),
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).current.options, (val, inx) => {
return vue.openBlock(), vue.createElementBlock("p", {
style: vue.normalizeStyle(vue.unref(ask).current.form && vue.unref(ask).current.form.match && vue.unref(ask).current.form.match.includes(inx) ? "color:green;" : ""),
class: "aah_options",
innerHTML: getOptionIndex(inx) + ". " + val
}, null, 12, _hoisted_3$4);
}), 256)),
vue.unref(ask).current.type == "24" ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_4$4, [
vue.createVNode(vue.unref(ShadowRoot), null, {
default: vue.withCtx(() => [
vue.createElementVNode("table", _hoisted_5$4, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).current.match, (val, inx) => {
return vue.openBlock(), vue.createElementBlock("tr", null, [
vue.createElementVNode("td", { innerHTML: val }, null, 8, _hoisted_6$4),
vue.createElementVNode("td", null, [
vue.createElementVNode("select", null, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).current.selects[inx], (item) => {
return vue.openBlock(), vue.createElementBlock("option", {
value: item.value
}, vue.toDisplayString(item.text), 9, _hoisted_7$2);
}), 256))
])
])
]);
}), 256))
])
]),
_: 1
})
])) : vue.createCommentVNode("", true),
vue.unref(ask).current.form ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_8$1, " 采用【" + vue.toDisplayString(vue.unref(ask).current.form.form) + "】的答案 ", 1)) : vue.createCommentVNode("", true),
vue.unref(ask).current.type == "8" || vue.unref(ask).current.type == void 0 || vue.unref(ask).current.type == "" ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_9$1, " 当前题型暂不支持,请反馈给作者吧 ")) : vue.createCommentVNode("", true)
]),
_: 1
}),
vue.withDirectives((vue.openBlock(), vue.createBlock(_component_el_col, {
span: 24,
"element-loading-text": "正在搜索中"
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(ask).current.answer, (item) => {
return vue.openBlock(), vue.createElementBlock("div", null, [
vue.createVNode(_component_el_divider, null, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(`${item.form}(${item.duration}ms)`), 1)
]),
_: 2
}, 1024),
typeof item.answer === "object" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$1, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(item.answer, (ans) => {
return vue.openBlock(), vue.createElementBlock("p", null, [
vue.createVNode(_component_el_input, {
value: ans,
readonly: "",
style: { "width": "100%" }
}, null, 8, ["value"])
]);
}), 256))
])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_11$1, [
vue.createElementVNode("div", {
innerHTML: item.answer ? item.answer : item.msg ?? "暂无答案"
}, null, 8, _hoisted_12$1)
]))
]);
}), 256)),
vue.unref(ask).current.aiMsg ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13$1, [
vue.createVNode(_component_el_divider, null, {
default: vue.withCtx(() => [
vue.createTextVNode("AI回答(仅供参考)")
]),
_: 1
}),
vue.createElementVNode("div", {
innerHTML: vue.unref(ask).currentAiMd
}, null, 8, _hoisted_14$1)
])) : vue.createCommentVNode("", true)
]),
_: 1
})), [
[_directive_loading, vue.unref(ask).loading]
])
]),
_: 1
})) : (vue.openBlock(), vue.createBlock(_component_el_empty, {
key: 1,
description: "暂无题目数据"
}))
], 64);
};
}
});
const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
__name: "Api",
setup(__props) {
const apiStore = useApiStore();
const deleteRow = (index) => {
apiStore.deleteApi(index);
};
const paramVisible = vue.ref(false);
const addParam = () => {
if (apiStore.currentParam.name == "") {
ElementPlus.ElNotification({
title: "参数效验不通过",
message: "参数名不能为空",
type: "error"
});
return;
}
if (apiStore.currentParam.value == "") {
ElementPlus.ElNotification({
title: "参数效验不通过",
message: "参数值不能为空",
type: "error"
});
return;
}
const index = apiStore.currentApi.params.findIndex((item) => item.name == apiStore.currentParam.name);
if (index != -1) {
apiStore.currentApi.params[index] = apiStore.currentParam;
ElementPlus.ElNotification({
title: "更新成功",
message: "参数已更新",
type: "success"
});
paramVisible.value = false;
return;
}
apiStore.addParam();
paramVisible.value = false;
};
const addApi = () => {
if (apiStore.currentApi.name == "") {
ElementPlus.ElNotification({
title: "参数效验不通过",
message: "接口名不能为空",
type: "error"
});
return;
}
if (apiStore.currentApi.url == "") {
ElementPlus.ElNotification({
title: "参数效验不通过",
message: "接口地址不能为空",
type: "error"
});
return;
}
if (apiStore.currentApi.params.length == 0) {
ElementPlus.ElNotification({
title: "参数效验不通过",
message: "参数不能为空",
type: "error"
});
return;
}
const index = apiStore.apiList.findIndex((item) => item.name == apiStore.currentApi.name);
if (index != -1) {
apiStore.updateApi(index, apiStore.currentApi);
ElementPlus.ElNotification({
title: "更新成功",
message: "接口已更新",
type: "success"
});
}
apiStore.addApi();
apiStore.reset();
};
const editApi = (index) => {
apiStore.editApi(index);
};
const editParam = (index) => {
apiStore.editParam(index);
paramVisible.value = true;
};
const testApi = (index) => {
apiStore.testApi(index).then((res) => {
}).catch((err) => {
ElementPlus.ElNotification({
title: "请求失败",
message: err,
type: "error"
});
});
};
return (_ctx, _cache) => {
const _component_el_alert = vue.resolveComponent("el-alert");
const _component_el_input = vue.resolveComponent("el-input");
const _component_el_form_item = vue.resolveComponent("el-form-item");
const _component_el_option = vue.resolveComponent("el-option");
const _component_el_select = vue.resolveComponent("el-select");
const _component_el_button = vue.resolveComponent("el-button");
const _component_el_form = vue.resolveComponent("el-form");
const _component_el_dialog = vue.resolveComponent("el-dialog");
const _component_el_table_column = vue.resolveComponent("el-table-column");
const _component_el_table = vue.resolveComponent("el-table");
const _component_el_col = vue.resolveComponent("el-col");
const _component_el_row = vue.resolveComponent("el-row");
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createVNode(_component_el_alert, {
title: "当前功能开发中,若您有急需添加的API可以先反馈给作者",
type: "error"
}),
vue.createVNode(_component_el_dialog, {
modelValue: paramVisible.value,
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => paramVisible.value = $event),
title: "添加参数",
style: { "width": "400px" }
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_form, {
model: vue.unref(apiStore).currentParam,
"label-width": "auto"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_form_item, { label: "参数名" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_input, {
modelValue: vue.unref(apiStore).currentParam.name,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.unref(apiStore).currentParam.name = $event),
autocomplete: "off"
}, null, 8, ["modelValue"])
]),
_: 1
}),
vue.createVNode(_component_el_form_item, { label: "参数类型" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_select, {
modelValue: vue.unref(apiStore).currentParam.type,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.unref(apiStore).currentParam.type = $event),
placeholder: "请选择"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_option, {
label: "内置参数",
value: "sys"
}),
vue.createVNode(_component_el_option, {
label: "自定义参数",
value: "diy"
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}),
vue.createVNode(_component_el_form_item, { label: "参数值" }, {
default: vue.withCtx(() => [
vue.unref(apiStore).currentParam.type == "diy" ? (vue.openBlock(), vue.createBlock(_component_el_input, {
key: 0,
modelValue: vue.unref(apiStore).currentParam.value,
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => vue.unref(apiStore).currentParam.value = $event),
autocomplete: "off"
}, null, 8, ["modelValue"])) : (vue.openBlock(), vue.createBlock(_component_el_select, {
key: 1,
modelValue: vue.unref(apiStore).currentParam.value,
"onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => vue.unref(apiStore).currentParam.value = $event),
placeholder: "请选择"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_option, {
label: "题型(字符串)",
value: "$type"
}),
vue.createVNode(_component_el_option, {
label: "题型(数字)",
value: "$typeid"
}),
vue.createVNode(_component_el_option, {
label: "题干(题目)",
value: "$question"
}),
vue.createVNode(_component_el_option, {
label: "选项",
value: "$options"
}),
vue.createVNode(_component_el_option, {
label: "时间戳",
value: "$timestamp"
}),
vue.createVNode(_component_el_option, {
label: "随机数",
value: "$random"
})
]),
_: 1
}, 8, ["modelValue"]))
]),
_: 1
}),
vue.createVNode(_component_el_form_item, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_button, {
onClick: addParam,
plain: "",
style: { "width": "100%" }
}, {
default: vue.withCtx(() => [
vue.createTextVNode("添加")
]),
_: 1
})
]),
_: 1
})
]),
_: 1
}, 8, ["model"])
]),
_: 1
}, 8, ["modelValue"]),
vue.createVNode(_component_el_table, {
data: vue.unref(apiStore).apiList,
style: { "width": "100%", "margin-bottom": "10px" },
"empty-text": "暂无数据"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_table_column, {
prop: "name",
label: "接口名",
width: "120"
}),
vue.createVNode(_component_el_table_column, {
prop: "url",
label: "接口地址",
width: "120"
}),
vue.createVNode(_component_el_table_column, {
prop: "method",
label: "请求方式",
width: "120"
}),
vue.createVNode(_component_el_table_column, {
fixed: "right",
label: "操作",
width: "120"
}, {
default: vue.withCtx((scope) => [
vue.createVNode(_component_el_button, {
link: "",
type: "primary",
size: "small",
onClick: vue.withModifiers(($event) => deleteRow(scope.$index), ["prevent"])
}, {
default: vue.withCtx(() => [
vue.createTextVNode(" 删除 ")
]),
_: 2
}, 1032, ["onClick"]),
vue.createVNode(_component_el_button, {
link: "",
type: "primary",
size: "small",
onClick: vue.withModifiers(($event) => editApi(scope.$index), ["prevent"])
}, {
default: vue.withCtx(() => [
vue.createTextVNode(" 编辑 ")
]),
_: 2
}, 1032, ["onClick"]),
vue.createVNode(_component_el_button, {
link: "",
type: "primary",
size: "small",
onClick: vue.withModifiers(($event) => testApi(scope.$index), ["prevent"])
}, {
default: vue.withCtx(() => [
vue.createTextVNode(" 测试 ")
]),
_: 2
}, 1032, ["onClick"])
]),
_: 1
})
]),
_: 1
}, 8, ["data"]),
vue.createVNode(_component_el_row, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_col, { span: 24 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_form, {
model: vue.unref(apiStore).currentApi,
"label-width": "80px"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_form_item, { label: "接口名" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_input, {
modelValue: vue.unref(apiStore).currentApi.name,
"onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => vue.unref(apiStore).currentApi.name = $event),
placeholder: "请输入接口名"
}, null, 8, ["modelValue"])
]),
_: 1
}),
vue.createVNode(_component_el_form_item, { label: "接口地址" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_input, {
modelValue: vue.unref(apiStore).currentApi.url,
"onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => vue.unref(apiStore).currentApi.url = $event),
placeholder: "请输入接口地址"
}, null, 8, ["modelValue"])
]),
_: 1
}),
vue.createVNode(_component_el_form_item, { label: "请求方式" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_select, {
modelValue: vue.unref(apiStore).currentApi.method,
"onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => vue.unref(apiStore).currentApi.method = $event),
placeholder: "请选择"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_option, {
label: "GET",
value: "GET"
}),
vue.createVNode(_component_el_option, {
label: "POST",
value: "POST"
})
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}),
vue.createVNode(_component_el_form_item, { label: "请求参数" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_table, {
data: vue.unref(apiStore).currentApi.params,
style: { "width": "100%" },
"empty-text": "暂无参数"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_table_column, {
prop: "name",
label: "参数名",
width: "120"
}),
vue.createVNode(_component_el_table_column, {
prop: "value",
label: "参数值",
width: "120"
}),
vue.createVNode(_component_el_table_column, {
fixed: "right",
label: "操作",
width: "120"
}, {
default: vue.withCtx((scope) => [
vue.createVNode(_component_el_button, {
link: "",
type: "primary",
size: "small",
onClick: vue.withModifiers(($event) => vue.unref(apiStore).deleteParam(scope.$index), ["prevent"])
}, {
default: vue.withCtx(() => [
vue.createTextVNode(" 删除 ")
]),
_: 2
}, 1032, ["onClick"]),
vue.createVNode(_component_el_button, {
link: "",
type: "primary",
size: "small",
onClick: vue.withModifiers(($event) => editParam(scope.$index), ["prevent"])
}, {
default: vue.withCtx(() => [
vue.createTextVNode(" 编辑 ")
]),
_: 2
}, 1032, ["onClick"])
]),
_: 1
})
]),
_: 1
}, 8, ["data"]),
vue.createVNode(_component_el_button, {
type: "primary",
onClick: _cache[8] || (_cache[8] = ($event) => paramVisible.value = true),
text: ""
}, {
default: vue.withCtx(() => [
vue.createTextVNode("添加参数")
]),
_: 1
})
]),
_: 1
}),
vue.createVNode(_component_el_form_item, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_button, {
type: "primary",
onClick: addApi,
plain: ""
}, {
default: vue.withCtx(() => [
vue.createTextVNode("添加")
]),
_: 1
})
]),
_: 1
})
]),
_: 1
}, 8, ["model"])
]),
_: 1
})
]),
_: 1
})
], 64);
};
}
});
const _sfc_main$5 = {};
const _hoisted_1$5 = {
src: "https://chatglm.cn/miniapp/home",
width: "100%",
height: "600px",
frameborder: "0",
style: { "border": "none", "overflow": "hidden" }
};
function _sfc_render(_ctx, _cache) {
return vue.openBlock(), vue.createElementBlock("iframe", _hoisted_1$5);
}
const Ai = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render]]);
const _hoisted_1$4 = /* @__PURE__ */ vue.createElementVNode("br", null, null, -1);
const _hoisted_2$3 = /* @__PURE__ */ vue.createElementVNode("br", null, null, -1);
const _hoisted_3$3 = /* @__PURE__ */ vue.createElementVNode("p", { style: { "color": "red" } }, "且并非所有网站都支持,需要作者适配,若您的平台不支持可以反馈给作者", -1);
const _hoisted_4$3 = /* @__PURE__ */ vue.createElementVNode("div", { class: "el-upload__text" }, [
/* @__PURE__ */ vue.createTextVNode(" 拖拽备份文件或 "),
/* @__PURE__ */ vue.createElementVNode("em", null, "点击上传"),
/* @__PURE__ */ vue.createTextVNode("恢复备份 ")
], -1);
const _hoisted_5$3 = ["innerHTML"];
const _hoisted_6$3 = ["innerHTML"];
const _hoisted_7$1 = ["innerHTML"];
const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
__name: "Question",
setup(__props) {
const showBtn = vue.ref(0);
window.addEventListener("keydown", (e) => {
if (e.key === "`") {
showBtn.value++;
}
});
const scriptId = scriptInfo$1.script.updateURL.match(/scripts\/(\d+)/)[1];
const url = `https://greasyfork.org/zh-CN/scripts/${scriptId}`;
const ask = useAskStore();
const questionkey = Cache.match("ques1_");
const clearCache = () => {
Cache.matchRemove("ques1_");
msg("清除成功", "success");
};
const exportHtml = async (question) => {
const html = question.map((item, inx) => {
return `
<p><a href="${url}">爱问答助手</a></p>
<p>${inx + 1}、[${typeChange2(item.type)}]${item.question}</p>
<p>${optionsToString(item.options)}</p>
<p style="color:green;">答案:${answerFormat2(item.answer)}</p>
`;
}).join("<br/>");
const html1 = `<HtML> <head> <meta charset="utf-8"> <title>爱问答助手答案导出</title> </head> <body> ${html} </body> </HtML>`;
const blob = new Blob([html1], { type: "text/html" });
const a = document.createElement("a");
a.href = URL.createObjectURL(blob);
a.download = "爱问答助手.html";
a.click();
};
const exportData = async () => {
const questionList = Cache.matchGet("ques1_") || [];
msg(`正在打包题目中,请稍后`, "info");
const text = await encrypt(JSON.stringify(questionList));
const blob = new Blob([text], { type: "application/text" });
msg(`打包完成,共计${questionList.length}题,准备下载`, "success");
const a = document.createElement("a");
a.href = URL.createObjectURL(blob);
const time = (/* @__PURE__ */ new Date()).toLocaleDateString().replace(/\//g, "-");
a.download = `爱问答助手备份-${time}.bak`;
a.click();
};
const exportDocx = async () => {
exportHtml(ask.saveQuestionData);
};
const exportDocx1 = async () => {
const questionList = Cache.matchGet("ques1_") || [];
exportHtml(questionList);
};
const changeT = (item) => {
return typeChange2(item.type);
};
const answerFormat2 = (item) => {
if (Array.isArray(item)) {
return item.join("<br/>");
} else if (typeof item === "string") {
return item;
} else if (typeof item === "object") {
return JSON.stringify(item);
} else {
return item;
}
};
const beforeUpload = (rawFile) => {
const reader = new FileReader();
reader.onload = async (e) => {
var _a;
const text = (_a = e.target) == null ? void 0 : _a.result;
try {
const data = JSON.parse(await decrypt(text));
data.forEach((item) => {
Answer.cacheAnswer(item);
});
msg(`题库导入成功,共计${data.length}题
过多题目导入后页面会卡主请直接关闭页面重新打开`, "success");
} catch (error) {
msg("文件格式错误", "error");
}
};
reader.readAsText(rawFile);
return false;
};
return (_ctx, _cache) => {
const _component_el_alert = vue.resolveComponent("el-alert");
const _component_el_statistic = vue.resolveComponent("el-statistic");
const _component_el_col = vue.resolveComponent("el-col");
const _component_el_row = vue.resolveComponent("el-row");
const _component_el_upload = vue.resolveComponent("el-upload");
const _component_el_button = vue.resolveComponent("el-button");
const _component_el_popconfirm = vue.resolveComponent("el-popconfirm");
const _component_el_table_column = vue.resolveComponent("el-table-column");
const _component_el_table = vue.resolveComponent("el-table");
const _component_el_watermark = vue.resolveComponent("el-watermark");
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createVNode(_component_el_alert, {
type: "info",
closable: false
}, {
default: vue.withCtx(() => [
vue.createTextVNode(" 本脚本支持将存在答案的题目收录到本地,以供后续答题检索,可减少接口请求次数,以及提高答案正确率"),
_hoisted_1$4,
vue.createTextVNode(" 在支持重复答题且答完题显示答案的情况下可以无需使用接口搜索答案"),
_hoisted_2$3,
_hoisted_3$3
]),
_: 1
}),
vue.createVNode(_component_el_watermark, { content: ["爱问答助手", "AiAskHelper"] }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_row, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_col, { span: 24 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_statistic, {
title: "缓存题目数量",
value: vue.unref(questionkey).length
}, null, 8, ["value"])
]),
_: 1
})
]),
_: 1
}),
vue.createVNode(_component_el_upload, {
drag: "",
accept: ".bak",
"show-file-list": false,
"before-upload": beforeUpload
}, {
default: vue.withCtx(() => [
_hoisted_4$3
]),
_: 1
}),
vue.createVNode(_component_el_popconfirm, {
title: "确定要清空本地缓存吗?",
"confirm-button-text": "确定",
"cancel-button-text": "取消",
onConfirm: clearCache,
"hide-after": 0
}, {
reference: vue.withCtx(() => [
vue.createVNode(_component_el_button, { type: "danger" }, {
default: vue.withCtx(() => [
vue.createTextVNode("清除缓存")
]),
_: 1
})
]),
_: 1
}),
vue.createVNode(_component_el_button, {
type: "primary",
onClick: exportData
}, {
default: vue.withCtx(() => [
vue.createTextVNode("导出备份")
]),
_: 1
}),
showBtn.value > 10 ? (vue.openBlock(), vue.createBlock(_component_el_button, {
key: 0,
type: "primary",
onClick: exportDocx
}, {
default: vue.withCtx(() => [
vue.createTextVNode("导出当前")
]),
_: 1
})) : vue.createCommentVNode("", true),
showBtn.value > 10 ? (vue.openBlock(), vue.createBlock(_component_el_button, {
key: 1,
type: "primary",
onClick: exportDocx1
}, {
default: vue.withCtx(() => [
vue.createTextVNode("导出所有")
]),
_: 1
})) : vue.createCommentVNode("", true),
vue.createVNode(_component_el_table, {
data: vue.unref(ask).saveQuestionData,
style: { "width": "100%" },
"empty-text": "当前页暂无数据"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_table_column, {
prop: "type",
label: "题型",
formatter: changeT
}),
vue.createVNode(_component_el_table_column, {
prop: "question",
label: "题目"
}, {
default: vue.withCtx((scope) => [
vue.createElementVNode("div", {
innerHTML: scope.row.question
}, null, 8, _hoisted_5$3)
]),
_: 1
}),
vue.createVNode(_component_el_table_column, {
prop: "options",
label: "选项"
}, {
default: vue.withCtx((scope) => [
vue.createElementVNode("div", {
innerHTML: scope.row.options.join("<br/>")
}, null, 8, _hoisted_6$3)
]),
_: 1
}),
vue.createVNode(_component_el_table_column, {
prop: "answer",
label: "答案"
}, {
default: vue.withCtx((scope) => [
vue.createElementVNode("div", {
innerHTML: answerFormat2(scope.row.answer)
}, null, 8, _hoisted_7$1)
]),
_: 1
})
]),
_: 1
}, 8, ["data"])
]),
_: 1
})
], 64);
};
}
});
/*! Element Plus Icons Vue v2.3.1 */
var edit_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
name: "Edit",
__name: "edit",
setup(__props) {
return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
vue.createElementVNode("path", {
fill: "currentColor",
d: "M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640z"
}),
vue.createElementVNode("path", {
fill: "currentColor",
d: "m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z"
})
]));
}
});
var edit_default = edit_vue_vue_type_script_setup_true_lang_default;
var minus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
name: "Minus",
__name: "minus",
setup(__props) {
return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
vue.createElementVNode("path", {
fill: "currentColor",
d: "M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64"
})
]));
}
});
var minus_default = minus_vue_vue_type_script_setup_true_lang_default;
var plus_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
name: "Plus",
__name: "plus",
setup(__props) {
return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
vue.createElementVNode("path", {
fill: "currentColor",
d: "M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z"
})
]));
}
});
var plus_default = plus_vue_vue_type_script_setup_true_lang_default;
var search_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ vue.defineComponent({
name: "Search",
__name: "search",
setup(__props) {
return (_ctx, _cache) => (vue.openBlock(), vue.createElementBlock("svg", {
xmlns: "http://www.w3.org/2000/svg",
viewBox: "0 0 1024 1024"
}, [
vue.createElementVNode("path", {
fill: "currentColor",
d: "m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704"
})
]));
}
});
var search_default = search_vue_vue_type_script_setup_true_lang_default;
const _hoisted_1$3 = { class: "flex justify-right mt-4 mr-10" };
const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
__name: "QuestionEdit",
props: {
ques: {},
visible: { type: Boolean }
},
emits: ["handleClose"],
setup(__props, { emit: __emit }) {
const props = __props;
const localVisible = vue.ref(props.visible);
vue.watch(() => props.visible, (newVal) => {
localVisible.value = newVal;
});
const emit = __emit;
const handleClose = (done) => {
emit("handleClose");
done();
};
const handleCancel = () => {
handleClose(() => {
localVisible.value = false;
});
};
const handleSave = () => {
Answer.cacheAnswer(props.ques);
Cache.matchRemove(props.ques.key);
msg("题目修改成功", "success");
handleClose(() => {
localVisible.value = false;
});
};
const handleChoose = (value) => {
props.ques.answer = props.ques.answer.includes(value) ? props.ques.answer.filter((item) => item !== value) : [...props.ques.answer, value];
props.ques.answer.sort((a, b) => props.ques.options.indexOf(a) - props.ques.options.indexOf(b));
};
const handleDelete = (inx) => {
props.ques.options.splice(inx, 1);
if (props.ques.answer.includes(props.ques.options[inx])) {
props.ques.answer = props.ques.answer.filter((item) => item !== props.ques.options[inx]);
}
};
const handleAdd = () => {
props.ques.options.push("");
};
return (_ctx, _cache) => {
var _a;
const _component_el_option = vue.resolveComponent("el-option");
const _component_el_select = vue.resolveComponent("el-select");
const _component_el_form_item = vue.resolveComponent("el-form-item");
const _component_el_input = vue.resolveComponent("el-input");
const _component_el_button = vue.resolveComponent("el-button");
const _component_el_form = vue.resolveComponent("el-form");
const _component_el_dialog = vue.resolveComponent("el-dialog");
return vue.openBlock(), vue.createBlock(_component_el_dialog, {
modelValue: localVisible.value,
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => localVisible.value = $event),
title: `题目编辑:[${(_a = _ctx.ques) == null ? void 0 : _a.type}]`,
width: "500",
"before-close": handleClose
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_form, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_form_item, { label: "题型" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_select, {
modelValue: _ctx.ques.type,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.ques.type = $event),
placeholder: "请选择"
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(vue.unref(typeToNumber), (value, key2) => {
return vue.openBlock(), vue.createBlock(_component_el_option, {
key: value,
label: key2,
value
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(key2), 1)
]),
_: 2
}, 1032, ["label", "value"]);
}), 128))
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}),
vue.createVNode(_component_el_form_item, { label: "题干" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_input, {
modelValue: _ctx.ques.question,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.ques.question = $event),
type: "textarea",
autosize: { minRows: 3, maxRows: 8 }
}, null, 8, ["modelValue"])
]),
_: 1
}),
_ctx.ques.options && Array.isArray(_ctx.ques.options) && _ctx.ques.options.length > 0 ? (vue.openBlock(), vue.createBlock(_component_el_form_item, {
key: 0,
label: "选项"
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.ques.options, (value, inx) => {
return vue.openBlock(), vue.createElementBlock("div", {
key: inx,
class: "flex mb-4 w-[90%] items-center space-x-2"
}, [
vue.createVNode(_component_el_button, {
type: "primary",
circle: "",
style: { "flex-shrink": "0" },
plain: !_ctx.ques.answer.includes(value),
onClick: ($event) => handleChoose(value)
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(String.fromCharCode(65 + inx)), 1)
]),
_: 2
}, 1032, ["plain", "onClick"]),
vue.createVNode(_component_el_input, {
modelValue: _ctx.ques.options[inx],
"onUpdate:modelValue": ($event) => _ctx.ques.options[inx] = $event,
class: "option-input flex-grow"
}, null, 8, ["modelValue", "onUpdate:modelValue"]),
vue.createVNode(_component_el_button, {
size: "small",
type: inx == 0 ? "success" : "danger",
icon: inx != 0 ? vue.unref(minus_default) : vue.unref(plus_default),
circle: "",
plain: "",
onClick: ($event) => inx != 0 ? handleDelete(inx) : handleAdd()
}, null, 8, ["type", "icon", "onClick"])
]);
}), 128))
]),
_: 1
})) : Array.isArray(_ctx.ques.answer) && _ctx.ques.options.length == 0 ? (vue.openBlock(), vue.createBlock(_component_el_form_item, {
key: 1,
label: "答案"
}, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.ques.answer, (value, inx) => {
return vue.openBlock(), vue.createElementBlock("div", {
key: inx,
class: "flex mb-4 w-[90%] items-center space-x-2"
}, [
vue.createVNode(_component_el_input, {
modelValue: _ctx.ques.answer[inx],
"onUpdate:modelValue": ($event) => _ctx.ques.answer[inx] = $event,
class: "option-input flex-grow"
}, null, 8, ["modelValue", "onUpdate:modelValue"]),
vue.createVNode(_component_el_button, {
size: "small",
type: inx == 0 ? "success" : "danger",
icon: inx != 0 ? vue.unref(minus_default) : vue.unref(plus_default),
circle: "",
plain: "",
onClick: ($event) => inx != 0 ? handleDelete(inx) : handleAdd()
}, null, 8, ["type", "icon", "onClick"])
]);
}), 128))
]),
_: 1
})) : vue.createCommentVNode("", true),
vue.createElementVNode("div", _hoisted_1$3, [
vue.createVNode(_component_el_button, {
type: "danger",
onClick: handleCancel
}, {
default: vue.withCtx(() => [
vue.createTextVNode("取消")
]),
_: 1
}),
vue.createVNode(_component_el_button, {
type: "primary",
onClick: handleSave
}, {
default: vue.withCtx(() => [
vue.createTextVNode("保存")
]),
_: 1
})
])
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue", "title"]);
};
}
});
const _hoisted_1$2 = /* @__PURE__ */ vue.createElementVNode("br", null, null, -1);
const _hoisted_2$2 = /* @__PURE__ */ vue.createElementVNode("p", { style: { "color": "red" } }, "当缓存题目过多时可能会出现卡顿崩溃等情况", -1);
const _hoisted_3$2 = /* @__PURE__ */ vue.createElementVNode("br", null, null, -1);
const _hoisted_4$2 = /* @__PURE__ */ vue.createElementVNode("br", null, null, -1);
const _hoisted_5$2 = ["innerHTML"];
const _hoisted_6$2 = { key: 0 };
const _hoisted_7 = /* @__PURE__ */ vue.createElementVNode("p", null, "当前题型暂时无法显示", -1);
const _hoisted_8 = [
_hoisted_7
];
const _hoisted_9 = { key: 1 };
const _hoisted_10 = ["innerHTML"];
const _hoisted_11 = { key: 2 };
const _hoisted_12 = { key: 3 };
const _hoisted_13 = ["innerHTML"];
const _hoisted_14 = { key: 4 };
const _hoisted_15 = { style: { "text-align": "right" } };
const _hoisted_16 = { class: "el-dropdown-link" };
const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
__name: "Preview",
setup(__props) {
const questionList = vue.ref(Cache.matchGet("ques1_") || []);
const loading = vue.ref(false);
const input3 = vue.ref("");
const currentPage = vue.ref(1);
const pageSize = vue.ref(10);
const worker = createWorker(
() => {
self.importScripts("https://lf26-cdn-tos.bytecdntp.com/cdn/expire-1-M/fuse.js/6.5.3/fuse.min.js");
self.onmessage = function(event2) {
const { data, options } = event2.data;
const fuse = new Fuse(data, options);
const dataList = fuse.search(event2.data.keyword);
const quesList = dataList.map((item) => item.item);
quesList.forEach((item) => {
item.question1 = item.question;
event2.data.keyword.split("").forEach((word) => {
if (!/[\u4e00-\u9fa5a-zA-Z0-9]/.test(word)) {
return;
}
item.question1 = item.question1.replace(
new RegExp(word, "g"),
`<span style="color:red">${word}</span>`
);
});
});
self.postMessage(quesList);
};
}
);
const paginatedQuestions = vue.computed(() => {
const start = (currentPage.value - 1) * pageSize.value;
const end = start + pageSize.value;
return questionList.value.slice(start, end);
});
const cl_img_format = (html) => {
if (!html.trim()) {
return html;
}
const updatedHtml = html.replace(/<img\b(?!.*?\breferrerPolicy\b)[^>]*>/ig, (match) => {
return match.replace(/\/?>$/, ' referrerPolicy="no-referrer">');
});
return updatedHtml;
};
const totalQuestions = vue.computed(() => questionList.value.length);
const getOptionIndex = (inx) => {
return String.fromCharCode(65 + inx);
};
const handlePageChange = (page) => {
currentPage.value = page;
};
const search = () => {
const options = {
keys: ["question"],
threshold: 0.3
// 模糊搜索的阈值,值越低越严格
};
const keyword = input3.value.trim();
loading.value = true;
if (!keyword) {
questionList.value = Cache.matchGet("ques1_") || [];
loading.value = false;
currentPage.value = 1;
} else {
worker.onmessage = (event2) => {
const quesList = event2.data;
questionList.value = quesList;
loading.value = false;
currentPage.value = 1;
};
worker.postMessage({
data: Cache.matchGet("ques1_"),
options,
keyword
});
}
};
const handleEditQues = vue.ref(null);
const visible = vue.ref(false);
const handleEdit = (question) => {
handleEditQues.value = question;
visible.value = true;
};
const handleDelete = (question) => {
questionList.value = questionList.value.filter((item) => item.key !== question.key);
Cache.matchRemove(question.key);
};
const handleClose = () => {
visible.value = false;
};
return (_ctx, _cache) => {
const _component_el_alert = vue.resolveComponent("el-alert");
const _component_el_button = vue.resolveComponent("el-button");
const _component_el_input = vue.resolveComponent("el-input");
const _component_el_row = vue.resolveComponent("el-row");
const _component_el_tag = vue.resolveComponent("el-tag");
const _component_el_icon = vue.resolveComponent("el-icon");
const _component_el_dropdown_item = vue.resolveComponent("el-dropdown-item");
const _component_el_dropdown_menu = vue.resolveComponent("el-dropdown-menu");
const _component_el_dropdown = vue.resolveComponent("el-dropdown");
const _component_el_col = vue.resolveComponent("el-col");
const _component_el_card = vue.resolveComponent("el-card");
const _component_el_watermark = vue.resolveComponent("el-watermark");
const _component_el_pagination = vue.resolveComponent("el-pagination");
const _directive_loading = vue.resolveDirective("loading");
return vue.openBlock(), vue.createElementBlock(vue.Fragment, null, [
vue.createVNode(_sfc_main$3, {
visible: visible.value,
ques: handleEditQues.value,
onHandleClose: handleClose
}, null, 8, ["visible", "ques"]),
vue.createVNode(_component_el_alert, {
type: "info",
closable: false
}, {
default: vue.withCtx(() => [
vue.createTextVNode(" 本地题库支持预览、导出、搜索等功能。搜索仅支持题目关键词,后续会增加选项搜索等功能"),
_hoisted_1$2,
_hoisted_2$2
]),
_: 1
}),
_hoisted_3$2,
vue.createVNode(_component_el_row, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_input, {
modelValue: input3.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => input3.value = $event),
style: { "max-width": "600px" },
placeholder: "输入关键词匹配搜索",
class: "input-with-select",
onInput: search
}, {
append: vue.withCtx(() => [
vue.createVNode(_component_el_button, { icon: vue.unref(search_default) }, null, 8, ["icon"])
]),
_: 1
}, 8, ["modelValue"])
]),
_: 1
}),
_hoisted_4$2,
vue.withDirectives((vue.openBlock(), vue.createBlock(_component_el_watermark, { content: ["爱问答助手", "AiAskHelper"] }, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(paginatedQuestions.value, (question, inx) => {
return vue.openBlock(), vue.createBlock(_component_el_card, {
key: inx,
class: "question-card"
}, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_col, { span: 24 }, {
default: vue.withCtx(() => [
vue.createElementVNode("div", {
class: "aah_title",
innerHTML: "[" + vue.unref(typeChange2)(question.type ?? "") + "]" + cl_img_format(question.question1 || question.question)
}, null, 8, _hoisted_5$2),
question.options.length > 0 && typeof question.options[0] == "object" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$2, _hoisted_8)) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_9, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(question.options, (val, index) => {
return vue.openBlock(), vue.createElementBlock("p", {
key: index,
style: vue.normalizeStyle(question.answer.includes(val) ? "color:green;" : ""),
class: "aah_options",
innerHTML: getOptionIndex(index) + ". " + cl_img_format(val)
}, null, 12, _hoisted_10);
}), 128))
])),
Array.isArray(question.answer) && question.options.length == 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_11, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(question.answer, (ans, index) => {
return vue.openBlock(), vue.createElementBlock("p", {
key: index,
class: "m-2"
}, [
vue.createVNode(_component_el_tag, {
type: "info",
effect: "dark"
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(ans), 1)
]),
_: 2
}, 1024)
]);
}), 128))
])) : !question.options ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_12, [
vue.createElementVNode("div", {
innerHTML: question.answer ? cl_img_format(question.answer) : "暂无答案"
}, null, 8, _hoisted_13)
])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_14)),
vue.createElementVNode("div", _hoisted_15, [
vue.createVNode(_component_el_dropdown, null, {
dropdown: vue.withCtx(() => [
vue.createVNode(_component_el_dropdown_menu, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_dropdown_item, {
onClick: ($event) => handleEdit(question)
}, {
default: vue.withCtx(() => [
vue.createTextVNode("编辑")
]),
_: 2
}, 1032, ["onClick"]),
vue.createVNode(_component_el_dropdown_item, {
onClick: ($event) => handleDelete(question)
}, {
default: vue.withCtx(() => [
vue.createTextVNode("删除")
]),
_: 2
}, 1032, ["onClick"])
]),
_: 2
}, 1024)
]),
default: vue.withCtx(() => [
vue.createElementVNode("span", _hoisted_16, [
vue.createVNode(_component_el_icon, null, {
default: vue.withCtx(() => [
vue.createVNode(vue.unref(edit_default))
]),
_: 1
})
])
]),
_: 2
}, 1024)
])
]),
_: 2
}, 1024)
]),
_: 2
}, 1024);
}), 128))
]),
_: 1
})), [
[_directive_loading, loading.value]
]),
vue.createVNode(_component_el_pagination, {
small: "",
background: "",
layout: "prev, pager, next",
total: totalQuestions.value,
"page-size": pageSize.value,
"current-page": currentPage.value,
"onUpdate:currentPage": _cache[1] || (_cache[1] = ($event) => currentPage.value = $event),
onCurrentChange: handlePageChange,
class: "mt-4"
}, null, 8, ["total", "page-size", "current-page"])
], 64);
};
}
});
const mk_block = (t, e = "\n\n", line) => {
var s = new String(t);
s.trailing = e;
if (line !== void 0) {
s.lineNumber = line;
}
return (s = s.substr(0, 1).toUpperCase() + s.substr(1)).replace(/^([A-H]|\d+|\s+\d)[、|.|\s\.|\s.|:|:]/, "$1.");
};
const split_blocks = (input) => {
input = (input = input.replace(/(\r\n|\n|\r)/g, "\n").replace(/\*/g, "∗").replace(/<span style="letter-spacing: -0.35px;">/g, "").replace(/<\/span>/g, "").replace(/(\u0020)|(\u0009)|(\u200B)|(\u00A0)|(\u200E)|(\u200F)|(\u2029)/g, " ")).replace(/(\s)+([A-H])([、,,.]|\.)/gi, "\n$2$3");
var t, e = /([\s\S]+?)($|\n#|\n(?:\s*\n|$)*)/g, n = [];
for (null != (t = /^(\s*\n)/.exec(input)) && (e.lastIndex = t[0].length); null !== (t = e.exec(input)); )
"\n#" == t[2] && (t[2] = "\n", e.lastIndex--), n.push(mk_block(t[1], t[2], 1));
return n;
};
const transParentQuestion = (t) => {
var e = false, n = "", o = false, r = "", l = [], c = "", d = false;
return t.forEach(function(i) {
if (i.parent_question && (c = i.parent_question, d = true, i.is_first_child = "1"), d && (o = false, e = false, i.is_anli = "1", i.is_anli_child = "1", i.is_wanxing_child = "", i.is_b1_child = "", i.parent_question = c), i.parent_question_end && (d = false, c = ""), i.parent_question_wanxing && (n = i.parent_question_wanxing, e = true, i.is_first_child = "1"), e && (d = false, o = false, i.is_anli_child = "", i.is_b1_child = "", i.is_wanxing_child = "1", i.title += "填空(" + i.title.substr(0, i.title.length - 1) + ")", i.parent_question_wanxing = n), i.parent_question_wanxing_end && (e = false, n = ""), i.parent_question_b1) {
for (var t2 in l = [], i)
if (Object.hasOwnProperty.call(i, t2)) {
var element = i[t2];
if (t2.indexOf("options_") > -1) {
var h2 = {};
h2[t2] = element, l.push(h2);
}
}
o = true, e = false, d = false, i.is_first_child = "1";
}
o && (d = false, e = false, i.is_b1_child = "1", i.is_wanxing_child = "", i.is_anli_child = "", i.parent_question_b1 = r, l.forEach(function(t3) {
Object.assign(i, t3);
})), i.parent_question_b1_end && (o = false, r = "");
}), t;
};
const getlineDetail = (t) => {
for (var e = [], n = [{
key: "default",
reg: /\*/
}, {
key: "title",
reg: /^\s*(([0-9]+\.))\s*(.*?)\s*(?:\n|$)/
}, {
key: "answer",
reg: /^\s*((\[|【?)(正确|参考|标准|)答案(\]|】|\s+|)[::\s])\s*(.*?)\s*(?:\n|$)/
}, {
key: "analysis",
reg: /^\s*(((\[|【?)(试题|答案?|)解析(\]|】|\s+|))[::\s])\s*(.*?)\s*(?:\n|$)/
}, {
key: "options_A",
reg: /^\s*([A])(\.)\s*(.*?)\s*(?:\n|$)/
}, {
key: "options_B",
reg: /^\s*([B])(\.)\s*(.*?)\s*(?:\n|$)/
}, {
key: "options_C",
reg: /^\s*([C])(\.)\s*(.*?)\s*(?:\n|$)/
}, {
key: "options_D",
reg: /^\s*([D])(\.)\s*(.*?)\s*(?:\n|$)/
}, {
key: "options_E",
reg: /^\s*([E])(\.)\s*(.*?)\s*(?:\n|$)/
}, {
key: "options_F",
reg: /^\s*([F])(\.)\s*(.*?)\s*(?:\n|$)/
}, {
key: "options_G",
reg: /^\s*([G])(\.)\s*(.*?)\s*(?:\n|$)/
}, {
key: "options_H",
reg: /^\s*([H])(\.)\s*(.*?)\s*(?:\n|$)/
}, {
key: "parent_question",
reg: /\[案例分析\]/
}, {
key: "parent_question_wanxing",
reg: /\[完型填空\]/
}, {
key: "parent_question_wanxing_end",
reg: /\[完型填空结束\]/
}, {
key: "parent_question_end",
reg: /\[案例分析结束\]/
}, {
key: "parent_question_b1",
reg: /\[B1\]/
}, {
key: "parent_question_b1_end",
reg: /\[B1结束\]/
}, {
key: "child_answer",
reg: /\[答案\]/
}], o = {}, r = "default", i = 0; i < t.length; i++) {
var l = t[i], c = false;
(l.match(n[1].reg) || l.match(/\[案例分析\]/) || l.match(/\[完型填空\]/) || l.match(/\[B1\]/)) && o.title && (e.push(o), o = {});
for (var d = 0; d < n.length; d++) {
var h2 = n[d];
if (l.match(h2.reg)) {
o[r = h2.key] && (o.data_err = l), o[r] = l, c = true;
break;
}
c = false;
}
c || (o[r] = (o[r] || "") + "\n" + l);
}
return o.title && e.push(o), transParentQuestion(e);
};
const propsReg = {
title: /^\s*([0-9]+\.)/,
answer: /( )*\s*(\[|【?)(答案|正确答案|参考答案|标准答案)(\]|】|\s+|)[::\s]/,
analysis: /( )*\s*(\[|【?)(试题|答案?|)解析(\]|】|\s+|)[::\s]/,
options_A: /A./,
options_B: /B./,
options_C: /C./,
options_D: /D./,
options_E: /E./,
options_F: /F./,
options_G: /G./,
options_H: /H./
};
const panduanReg = /^\s*(正确|错误|对|错|√|×|✓|X|x|T|F|true|TRUE|FALSE|false|YES|yes|NO|no|N|Y|n|y)\s*(?:\n|$)/i;
const options_keys = ["A", "B", "C", "D", "E", "F", "G", "H"];
const calcStatus = (t) => {
if (t.title_value && (t.title_value = t.title_value.trim()), !t.title || t.title_value || t.parent_question)
if (t.data_err)
t.err_text = "请检查试题内容";
else {
var title = t.title_value, e = ["A", "B", "C", "D", "E", "F", "G", "H"];
if (title) {
if (t.qtype = "5", !t.answer_value && t.options_A) {
t.title;
t.title_value = t.title_value.replace(/[\((](\s*.*?)[)\)]/gm, function(a, b, e2, n2, o2, r2, g, l2) {
return (b = b.replace(/\s/g, "")) ? /[\u4e00-\u9fa5]|\d/.test(b.trim()) ? a : (t.answer = "答案:" + b.trim().replace(/(\s|、|,|,)/g, ""), t.answer_value = b.trim().replace(/(\s|、|,|,)/g, ""), "( )") : a;
});
}
if (!t.answer_value) {
t.title;
t.title_value = t.title_value.replace(t.options_A ? /^(\s*.*?)([A-Ha-h对错✓√×XxvVTFtrueTRUEFALSEfalseYESyesNOnoNYny正确错误,,、]{1,8})$/gm : /^(\s*.*?)(\s[A-Ha-h对错✓√×XxvVTFtrueTRUEFALSEfalseYESyesNOnoNYny正确错误,,、]{1,8})$/gm, function(a, b, e2, n2, o2, r2, g, l2) {
return t.answer = "答案:" + e2.trim().replace(/(、|,|,)/g, ""), t.answer_value = e2.trim().replace(/(、|,|,)/g, ""), b;
});
}
if (!t.answer_value) {
for (var n = [], i = 0; i < e.length; i++) {
var o = e[i];
t["options_" + o] && t["options_" + o].match(/[\((](\s*[\(对\)\(正确\)\(答案\)\(正确答案\)]+\s*)[)\)]/) && (n.push(o), t["options_" + o + "_value"] = t["options_" + o + "_value"].replace(/[\(\(](\s*[\(对\)\(正确\)\(答案\)\(正确答案\)]+\s*)[)\)]/, function(a, b, t2, e2, n2) {
return "";
}));
}
n.length > 0 && (t.answer_value = n.join(""));
}
if (!t.answer_value && !t.options_A && title.match(/[\((](.+?)[)\)]/gm)) {
var r = "", l = t.title_value.match(/[\((](.+?)[)\)]/gm);
l && l.forEach(function(i2, t2) {
var e2 = i2.match(/[\((](.+?)[)\)]/);
"" != e2[1].trim() && (e2[1] = e2[1].trim(), // @ts-ignore
r += e2[1] + (t2 == l.length - 1 ? "" : "|"));
}), t.answer_value = r, t.answer = "答案:" + r, t.qtype = "4", t.title_value = t.title_value.replace(/[\((](.+?)[)\)]/gm, function() {
return "( )";
});
}
t.answer_value && (t.answer_value = t.answer_value.trim()), t.title_no = t.title.match(propsReg.title)[1], title.match(/([\(|\(]\s*[\)|\)])/g) && (t.qtype = "4"), title.match(/(___)/g) && (t.qtype = "4");
for (var c = false, d = [], h2 = 0; h2 < e.length; h2++) {
var v = e[h2];
t["options_" + v] && (c = true, d.push(t["options_" + v]));
}
if (c && t.answer_value && (t.answer_value = t.answer_value.replace(/,|\.|,|。|;|\s+|、|\//g, "")), !c && panduanReg.test(t.answer_value) && (t.qtype = "3"), c || panduanReg.test(t.answer_value) || t.qtype || (t.qtype = "5"), c && t.answer_value && "1" == t.answer_value.length && (t.qtype = "1"), c && t.answer_value && t.answer_value.length > 1 && (t.qtype = "2"), c && !t.answer_value && (t.qtype = "1"), c && t.answer_value) {
if (t.answer_value = t.answer_value.replace(/,|\.|,|。|;|\s+|、|\//g, ""), !/^[A-Ha-h]{1,8}$/g.test(t.answer_value))
return void (t.err_text = "答案不正确");
if (new Set(t.answer_value).size != t.answer_value.length)
return void (t.err_text = "答案包含重复项");
var m = t.answer_value.split("").sort(), _ = options_keys.indexOf(m[m.length - 1].toUpperCase());
if (-1 == _)
return void (t.err_text = "答案不正确");
for (var f = 0; f < _ + 1; f++) {
if (!t["options_" + e[f]])
return void (t.err_text = "答案不在选项中");
}
}
if (t.title_value)
if (t.title_value.length < 2)
t.err_text = "题干至少两个字";
else if (t.answer_value) {
if (["1", "2", "14", "15"].indexOf(t.qtype) > -1) {
var y = [];
if (options_keys.forEach(function(i2) {
t["options_" + i2 + "_value"] && y.push(i2);
}), y.length < 2)
return void (t.err_text = "选项至少有两个");
y.sort();
var J = options_keys[y.length - 1], k = y.indexOf(J);
if (y.length != k + 1)
return void (t.err_text = "请检查选项内容");
}
if ("4" == t.qtype && t.answer_value) {
var C = t.title_value.match(/([\(|\(]\s*[\)|\)])/g), x = t.answer_value.replace(/\s/g, "").split("|").length;
if (C && C.length != x)
return void (t.err_text = "答案和空数量不匹配");
}
"3" == t.qtype && t.answer_value && /\n/.test(t.answer_value) ? t.err_text = "判断题答案不正确" : (t.title_value.indexOf("[计算题]") > -1 && (t.qtype = 12), t.title_value.indexOf("[论述题]") > -1 && (t.qtype = 11), t.title_value.indexOf("[不定项选择题]") > -1 && (t.qtype = 14), t.title_value.indexOf("[判断题]") > -1 && (t.qtype = 3), t.title_value.indexOf("[填空题]") > -1 && (t.qtype = 4));
} else
t.err_text = "试题没有答案";
else
t.err_text = "试题没有题干";
}
}
else
t.err_text = t.title + "题干不正确";
};
const transQuestion = (t) => {
t.length;
for (var e = 0, n = {}, i = 0; i < t.length; i++) {
var o = t[i];
for (var r in o)
if (Object.hasOwnProperty.call(o, r)) {
var element = o[r];
element = element.replace(propsReg[r], ""), o[r + "_value"] = element.replace("[案例分析]", "");
}
calcStatus(o), // @ts-ignore
n["".concat(o.qtype)] ? n["".concat(o.qtype)]++ : n["".concat(o.qtype)] = 1, o.err_text && e++;
}
return t;
};
const typeMap = {
1: "单选题",
2: "多选题",
3: "判断题",
4: "填空题",
5: "简答题",
9: "案例题",
11: "论述题",
12: "计算题",
14: "不定项选择题",
15: "排序题"
};
const questionParse = (source) => {
const e = split_blocks(source);
const n = getlineDetail(e);
const preview_list = transQuestion(n);
preview_list.forEach((item) => {
item.qtype = typeMap[item.qtype] || "其他";
});
return JSON.parse(JSON.stringify(preview_list));
};
const _hoisted_1$1 = { class: "mt-4" };
const _hoisted_2$1 = { class: "mb-4" };
const _hoisted_3$1 = { class: "import_question" };
const _hoisted_4$1 = { class: "m-3" };
const _hoisted_5$1 = { class: "mb-2" };
const _hoisted_6$1 = {
key: 0,
class: "mt-2 mb-2"
};
const tsMsg = `1. 先查看格式说明后,再行录入
2. 支持题型:单选、多选、判断、填空、简答
3. 由于本地题库检索为精准匹配所以,请务必确保格式
格式说明:
1. 试题需要有序号,支持:1. 或1、
2. 答案、解析后面要有冒号, 如:答案:
3. 选项后面需要点或顿号,如:A. 或A、
4. 答案另起一行,如:答案:A
5. 填空题有多个答案用 | 隔开,如:春 | 夏| 秋
6. 判断题支持:正确、错误、对、错
7. 简答题等,答案中如有(1)(2)等,编辑成一行导入,不要分段
案例:
1.驾驶人有下列哪种违法行为一次记6分
A、使用其他车辆行驶证
B、饮酒后驾驶机动车
C、车速超过规定时速50%以上
D、违法占用应急车道行驶
答案:D
1.驾驶人有下列哪种违法行为一次记6分?
A、使用其他车辆行驶证
B、饮酒后驾驶机动车
C、车速超过规定时速50%以上
D、违法占用应急车道行驶
答案:ABCD
1.国际象棋起源于英国吗?
答案:对
1.我国古典四大名著是()()()()
答案:红楼梦|水浒传|三国演义|西游记
1.如何保持身体健康?
答案:规律饮食、坚持锻炼,早睡早起,定期体检。`;
const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
__name: "QuestionTool",
setup(__props) {
vue.ref(Cache.matchGet("ques1_") || []);
const quesNow = vue.ref([]);
const text = vue.ref("");
const handleKeydown = () => {
quesNow.value = questionParse(text.value);
};
const extractOptions = (item) => {
const options = [];
for (let i = 0; i < 10; i++) {
const key2 = `options_${String.fromCharCode(65 + i)}_value`;
if (item[key2]) {
options.push({
label: item[key2],
value: String.fromCharCode(65 + i),
isTrue: item.answer_value && item.answer_value.includes(String.fromCharCode(65 + i))
});
}
}
return options;
};
const importQuestion = () => {
const questionList2 = quesNow.value.filter((item) => !item.err_text).map((item) => {
const type = typeChange(item.qtype);
const options = extractOptions(item);
const data = {
type,
question: titleClean(removeHtml1(item.title_value)),
options: options.map((option) => removeHtml1(option.label)),
answer: item.answer_value
};
switch (type) {
case "0":
case "1":
data.answer = options.filter((option) => option.isTrue).map((option) => removeHtml1(option.label));
break;
case "3":
data.answer = judgeAnswer(item.answer_value);
break;
case "2":
data.answer = item.answer_value.split("|").map((item2) => removeHtml1(item2));
break;
}
return data;
}).filter((item) => item.answer);
questionList2.forEach((item) => {
Answer.cacheAnswer(item);
});
msg(`导入有效题目数量:${questionList2.length}题`, "success");
};
return (_ctx, _cache) => {
const _component_el_alert = vue.resolveComponent("el-alert");
const _component_el_button = vue.resolveComponent("el-button");
const _component_el_input = vue.resolveComponent("el-input");
const _component_el_scrollbar = vue.resolveComponent("el-scrollbar");
const _component_el_col = vue.resolveComponent("el-col");
const _component_el_text = vue.resolveComponent("el-text");
const _component_el_tag = vue.resolveComponent("el-tag");
const _component_el_card = vue.resolveComponent("el-card");
const _component_el_row = vue.resolveComponent("el-row");
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
vue.createVNode(_component_el_alert, {
style: { "margin-bottom": "10px" },
title: "题库导入后将可以在本地缓存中匹配搜索,请确保导入的题库与答题一致,否则无法匹配",
type: "info",
closable: false
}),
vue.createElementVNode("div", _hoisted_2$1, [
vue.createVNode(_component_el_button, {
type: "primary",
onClick: importQuestion
}, {
default: vue.withCtx(() => [
vue.createTextVNode("导入缓存")
]),
_: 1
})
]),
vue.createVNode(_component_el_row, null, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_col, { span: 12 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_scrollbar, { "max-height": "55vh" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_input, {
modelValue: text.value,
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => text.value = $event),
autosize: { minRows: 40 },
type: "textarea",
placeholder: tsMsg,
onInput: handleKeydown,
class: "mt-2"
}, null, 8, ["modelValue"])
]),
_: 1
})
]),
_: 1
}),
vue.createVNode(_component_el_col, { span: 12 }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_scrollbar, { "max-height": "55vh" }, {
default: vue.withCtx(() => [
vue.createElementVNode("div", _hoisted_3$1, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(quesNow.value, (item) => {
return vue.openBlock(), vue.createElementBlock("div", null, [
vue.createVNode(_component_el_card, {
style: vue.normalizeStyle(item.err_text ? "border:1px solid #ff4848!important" : ""),
class: "m-2"
}, {
default: vue.withCtx(() => [
vue.createElementVNode("p", _hoisted_4$1, [
vue.createVNode(_component_el_text, {
class: "mx-1",
type: "primary"
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(item.title_no), 1)
]),
_: 2
}, 1024),
vue.createVNode(_component_el_tag, { type: "danger" }, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(item.qtype), 1)
]),
_: 2
}, 1024)
]),
vue.createElementVNode("p", _hoisted_5$1, [
vue.createVNode(_component_el_text, {
class: "mx-1",
type: "info"
}, {
default: vue.withCtx(() => [
vue.createTextVNode("题目:")
]),
_: 1
}),
vue.createTextVNode(vue.toDisplayString(item.title_value), 1)
]),
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(extractOptions(item), (option_item) => {
return vue.openBlock(), vue.createElementBlock("p", null, [
option_item.isTrue ? (vue.openBlock(), vue.createBlock(_component_el_tag, {
key: 0,
type: "success"
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(option_item.label), 1)
]),
_: 2
}, 1024)) : (vue.openBlock(), vue.createBlock(_component_el_tag, { key: 1 }, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(option_item.label), 1)
]),
_: 2
}, 1024))
]);
}), 256)),
item.answer_value ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_6$1, [
vue.createVNode(_component_el_text, {
class: "mx-1",
type: "info"
}, {
default: vue.withCtx(() => [
vue.createTextVNode("答案:")
]),
_: 1
}),
vue.createTextVNode(" " + vue.toDisplayString(item.answer_value), 1)
])) : vue.createCommentVNode("", true),
item.err_text ? (vue.openBlock(), vue.createBlock(_component_el_alert, {
key: 1,
type: "error",
effect: "dark",
closable: false
}, {
default: vue.withCtx(() => [
vue.createElementVNode("p", null, vue.toDisplayString(item.err_text), 1)
]),
_: 2
}, 1024)) : vue.createCommentVNode("", true)
]),
_: 2
}, 1032, ["style"])
]);
}), 256))
])
]),
_: 1
})
]),
_: 1
})
]),
_: 1
})
]);
};
}
});
const _hoisted_1 = { class: "aah_wrapper" };
const _hoisted_2 = ["src"];
const _hoisted_3 = ["id"];
const _hoisted_4 = {
key: 0,
class: "aah_breadcrumb"
};
const _hoisted_5 = /* @__PURE__ */ vue.createElementVNode("strong", null, "home", -1);
const _hoisted_6 = ["src"];
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
__name: "App",
setup(__props) {
const appStore = useAppStore();
const askStore = useAskStore();
appStore.app.showFloat = appStore.app.defaultShowFloat;
_unsafeWindow[key] = { "app": appStore, "ask": askStore };
const showOrHide = () => {
appStore.app.showFloat = !appStore.app.showFloat;
};
document.onkeydown = function(e) {
if (e.ctrlKey && e.shiftKey && (e.code == "ArrowUp" || e.code == "KeyP")) {
appStore.app.showFloat = !appStore.app.showFloat;
}
};
const logs = () => {
msg("日志组件开发中....");
};
const pageGetWidth = (page) => {
let width;
switch (page) {
case "ai":
case "questionTool":
width = "70vw";
break;
default:
width = "400px";
break;
}
return `width:${width}`;
};
updateCheck();
return (_ctx, _cache) => {
const _component_el_button = vue.resolveComponent("el-button");
const _component_el_breadcrumb_item = vue.resolveComponent("el-breadcrumb-item");
const _component_el_breadcrumb = vue.resolveComponent("el-breadcrumb");
const _component_el_scrollbar = vue.resolveComponent("el-scrollbar");
const _component_el_dialog = vue.resolveComponent("el-dialog");
const _component_el_tooltip = vue.resolveComponent("el-tooltip");
const _component_el_config_provider = vue.resolveComponent("el-config-provider");
return vue.openBlock(), vue.createBlock(_component_el_config_provider, { namespace: "aah" }, {
default: vue.withCtx(() => [
vue.createElementVNode("div", _hoisted_1, [
vue.createVNode(_component_el_dialog, {
modelValue: vue.unref(appStore).app.showFloat,
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.unref(appStore).app.showFloat = $event),
title: "爱问答助手",
draggable: "",
overflow: "",
"show-close": true,
modal: false,
"close-on-click-modal": false,
style: vue.normalizeStyle(pageGetWidth(vue.unref(appStore).page))
}, {
header: vue.withCtx(({ close, titleId, titleClass }) => [
vue.createElementVNode("img", {
src: vue.unref(scriptInfo$1).script.icon,
alt: "icon",
style: { "width": "20px", "height": "20px", "margin-right": "10px", "vertical-align": "middle" }
}, null, 8, _hoisted_2),
vue.createElementVNode("span", {
id: titleId,
class: vue.normalizeClass(titleClass)
}, vue.toDisplayString(`${vue.unref(scriptInfo$1).script.name} -
${vue.unref(scriptInfo$1).script.version}`), 11, _hoisted_3),
vue.createTextVNode(" "),
vue.createVNode(_component_el_button, {
onClick: logs,
link: ""
}, {
default: vue.withCtx(() => [
vue.createTextVNode("log")
]),
_: 1
})
]),
default: vue.withCtx(() => [
vue.createVNode(_component_el_scrollbar, { "max-height": "55vh" }, {
default: vue.withCtx(() => [
vue.unref(appStore).page != "home" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
vue.createVNode(_component_el_breadcrumb, { separator: "/" }, {
default: vue.withCtx(() => [
vue.createVNode(_component_el_breadcrumb_item, {
onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(appStore).setPage("home"))
}, {
default: vue.withCtx(() => [
_hoisted_5
]),
_: 1
}),
vue.createVNode(_component_el_breadcrumb_item, null, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(vue.unref(appStore).page), 1)
]),
_: 1
})
]),
_: 1
})
])) : vue.createCommentVNode("", true),
vue.unref(appStore).page == "home" ? (vue.openBlock(), vue.createBlock(Home, { key: 1 })) : vue.unref(appStore).page == "note" ? (vue.openBlock(), vue.createBlock(Note, { key: 2 })) : vue.unref(appStore).page == "Base" ? (vue.openBlock(), vue.createBlock(_sfc_main$8, { key: 3 })) : vue.unref(appStore).page == "ask" ? (vue.openBlock(), vue.createBlock(_sfc_main$7, { key: 4 })) : vue.unref(appStore).page == "api" ? (vue.openBlock(), vue.createBlock(_sfc_main$6, { key: 5 })) : vue.unref(appStore).page == "ai" ? (vue.openBlock(), vue.createBlock(Ai, { key: 6 })) : vue.unref(appStore).page == "question" ? (vue.openBlock(), vue.createBlock(_sfc_main$4, { key: 7 })) : vue.unref(appStore).page == "preview" ? (vue.openBlock(), vue.createBlock(_sfc_main$2, { key: 8 })) : vue.unref(appStore).page == "questionTool" ? (vue.openBlock(), vue.createBlock(_sfc_main$1, { key: 9 })) : vue.createCommentVNode("", true)
]),
_: 1
})
]),
_: 1
}, 8, ["modelValue", "style"]),
vue.withDirectives(vue.createElementVNode("div", {
class: "minimized-dialog",
onClick: showOrHide
}, [
vue.createElementVNode("div", { onClick: showOrHide }, [
vue.createVNode(_component_el_tooltip, {
content: vue.unref(appStore).app.alert,
placement: "top",
visible: !vue.unref(appStore).app.showFloat && vue.unref(appStore).app.alertBubble
}, {
default: vue.withCtx(() => [
vue.createElementVNode("img", {
width: "50px",
height: "50px",
src: vue.unref(mini),
onClick: showOrHide
}, null, 8, _hoisted_6)
]),
_: 1
}, 8, ["content", "visible"])
])
], 512), [
[vue.vShow, !vue.unref(appStore).app.showFloat]
])
])
]),
_: 1
});
};
}
});
const LoadVue = () => {
const pinia = createPinia();
const app = vue.createApp(_sfc_main);
app.use(ElementPlus, {
namespace: "aah"
});
app.use(pinia);
app.use(shadow);
app.mount(
(() => {
const app2 = document.createElement("div");
app2.id = "AiAskApp";
document.body.append(app2);
return app2;
})()
);
};
comHook();
parseRuleHook(rule);
const run = async () => {
allowCopy();
if (!console.log || console.log.toString().length < 13 || console.log.toString().indexOf("native code") === -1) {
recoverConsole();
console.log("console.log被篡改");
}
const not_match_url = [/\/work\/doHomeWorkNew/i, /selectWorkQuestionYiPiYue/i, /uooconline.com/i, /edu-edu.com/i];
log(location.href, not_match_url.some((item) => item.test(location.href)), parseRuleNoExec(rule));
if (_unsafeWindow !== _unsafeWindow.top && (!not_match_url.some((item) => item.test(location.href)) && !parseRuleNoExec(rule))) {
return;
}
update_cache();
LoadVue();
parseRule(rule);
};
let loop = setInterval(() => {
if (document.readyState === "complete") {
run();
clearInterval(loop);
}
}, 100);
})(Vue, ElementPlus, DOMPurify, $, markdownit, hljs);